Eu tenho um mapa de configuração que cria um arquivo de configuração para meu aplicativo.
A estrutura é a seguinte.
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=
O arquivo completo será despejado em um arquivo de propriedades para que o aplicativo o utilize.
Existe alguma maneira de salvar algumas propriedades (como dbusername, dbpassword) nele como um segredo do Kubernetes e quando os pods de implantação forem criados, esses segredos e o mapa de configuração serão mesclados no arquivo de propriedades?
Por favor sugira.
Responder1
Resposta curta: não.
Secrets
e ConfigMaps
são objetos diferentes. Secrets
são ofuscados com uma codificação Base64 e devem ser usados para dados confidenciais, enquanto ConfigMaps
são usados para dados não confidenciais.
Você deve criar objetos separados para dados confidenciais e não confidenciais e depois usá-los em seu arquivo Deployment
. Você pode modificar o seu Deployment
para usar ambos Secrets
e ConfigMaps
, por exemplo:
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
Existem também diferentes maneiras de usar Secrets
e ConfigMaps
. Para mais detalhes, consulte as fontes abaixo: