一个 Secret 可以包含 Pod 访问数据库所需的用户凭证。 例如,由用户名和密码组成的数据库连接字符串

kubectl 管理 Secret

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 创建
echo -n 'admin' > ./username.txt
echo -n '1f2d1e2e67df' > ./password.txt

kubectl create secret generic db-user-pass \
--from-file=./username.txt \
--from-file=./password.txt
# 或者
kubectl create secret generic db-user-pass \
--from-literal=username=devuser \
--from-literal=password='S!B\*d$zDsb='

# 查看
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 创建yaml文件
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
username: YWRtaW4=
password: MWYyZDFlMmU2N2Rm
#或
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
stringData:
config.yaml: |
apiUrl: "https://my.api.com/api/v1"
username: admin
password: password

# 创建
kubectl apply -f ./secret.yaml

Kustomize 管理 Secret

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#创建kustomization文件

secretGenerator:
- name: db-user-pass
files:
- uname=username.txt
- pass=password.txt
#或
secretGenerator:
- name: db-user-pass
literals:
- username=admin
- password=1f2d1e2e67df
#或
# 从 .env.secret 文件获取数据。
secretGenerator:
- name: db-user-pass
envs:
- .env.secret

#创建
kubectl apply -k .

管理secrets: https://kubernetes.io/zh/docs/tasks/configmap-secret/