如何在 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。有关更多详细信息,请参阅以下来源:

相关内容