我有一個配置映射,它為我的應用程式建立一個設定檔。
結構如下。
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=
完整的檔案將轉儲到屬性檔案中,以便應用程式可以使用它。
無論如何,是否可以將一些屬性(例如 dbusername、dbpassword)儲存為 kubernetes 機密,並且在建立部署 Pod 時,這些機密和 configmap 將合併到屬性檔案中?
請建議。
答案1
簡短的回答:不。
Secrets
和ConfigMaps
是不同的對象。Secrets
使用 Base64 編碼進行混淆,應用於機密數據,而ConfigMaps
用於非機密數據。
您應該為機密資料和非機密資料建立單獨的對象,然後在您的Deployment
.您可以修改您Deployment
以同時使用Secrets
和ConfigMaps
,例如:
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
Secrets
和也有不同的使用方式ConfigMaps
。有關更多詳細信息,請參閱以下來源: