Tengo un mapa de configuración que crea un archivo de configuración para mi aplicación.
La estructura es la siguiente.
apiVersion: v1
kind: ConfigMap
metadata:
name: database-configmap
data:
config: |
dbport=5432
dcname=
dbssl=false
locktime=300
domainuser=
dattserverhost=localhost
conntype=ON-PREM
dbinstance=
dattusessl=false
dbpwd=VrjvBguQ
iisport=80
docountupgrade=false
doreportupgrade=false
dbname=dattdatabase
dattuseiis=false
dbtype=POSTGRESQL
dbusername=postg
dbserver=tgres.database.azure.com
domainpwd=
El archivo completo se volcará a un archivo de propiedades para que la aplicación lo use.
¿Hay alguna forma de guardar algunas propiedades (como dbusername,dbpassword) como un secreto de Kubernetes y cuando se crean los pods de implementación, estos secretos y el mapa de configuración se fusionarán en el archivo de propiedades?
Por favor recomiende.
Respuesta1
Respuesta corta: no lo hagas.
Secrets
y ConfigMaps
son objetos diferentes. Secrets
están ofuscados con una codificación Base64 y deben usarse para datos confidenciales, mientras que ConfigMaps
se usan para datos no confidenciales.
Debe crear objetos separados para datos confidenciales y no confidenciales y luego usarlos en su archivo Deployment
. Puedes modificar tu Deployment
para usar ambos Secrets
y ConfigMaps
, por ejemplo:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: envtest
spec:
replicas: 1
template:
metadata:
labels:
name: envtest
spec:
containers:
- name: envtest
image: gcr.io/<PROJECT_ID>/envtest
ports:
- containerPort: 3000
env:
- name: LANGUAGE
valueFrom:
configMapKeyRef:
name: language
key: LANGUAGE
- name: API_KEY
valueFrom:
secretKeyRef:
name: apikey
key: API_KEY
También hay diferentes formas de utilizar ambos Secrets
y ConfigMaps
. Para obtener más detalles, consulte las fuentes a continuación: