密钥创建后,可在工作负载环境变量和数据卷两个场景使用。
须知:如下密钥为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