1 概述

作用:加密数据存在etcd里面,让Pod容器以挂载Volume方式进行访问

场景:凭证

2 创建secret加密数据

2.1 创建yaml文件

  1. apiVersion: v1
  2. kind: Secret
  3. metadata:
  4. name: mysecret
  5. type: Opaque
  6. data:
  7. username: test(需base64加密 echo test | base64)
  8. password: test(需base64加密)

2.2 执行

  1. // 1 部署
  2. kubectl apply secret.yaml
  3. // 2 查询
  4. kubectl get secret

3 以变量形式挂载到pod容器中

3.1 创建yaml文件

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: mypod
  5. spec:
  6. containers:
  7. - name: nginx
  8. image: nginx
  9. env:
  10. - name: SECRET_USERNAME
  11. valueFrom:
  12. secretKeyRef:
  13. name: mysecret
  14. key: username
  15. - name: SECRET_PASSWORD
  16. valueFrom:
  17. secretKeyRef:
  18. name: mysecret
  19. key: password

3.2 执行

  1. // 1 部署
  2. kubectl apply secretpod.yaml
  3. // 2 进入容器
  4. kubectl exec -it podname bash
  5. // 3 查看变量名
  6. echo $SECRET_USERNAME
  7. echo $SECRET_PASSWORD

4 以volume形式挂载到pod容器中

4.1 创建yaml文件

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: mypod
  5. spec:
  6. containers:
  7. - name: nginx
  8. image: nginx
  9. volumeMounts:
  10. - name: foo
  11. mountPath: "/etc/foo"
  12. readOnly: true
  13. volumes:
  14. - name: foo
  15. secret:
  16. secretName: mysecret

4.2 执行

  1. // 1 部署
  2. kubectl apply secretvolume.yaml
  3. // 2 进入容器
  4. kubectl exec -it podname bash
  5. // 3 查看变量名
  6. cd /etc/foo
  7. cat password
  8. cat username