pass infra roles to auth file via pooler entrypoint

This commit is contained in:
Felix Kunde 2026-04-21 16:50:26 +02:00
parent 4fa363750e
commit 8c8ebd2304
3 changed files with 17 additions and 4 deletions

View File

@ -320,15 +320,16 @@ func (c *Cluster) generateConnectionPoolerPodTemplate(role PostgresRole) (
}
envVars = append(envVars, c.getConnectionPoolerEnvVars()...)
// allow infrastructure roles to be added to pgBouncer auth_file
infraRolesList := make([]string, 0)
for infraRoleName := range c.InfrastructureRoles {
infraRolesList = append(infraRolesList, infraRoleName)
for infraRoleName, infraRole := range c.InfrastructureRoles {
infraRolesList = append(infraRolesList, fmt.Sprintf("%s %s", infraRoleName, infraRole.Password))
}
if len(infraRolesList) > 0 {
envVars = append(envVars, v1.EnvVar{
Name: "INFRASTRUCTURE_ROLES",
Value: strings.Join(infraRolesList, ","),
Value: strings.Join(infraRolesList, "\n"),
})
}

View File

@ -17,4 +17,17 @@ fi
envsubst < /etc/pgbouncer/pgbouncer.ini.tmpl > /etc/pgbouncer/pgbouncer.ini
envsubst < /etc/pgbouncer/auth_file.txt.tmpl > /etc/pgbouncer/auth_file.txt
# --- Append Infrastructure Roles ---
if [ -n "${INFRASTRUCTURE_ROLES}" ]; then
# Use a loop to read each line from the multi-line variable
echo "${INFRASTRUCTURE_ROLES}" | while IFS= read -r line; do
# Skip empty lines
[ -z "${line}" ] && continue
# Append formatted "user" "password" pair to the auth file
# This assumes each line of $INFRASTRUCTURE_ROLES is "user password"
echo "${line}" | awk '{printf "\"%s\" \"%s\"\n", $1, $2}' >> /etc/pgbouncer/auth_file.txt
done
fi
exec /bin/pgbouncer /etc/pgbouncer/pgbouncer.ini

View File

@ -9,7 +9,6 @@ pool_mode = $CONNECTION_POOLER_MODE
listen_port = $CONNECTION_POOLER_PORT
listen_addr = *
admin_users = $PGUSER
stats_users = $INFRASTRUCTURE_ROLES
auth_dbname = postgres
auth_file = /etc/pgbouncer/auth_file.txt
auth_query = SELECT * FROM $PGSCHEMA.user_lookup($1)