Qu'est-ce qu'un Secret ?
Les Secrets stockent des donnees sensibles (mots de passe, tokens, cles SSH) encodees en base64.
Creer un Secret
kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=secret123
Secret YAML
apiVersion: v1
kind: Secret
metadata:
name: db-secret
type: Opaque
data:
username: YWRtaW4= # base64 de "admin"
password: c2VjcmV0MTIz # base64 de "secret123"
Encoder en base64
echo -n "admin" | base64
echo -n "secret123" | base64
Utiliser un Secret
spec:
containers:
- name: app
image: myapp
env:
- name: DB_USER
valueFrom:
secretKeyRef:
name: db-secret
key: username
- name: DB_PASS
valueFrom:
secretKeyRef:
name: db-secret
key: password
Secret TLS
kubectl create secret tls tls-secret --cert=cert.pem --key=key.pem
Bonnes pratiques de securite
- Activez le chiffrement at-rest pour etcd
- Utilisez RBAC pour limiter l'acces aux Secrets
- Envisagez des solutions externes (Vault, AWS Secrets Manager)
- Ne committez jamais de Secrets dans Git
Important : Les Secrets ne sont que encodes en base64, pas chiffres par defaut. Activez le chiffrement etcd en production.