apiVersion: v1
kind: Secret
metadata:
name: demo-secret
type: Opaque
data:
username: YWRtaW4= # base64 für "admin"
password: c2VjcmV0MTIz # base64 für "secret123"
kubectl apply -f demo-secret.yaml
kubectl create secret generic demo-secret \
--from-literal=username=admin \
--from-literal=password=secret123
secret-env-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: secret-env-demo
spec:
containers:
- name: demo
image: busybox
command: [ "sh", "-c", "echo USER=$USERNAME && echo PASS=$PASSWORD && sleep 3600" ]
env:
- name: USERNAME
valueFrom:
secretKeyRef:
name: demo-secret
key: username
- name: PASSWORD
valueFrom:
secretKeyRef:
name: demo-secret
key: password
kubectl apply -f secret-env-pod.yaml
kubectl logs secret-env-demo
→ Ausgabe:
USER=admin
PASS=secret123
secret-volume-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: secret-vol-demo
spec:
containers:
- name: demo
image: busybox
command: [ "sh", "-c", "echo Datei-Inhalte:; cat /etc/secret-volume/username; echo; cat /etc/secret-volume/password; echo; sleep 3600" ]
volumeMounts:
- name: secret-vol
mountPath: "/etc/secret-volume"
readOnly: true
volumes:
- name: secret-vol
secret:
secretName: demo-secret
kubectl apply -f secret-volume-pod.yaml
kubectl logs secret-vol-demo
→ Ausgabe:
Datei-Inhalte:
admin
secret123
kubectl get secret demo-secret -o yaml
→ Daten sind base64-codiert, nicht verschlüsselt.
Optional zum Entschlüsseln:
echo YWRtaW4= | base64 -d # ergibt: admin
kubectl delete pod secret-env-demo secret-vol-demo
kubectl delete secret demo-secret
Thema | Erklärung |
---|---|
type: Opaque |
Beliebige Schlüssel-Werte als Secret speichern |
Base64-Codierung | Secrets sind nicht verschlüsselt, nur codiert! |
Zugriff über env |
Ideal für Umgebungsvariablen wie Passwörter |
Zugriff über Volume | Gut für Files wie .dockerconfig , TLS-Certs, etc. |