pass infra roles to auth file via pooler entrypoint
This commit is contained in:
parent
4fa363750e
commit
8c8ebd2304
|
|
@ -320,15 +320,16 @@ func (c *Cluster) generateConnectionPoolerPodTemplate(role PostgresRole) (
|
||||||
}
|
}
|
||||||
envVars = append(envVars, c.getConnectionPoolerEnvVars()...)
|
envVars = append(envVars, c.getConnectionPoolerEnvVars()...)
|
||||||
|
|
||||||
|
// allow infrastructure roles to be added to pgBouncer auth_file
|
||||||
infraRolesList := make([]string, 0)
|
infraRolesList := make([]string, 0)
|
||||||
for infraRoleName := range c.InfrastructureRoles {
|
for infraRoleName, infraRole := range c.InfrastructureRoles {
|
||||||
infraRolesList = append(infraRolesList, infraRoleName)
|
infraRolesList = append(infraRolesList, fmt.Sprintf("%s %s", infraRoleName, infraRole.Password))
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(infraRolesList) > 0 {
|
if len(infraRolesList) > 0 {
|
||||||
envVars = append(envVars, v1.EnvVar{
|
envVars = append(envVars, v1.EnvVar{
|
||||||
Name: "INFRASTRUCTURE_ROLES",
|
Name: "INFRASTRUCTURE_ROLES",
|
||||||
Value: strings.Join(infraRolesList, ","),
|
Value: strings.Join(infraRolesList, "\n"),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,4 +17,17 @@ fi
|
||||||
envsubst < /etc/pgbouncer/pgbouncer.ini.tmpl > /etc/pgbouncer/pgbouncer.ini
|
envsubst < /etc/pgbouncer/pgbouncer.ini.tmpl > /etc/pgbouncer/pgbouncer.ini
|
||||||
envsubst < /etc/pgbouncer/auth_file.txt.tmpl > /etc/pgbouncer/auth_file.txt
|
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
|
exec /bin/pgbouncer /etc/pgbouncer/pgbouncer.ini
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@ pool_mode = $CONNECTION_POOLER_MODE
|
||||||
listen_port = $CONNECTION_POOLER_PORT
|
listen_port = $CONNECTION_POOLER_PORT
|
||||||
listen_addr = *
|
listen_addr = *
|
||||||
admin_users = $PGUSER
|
admin_users = $PGUSER
|
||||||
stats_users = $INFRASTRUCTURE_ROLES
|
|
||||||
auth_dbname = postgres
|
auth_dbname = postgres
|
||||||
auth_file = /etc/pgbouncer/auth_file.txt
|
auth_file = /etc/pgbouncer/auth_file.txt
|
||||||
auth_query = SELECT * FROM $PGSCHEMA.user_lookup($1)
|
auth_query = SELECT * FROM $PGSCHEMA.user_lookup($1)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue