ConfigMaps

O que são ConfigMaps?

ConfigMaps são objetos do Kubernetes que armazenam dados não sensíveis, como variáveis de ambiente, arquivos de configuração, etc.

Tipos de ConfigMaps

  • Opaque: armazena dados codificados em base64. É o tipo padrão de ConfigMap.
  • ConfigMap: armazena dados não sensíveis.

Criando um ConfigMap para utilizar com o Nginx

apiVersion: v1
data:
  nginx.conf: |
    events { }
    http {
      server {
        listen 80;
        listen 443 ssl;
        
        ssl_certificate /etc/nginx/tls/certificado.crt;
        ssl_certificate_key /etc/nginx/tls/chave-privada.key;

        location / {
        return 200 'Hello, World!';
        add_header Content-Type text/plain;
        }
      }
    }    
kind: ConfigMap
metadata:
  name: nginx-config
  namespace: default
kubectl apply -f configmap.yaml

O ConfigMap também pode ser criado com o comando kubectl, desde que exista o arquivo nginx.conf:

kubectl create configmap nginx-config --from-file=nginx.conf

Utilizando um ConfigMap como volume

apiVersion: v1
kind: Pod
metadata:
  name: giropops-pod
  labels:  
    app: nginx
spec:
  containers:
    - name: giropops-container
      image: nginx
      ports:
        - containerPort: 80
        - containerPort: 443
      volumeMounts:
        - name: nginx-config-volume
          mountPath: /etc/nginx/nginx.conf
          subPath: nginx.conf
        - name: nginx-tls
          mountPath: /etc/nginx/tls
  volumes:
  - name: nginx-confip-volume
    configMap:
      name: nginx-config
  - name: nginx-tls
    secret:
      secretName: meu-servico-web-tls-secret
      items:
        - key: tls.crt
          path: certificado.crt
        - key: tls.key
          path: chave-privada.key
kubectl apply -f pod.yaml