【kubernetes】Kubernetes-Secret使用
Kubernetes-Secret使用
使用
kubectl
命令来创建Secret
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23# 默认密钥名称是文件名。
# db-user-pass
echo -n 'admin' > ./username.txt
echo -n '1f2d1e2e67df' > ./password.txt
kubectl create secret generic db-user-pass \
--from-file=username=./username.txt \
--from-file=password=./password.txt
# db-user-pass2
kubectl create secret generic db-user-pass2 \
--from-literal=username=devuser \
--from-literal=password='S!B\*d$zDsb='
# 验证
kubectl get secrets
kubectl describe secrets/db-user-pass
kubectl get secret db-user-pass -o jsonpath='{.data}'
# 解码
kubectl get secret db-user-pass -o jsonpath='{.data.password}' | base64 --decode
# 清除
kubectl delete secret db-user-pass基于配置文件来创建
Secret
1 | # echo -n 'admin' | base64 YWRtaW4= |
POD中引用Secret
直接引用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: testredis
image: redis
volumeMounts: #挂载一个卷
- name: foo #这个名字需要与定义的卷的名字一致
mountPath: "/etc/foo" #挂载到容器里哪个目录下,随便写
readOnly: true
volumes: #数据卷的定义
- name: foo #卷的名字这个名字自定义
secret: #卷是直接使用的secret。
secretName: mysecret #调用刚才定义的secret映射secret key到指定的路径
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: testredis
image: redis
volumeMounts: #挂载一个卷
- name: foo #这个名字需要与定义的卷的名字一致
mountPath: "/etc/foo" #挂载到容器里哪个目录下,随便写
readOnly: true
volumes: #数据卷的定义
- name: foo #卷的名字这个名字自定义
secret: #卷是直接使用的secret。
secretName: mysecret #调用刚才定义的secret
items: #定义一个items
- key: username #将那个key重新定义到那个目录下
path: my-group/my-username #路径为/etc/foo/my-group/my-username以环境变量的形式使用Secret
挂载启动后,进入容器通过echo $SECRET_USERNAME
查看值
1 | apiVersion: v1 |