У меня есть карта конфигурации, которая создает файл конфигурации для моего приложения.
Структура выглядит следующим образом.
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, и когда будут созданы модули развертывания, эти секреты и 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
. Более подробную информацию см. в источниках ниже: