Como manter segredos como parte do configmap no Kubernetes?

Como manter segredos como parte do configmap no Kubernetes?

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.

Secretse ConfigMapssão objetos diferentes. Secretssão ofuscados com uma codificação Base64 e devem ser usados ​​para dados confidenciais, enquanto ConfigMapssã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 Deploymentpara usar ambos Secretse 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 Secretse ConfigMaps. Para mais detalhes, consulte as fontes abaixo:

informação relacionada