应用程序配置文件存储:Secret

Secret支持存储的类型

内置类型 用法
Opaque 用户定义的任意数据
kubernetes.io/service-account-token 服务账号令牌
kubernetes.io/dockercfg ~/.dockercfg 文件的序列化形式
kubernetes.io/dockerconfigjson ~/.docker/config.json 文件的序列化形式
kubernetes.io/basic-auth 用于基本身份认证的凭据
kubernetes.io/ssh-auth 用于 SSH 身份认证的凭据
kubernetes.io/tls 用于 TLS 客户端或者服务器端的数据
bootstrap.kubernetes.io/token 启动引导令牌数据

Secret演示:

创建Secret

1
2
3
4
5
# 首先,对用户名和密码进行base64加密
[root@pool1 k8s_yaml]# echo -n 'admin' | base64
YWRtaW4=
[root@pool1 k8s_yaml]# echo -n 'as2a2nf0' | base64
YXMyYTJuZjA=
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@pool1 k8s_yaml]# vi secret-config.yaml 
apiVersion: v1
kind: Secret
metadata:
name: db-user-pass
type: Opaque
data:
username: YWRtaW4= # 加密后得数据
password: YXMyYTJuZjA=
[root@pool1 k8s_yaml]# kubectl apply -f secret-config.yaml
secret/db-user-pass created
[root@pool1 k8s_yaml]# kubectl get secret
NAME TYPE DATA AGE
db-user-pass Opaque 2 9s

创建Pod

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[root@pool1 k8s_yaml]# vi secret-pod.yaml 
apiVersion: v1
kind: Pod
metadata:
name: secret-pod
spec:
containers:
- image: nginx
name: web
env:
- name: USER
valueFrom:
secretKeyRef:
name: db-user-pass
key: username
- name: PASS
valueFrom:
secretKeyRef:
name: db-user-pass
key: password
volumeMounts:
- mountPath: /secret
name: test-volume
readOnly: true
volumes:
- name: test-volume
secret:
secretName: db-user-pass
items:
- key: "username" # secret.data下得key名
path: "my-username" # 挂载到容器得文件名
[root@pool1 k8s_yaml]# kubectl apply -f secret-pod.yaml
[root@pool1 k8s_yaml]# kubectl get pod
NAME READY STATUS RESTARTS AGE
secret-pod 1/1 Running 0 35s

验证

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@pool1 k8s_yaml]# kubectl exec -it secret-pod -- bash
root@secret-pod:/#
root@secret-pod:/#
root@secret-pod:/#
root@secret-pod:/# echo $USER
admin
root@secret-pod:/# echo $PASS
as2a2nf0
root@secret-pod:/# cd secret/
root@secret-pod:/secret# ls
my-username
root@secret-pod:/secret# cat my-username
admin