¿Cómo guardar secretos como parte del mapa de configuración en Kubernetes?

¿Cómo guardar secretos como parte del mapa de configuración en Kubernetes?

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.

Secretsy ConfigMapsson objetos diferentes. Secretsestán ofuscados con una codificación Base64 y deben usarse para datos confidenciales, mientras que ConfigMapsse 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 Deploymentpara usar ambos Secretsy 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 Secretsy ConfigMaps. Para obtener más detalles, consulte las fuentes a continuación:

información relacionada