-
Notifications
You must be signed in to change notification settings - Fork 68
Description
Is your feature request related to a problem? Please describe.
Software like matrix-synapse expects a yaml file for the postgres configuration.
The generated secret should be both consumable by postgres (reading from an environment variable) as well as from matrix-synapse.
Describe the solution you'd like
One of the easiest versions to support this would be by something on the lines of templating, aka sed aka helm alike:
apiVersion: v1
kind: Secret
metadata:
name: string-secret
annotations:
secret-generator.v1.mittwald.de/replace: PASSWORD
stringData:
dbconfig: |
database:
name: psycopg2
args:
user: synapse_user
password: PASSWORD
POSTGRES_PW: PASSWORD
Describe alternatives you've considered
Not sure which other ways are there to support one value that needs to be formatted differently.
Additional context
The main problem is that different software is bound, but uses different formatting. Matrix Synapse and postgresql is a good example, but the new libpq feature for managing passwords, which is now used in Django 4.0 is another one:
The secret should contain:
hostname:port:database:username:password
as a value.
The username and password might be generated by the generator, whereas hostname/port/database is likely coming from something like helm/argocd/etc.
However, that file needs to be generated and above solution could solve this, too:
apiVersion: v1
kind: Secret
metadata:
name: string-secret
annotations:
secret-generator.v1.mittwald.de/replace: PASSWORD, USERNAME
stringData:
pgpass: |
hostname:port:database:USERNAME:PASSWORD
POSTGRES_PW: PASSWORD
POSTGRES_USER: USERNAME
The lower two can be injected into the postgres container, pgpass can be injected into the client (f.i. django) container.
See also: