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.
Secrets
und ConfigMaps
sind unterschiedliche Objekte. Secrets
werden mit einer Base64-Kodierung verschleiert und sollten für vertrauliche Daten verwendet werden, während ConfigMaps
sie 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 Deployment
sowohl Secrets
als 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
. ConfigMaps
Weitere Einzelheiten finden Sie in den folgenden Quellen: