密鑰創建后,可在工作負載環境變量和數據卷兩個場景使用。
須知:如下密鑰為CCE系統使用的,請勿對其做任何操作。
- 不要操作kube-system下的secrets。
- 不要操作任何命名空間下的default-secret、paas.elb。其中,default-secret用于SWR的私有鏡像拉取,paas.elb用于該命名空間下的服務對接ELB。
- 使用密鑰配置Pod的數據卷
- 使用密鑰設置Pod的環境變量
本節以下面這個所Secret為例,具體介紹Secret的用法。
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
username: my-username #用戶名
password: ****** #需要用Base64編碼
說明:在Pod里使用密鑰時,需要Pod和密鑰處于同一集群和命名空間中。
密鑰可以在Pod中作為文件使用。如下面的Pod示例所示,mysecret密鑰的username和password以文件方式保存在/etc/foo目錄下。
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: mypod
image: redis
volumeMounts:
- name: foo
mountPath: "/etc/foo"
readOnly: true
volumes:
- name: foo
secret:
secretName: mysecret
另外,還可以指定密鑰的目錄路徑和權限,username存放在容器中的/etc/foo/my-group/my-username目錄下。
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: mypod
image: redis
volumeMounts:
- name: foo
mountPath: "/etc/foo"
volumes:
- name: foo
secret:
secretName: mysecret
items:
- key: username
path: my-group/my-username
mode: 511
掛載Secret到數據卷還可以在界面上進行操作,在創建工作負載時,設置容器的高級設置,選擇數據存儲,添加本地磁盤,選擇Secret即可配置。具體請參見密鑰(Secret)掛載。
密鑰可以在Pod中設置為環境變量。如下面的Pod示例所示,mysecret密鑰的username和password配置為Pod的環境變量。
apiVersion: v1
kind: Pod
metadata:
name: secret-env-pod
spec:
containers:
- name: mycontainer
image: redis
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: mysecret
key: username
- name: SECRET_PASSWORD
valueFrom:
secretKeyRef:
name: mysecret
key: password
restartPolicy: Never