pod 资源清单之 secret 案例(存储敏感数据)
configMap:
对应用程序的配置文件进行存储,便于Pod的容器进行挂载。
数据存储在etcd中。
secret:
和cm资源不同的是,secret可以存储一些敏感数据。
比如用户名,密码,证书等认证信息。
secret创建方式
声明式
cat 01-secrets-userinfo.yaml
apiVersion: v1
kind: Secret
metadata:
name: my-secrets-01
data:
# 对于Secret的值进行base64编码,当Pod的容器使用secret时会自动对数据进行解码
username: YWRtaW4K
password: b2xkYm95ZWR1Cg==
响应式:
- 基于命令行key=value的方式创建。
kubectl create secret generic my-secrets-02 --from-literal=school=b2xkYm95ZWR1Cg== --from-literal=class=bGludXg4Ngo=
- 基于命令行读取文件的方式创建
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' -q
kubectl create secret generic my-secrets-03 --from-file=ssh-privatekey=/root/.ssh/id_rsa --from-file=ssh-publickey=/root/.ssh/id_rsa.pub
Pod引用secret的两种方式:
cat 31-pods-secrets-env-volumes.yaml
apiVersion: v1
kind: Pod
metadata:
name: linux86-web-secrets-env-cm-001
spec:
volumes:
- name: data
# 指定存储卷类型为secret
secret:
# 指定secret的名称
secretName: my-secrets-01
- name: data02
secret:
secretName: my-secrets-01
items:
- key: username
path: username.info
- key: password
path: password.txt
- name: data03
secret:
secretName: my-secrets-01
items:
- key: username
path: mimi.log
containers:
- name: web
image: harbor.baimei.com/baimei-web/nginx:1.25.1-alpine
volumeMounts:
- name: data
mountPath: /baimei-linux86-secrets
- name: data02
mountPath: /baimei-linux86-secrets-2
- name: data03
mountPath: /baimei-linux86-secrets-3
env:
- name: baimei_USERNAME
valueFrom:
# 值引用自某个secret
secretKeyRef:
# 指定secret的名称
name: my-secrets-01
# 指定引用secret对应的key
key: username
- name: baimei_PASSWORD
valueFrom:
secretKeyRef:
name: my-secrets-01
key: password
- name: baimei_SSH_PRIVATEKEY
valueFrom:
secretKeyRef:
name: my-secrets-03
key: ssh-privatekey
- name: baimei_SSH_PUBLICKEY
valueFrom:
secretKeyRef:
name: my-secrets-03
key: ssh-publickey
欢迎来撩 : 汇总all