Wie behält man Geheimnisse als Teil der ConfigMap in Kubernetes?

Wie behält man Geheimnisse als Teil der ConfigMap in Kubernetes?

Ich habe eine Konfigurationszuordnung, die eine Konfigurationsdatei für meine Anwendung erstellt.

Die Struktur ist wie folgt.

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=

Die vollständige Datei wird in eine Eigenschaftendatei geschrieben, sodass die Anwendung diese verwenden kann.

Gibt es eine Möglichkeit, einige Eigenschaften (wie dbusername, dbpassword) darin als Kubernetes-Geheimnis zu speichern, und wenn die Bereitstellungs-Pods erstellt werden, werden diese Geheimnisse und die Konfigurationszuordnung mit der Eigenschaftendatei zusammengeführt?

Bitte vorschlagen.

Antwort1

Kurze Antwort: nicht.

Secretsund ConfigMapssind unterschiedliche Objekte. Secretswerden mit einer Base64-Kodierung verschleiert und sollten für vertrauliche Daten verwendet werden, während ConfigMapssie für nicht vertrauliche Daten verwendet werden.

Sie sollten separate Objekte für vertrauliche und nicht vertrauliche Daten erstellen und diese dann in Ihrem verwenden Deployment. Sie können Ihr so ​​ändern, dass Deploymentsowohl Secretsals auch verwendet werden ConfigMaps, zum Beispiel:

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

Es gibt auch verschiedene Möglichkeiten, sowohl als auch zu verwenden Secrets. ConfigMapsWeitere Einzelheiten finden Sie in den folgenden Quellen:

verwandte Informationen