如何在 Kubernetes 中的 configmap 中保守秘密?

如何在 Kubernetes 中的 configmap 中保守秘密?

我有一個配置映射,它為我的應用程式建立一個設定檔。

結構如下。

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

簡短的回答:不。

SecretsConfigMaps是不同的對象。Secrets使用 Base64 編碼進行混淆,應用於機密數據,而ConfigMaps用於非機密數據。

您應該為機密資料和非機密資料建立單獨的對象,然後在您的Deployment.您可以修改您Deployment以同時使用SecretsConfigMaps,例如:

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。有關更多詳細信息,請參閱以下來源:

相關內容