Secret 的 YAML 模板和 CKAD 常考字段解析
Secret 保存敏感配置。CKAD 常考 generic Secret、环境变量引用、volume 挂载。
YAML 模板
1
2
3
4
5
6
7
8
9
| apiVersion: v1
kind: Secret
metadata:
name: db-credentials
namespace: configuration
type: Opaque
stringData:
username: admin
password: securepass
|
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
| apiVersion: v1
kind: Pod
metadata:
name: secure-pod
namespace: configuration
spec:
containers:
- name: mysql
image: mysql:5.7
env:
- name: DB_USER
valueFrom:
secretKeyRef:
name: db-credentials
key: username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-credentials
key: password
volumeMounts:
- name: db-secret
mountPath: /etc/db-secret
readOnly: true
volumes:
- name: db-secret
secret:
secretName: db-credentials
|
常考字段解析
type: Opaque:通用 Secret 类型。stringData:明文写入,apiserver 会转成 data 的 base64。data:需要自己写 base64 编码后的值。secretKeyRef.name/key:引用指定 Secret 的指定 key。volumes[].secret.secretName:挂载 Secret 为文件。
常用命令
1
2
3
4
| k create secret generic db-credentials -n configuration --from-literal=username=admin --from-literal=password=securepass
k describe secret db-credentials -n configuration
k get secret db-credentials -n configuration -o yaml
k get secret db-credentials -n configuration -o jsonpath='{.data.username}' | base64 -d
|
易错点
- YAML 中
data 必须 base64;想写明文用 stringData。 - Secret 挂载成 volume 时默认只读。