secret
secret用于存储一些安全相关的信息。
Opaque:使用base64编码存储信息,可以通过base64 –decode解码获得原始数据。
从文件中创建Secret
分别创建两个名为username.txt和password.txt的文件
$ echo -n "admin" > ./username.txt
$ echo -n "1f2d1e2e67df" > ./password.txt
使用kubectl create secret命令创建secret:
$ kubectl create secret generic db-user-pass –from-file=./username.txt –from-file=./password.txt
使用描述文件创建Secret
首先使用base64对数据进行编码
$ echo -n 'admin' | base64
YWRtaW4=
$ echo -n '123456' | base64
MTIzNDU2
创建一个类型为Secret的描述文件
apiVersion: v1
kind: Secret
metadata:
name: secret1
type: Opaque
data:
username: YWRtaW4=
password: MTIzNDU2
$ kubectl create -f ./secret.yaml
secret "secret1" created
- 查看此Secret ::
$ kubectl get secret secret1 -o yaml
Secret的使用
创建好Secret之后,可以通过两种方式使用:
Volume方式
环境变量方式
将Secret挂载到Volume中
挂载:
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: mypod
image: nginx
volumeMounts:
- name: foo
mountPath: "/data/"
readOnly: true
volumes:
- name: foo
secret:
secretName: secret1
进入Pod查看挂载的Secret
将Secret设置为环境变量
作为环境变量使用
apiVersion: v1
kind: Pod
metadata:
name: secret-env-pod
spec:
containers:
- name: mycontainer
image: nginx
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: mysecret
key: username
- name: SECRET_PASSWORD
valueFrom:
secretKeyRef:
name: mysecret
key: password
restartPolicy: Never
需要注意的是,环境变量读取Secret很方便,但无法支持Secret动态更新。