我有一个配置图,它可以为我的应用程序创建一个配置文件。
结构如下。
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
。有关更多详细信息,请参阅以下来源: