apiVersion: v1
kind: Secret
metadata:
name: my-secret
data:
username: YWRtaW4= # Base64 編碼的 "admin"
password: c2VjcmV0cGFzc3dvcmQ= # Base64 編碼的 "secretpassword"
2. 宣告式
kubectl create secret generic my-secret --from-literal=username=admin --from-literal=password=secretpassword
kubectl create secret generic my-secret --from-file=path/to/username.txt --from-file=path/to/password.txt
我們可以用剛剛創建的 my-secret
來做以下的範例
apiVersion: v1
kind: Pod
metadata:
name: secret-env-demo-pod
spec:
containers:
- name: demo-container
image: busybox
command: ["/bin/sh", "-c", "echo Username: $USERNAME && echo Password: $PASSWORD"]
env:
- name: USERNAME
valueFrom:
secretKeyRef:
name: my-secret
key: username
- name: PASSWORD
valueFrom:
secretKeyRef:
name: my-secret
key: password
restartPolicy: Never
透過kubectl logs secret-env-demo-pod
查看log
Username: admin
Password: secretpassword
2. 將secret掛載到一個或多個容器
apiVersion: v1
kind: Pod
metadata:
name: secret-volume-demo-pod
spec:
containers:
- name: first-container
image: busybox
command: ["/bin/sh", "-c", "cat /etc/secret/username"]
volumeMounts:
- name: secret-volume
mountPath: /etc/secret
- name: second-container
image: busybox
command: ["/bin/sh", "-c", "cat /etc/secret/password"]
volumeMounts:
- name: secret-volume
mountPath: /etc/secret
volumes:
- name: secret-volume
secret:
secretName: my-secret
使用以下命令檢查輸出
kubectl logs secret-volume-demo-pod -c first-container
kubectl logs secret-volume-demo-pod -c second-container
output
## first-container
admin
## second-container
secretpassword
3. secret作為拉取private registry image時使用
apiVersion: v1
kind: Pod
metadata:
name: secret-imagepull-demo-pod
spec:
containers:
- name: demo-container
image: <private_registry_image>
imagePullSecrets:
- name: my-secret