Sobes.tech
Junior

Qual é a diferença entre secrets e configmaps no Kubernetes?

sobes.tech IA

Resposta da IA

Secrets são utilizados para armazenar informações sensíveis, como passwords, chaves API, certificados. Estão codificados em base64 por padrão (embora isto não seja encriptação em repouso, mas apenas codificação) e são geridos pelo Kubernetes com um nível de segurança mais elevado (por exemplo, não são exibidos diretamente nos logs ao visualizá-los).

ConfigMaps são utilizados para armazenar informações de configuração não sensíveis, como URLs de serviços, configurações de logging, ficheiros de configuração. São armazenados como pares chave-valor ou como ficheiros completos. Os ConfigMaps não implicam qualquer proteção adicional dos dados.

Parâmetro Secrets ConfigMaps
Propósito Armazenamento de informações sensíveis Armazenamento de configuração não sensível
Codificação base64 (por padrão) Nenhum
Segurança Elevada (não exibidos nos logs, etc.) Não há medidas de segurança específicas
Exemplos de dados Passwords, tokens, chaves, certificados Variáveis de ambiente, ficheiros de configuração

Ambos os objetos podem ser montados nos pods como ficheiros ou variáveis de ambiente.

# Exemplo de montagem de segredo como variável de ambiente
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
    env:
    - name: DB_PASSWORD
      valueFrom:
        secretKeyRef:
          name: my-db-secret
          key: password
# Exemplo de montagem de ConfigMap como ficheiro
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
    volumeMounts:
    - name: config-volume
      mountPath: /etc/config
  volumes:
  - name: config-volume
    configMap:
      name: my-app-config