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