Secret的挂载
挂载 Secret 中指定键值至环境变量之 env
创建 Secret
kubectl create secret generic db-user-pass \
--from-literal=username='admin' \
--from-literal=password='password123456'
准备 Deployment 的 yaml 文件
cat > dp-secret.yaml << EOF
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: dp-secret
name: dp-secret
spec:
replicas: 1
selector:
matchLabels:
app: dp-secret
template:
metadata:
labels:
app: dp-secret
spec:
containers:
- image: nginx
name: nginx
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: db-user-pass
key: username
- name: SECRET_PASSWORD
valueFrom:
secretKeyRef:
name: db-user-pass
key: password
EOF
此文件可以使用如下命令生成后删除不必要的项后得到
kubectl create deployment dp-secret --image=nginx --dry-run=client -o yaml > dp-secret.yaml
删除不必要的项后在 container 下添加如下信息
env
- name: SECRET_PASSWORD
valueFrom:
secretKeyRef:
name: db-user-pass
key: password创建 Deployment 资源
kubectl create -f dp-secret.yaml
验证环境变量
kubectl get deployment
kubectl get pod
kubectl exec dp-secret-6695d9986-7mc22 -- env
# 也可进容器查看
kubectl exec -it dp-secret-6695d9986-7mc22 -- bash
env挂载 Secret 中所有键值至环境变量之 envFrom
创建 Secret
kubectl create secret generic db-user-pass \
--from-literal=username='admin' \
--from-literal=password='password123456'
准备 Deployment 的 yaml 文件
cat > dp-secret.yaml << EOF
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: dp-secret
name: dp-secret
spec:
replicas: 1
selector:
matchLabels:
app: dp-secret
template:
metadata:
labels:
app: dp-secret
spec:
containers:
- image: nginx
name: nginx
envFrom:
- secretRef:
name: db-user-pass
EOF
此文件可以使用如下命令生成后删除不必要的项后得到
kubectl create deployment dp-secretsecret --image=nginx --dry-run=client -o yaml > dp-secret.yaml
删除不必要的项后在 container 下添加如下信息
envFrom:
- secretRef:
name: db-user-pass
创建 Deployment 资源
kubectl create -f dp-secret.yaml
验证环境变量
kubectl get deployment
kubectl get pod
kubectl exec dp-secret-67c57685b4-jk7v6 -- env
# 也可进容器查看
kubectl exec -it dp-secret-67c57685b4-jk7v6 -- bash
env挂载 Secret 至容器中的指定位置之 volumeMounts
创建 Secret
kubectl create secret generic db-user-pass \
--from-literal=username='admin' \
--from-literal=password='password123456'
准备 Deployment 的 yaml 文件
cat > dp-secret.yaml << EOF
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: dp-secret
name: dp-secret
spec:
replicas: 1
selector:
matchLabels:
app: dp-secret
template:
metadata:
labels:
app: dp-secret
spec:
containers:
- image: nginx
name: nginx
volumeMounts:
- name: vol-db-user-pass
mountPath: "/tmp/vol-db-user-pass"
readOnly: true
volumes:
- name: vol-db-user-pass
secret:
secretName: db-user-pass
EOF
此文件可以使用如下命令生成后删除不必要的项后得到
kubectl create deployment dp-secretsecret --image=nginx --dry-run=client -o yaml > dp-secret.yaml
删除不必要的项后在 container 下添加如下信息
# 与 container 项同级添加
volumes:
- name: vol-db-user-pass
secret:
name: db-user-pass
# 在 container 下添加如下信息
volumeMounts:
- name: vol-db-user-pass
mountPath: "/tmp/vol-db-user-pass"
创建 Deployment 资源
kubectl create -f dp-secret.yaml
验证挂载结果
kubectl get deployment
kubectl get pod
# 可进容器查看
kubectl exec -it dp-secret-59c97d8f6f-b47kp -- bash
cd /tmp/vol-db-user-pass
ls
# 挂载内容会以文件形式出现在挂载的目录里Last updated