[关闭]
@zhangyy 2020-03-30T16:32:12.000000Z 字数 2392 阅读 107

kubernetes的 secret 存储配置

kubernetes系列


  • 一: kubernetes的 secret 存储配置

一: kubernetes的 secret 存储配置

1.1 Secret 存在意义

  1. Secret 解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者 Pod Spec
  2. 中。Secret 可以以 Volume 或者环境变量的方式使用
  3. Secret 有三种类型:
  4. 1. Service Account :用来访问 Kubernetes API,由 Kubernetes 自动创建,并且会自动挂载到 Pod
  5. /run/secrets/kubernetes.io/serviceaccount 目录中
  6. 2. Opaque base64编码格式的Secret,用来存储密码、密钥等
  7. 3. kubernetes.io/dockerconfigjson :用来存储私有 docker registry 的认证信息

1.1.1 Service Account

  1. Service Account 用来访问 Kubernetes API,由 Kubernetes 自动创建,并且会自动挂载到 Pod
  2. /run/secrets/kubernetes.io/serviceaccount 目录中
  3. docker pull nginx
  4. kubectl run nginx image nginx
  5. kubectl get pod
  6. kubectl exec nginx-7bb7cd8db5-fzdsv -it -- /bin/sh
  7. ls /run/secrets/kubernetes.io/serviceaccount

image_1e36qu6jtp7m1m65p6qbafbdh9.png-110.2kB

image_1e36r0ro814bi1db17vbg7n181013.png-46.7kB

image_1e36qvjkq1fggegs6m03jtrohm.png-15kB

1.1.2 Opaque Secret

  1. Ⅰ、创建说明
  2. Opaque 类型的数据是一个 map 类型,要求 value base64 编码格式:
  3. $ echo -n "admin" | base64
  4. YWRtaW4=
  5. $ echo -n "1f2d1e2e67df" | base64
  6. MWYyZDFlMmU2N2Rm
  7. $ echo -n "YWRtaW4=" |base64 -d
  8. admin
  9. 这种base64 加密非常的不安全

image_1e36rdqd81fm9jihab9e6nrf1g.png-85.4kB


  1. vim secrets.yaml
  2. ----
  3. apiVersion: v1
  4. kind: Secret
  5. metadata:
  6. name: mysecret
  7. type: Opaque
  8. data:
  9. password: MWYyZDFlMmU2N2Rm
  10. username: YWRtaW4=
  11. ----
  12. kubectl apply -f secrets.yaml

image_1e36rl18p1ffsa1t4g1f2f3d81t.png-90.3kB

image_1e36rnjm416fg1qteicb1n4g10492a.png-115.8kB

  1. 使用方法:
  2. 1、将 Secret 挂载到 Volume
  3. vim secret1.yaml
  4. ---
  5. apiVersion: v1
  6. kind: Pod
  7. metadata:
  8. labels:
  9. name: seret-test
  10. name: seret-test
  11. spec:
  12. volumes:
  13. - name: secrets
  14. secret:
  15. secretName: mysecret
  16. containers:
  17. - image: wangyanglinux/myapp:v1
  18. name: db
  19. volumeMounts:
  20. - name: secrets
  21. mountPath: "/etc/secret"
  22. readOnly: true
  23. ---
  24. kubectl apply -f secret1.yaml

image_1e36sdtma1osuj7r1t3odpb1edr2n.png-104.2kB

image_1e36ser5sdd910mp17g0jjc1b2d34.png-95.5kB


  1. 2、将 Secret 导出到环境变量中
  2. vim secret2.yaml
  3. ---
  4. apiVersion: extensions/v1beta1
  5. kind: Deployment
  6. metadata:
  7. name: pod-deployment
  8. spec:
  9. replicas: 2
  10. template:
  11. metadata:
  12. labels:
  13. app: pod-deployment
  14. spec:
  15. containers:
  16. - name: pod-1
  17. image: wangyanglinux/myapp:v1
  18. ports:
  19. - containerPort: 80
  20. env:
  21. - name: TEST_USER
  22. valueFrom:
  23. secretKeyRef:
  24. name: mysecret
  25. key: username
  26. - name: TEST_PASSWORD
  27. valueFrom:
  28. secretKeyRef:
  29. name: mysecret
  30. key: password
  31. ---
  32. kubectl apply -f secret2.yaml

image_1e36uuq1khtq1sqbpj3krp4193h.png-33.5kB

image_1e36v64gs161jmpnpc11v45gc03u.png-166.3kB

1.1.8 kubernetes.io/dockerconfigjson

  1. 在私有仓库 harbor 中创建一个私有的 项目 test

image_1e370pki71p5q17se1q2u1vlm1f4e4r.png-146.4kB

image_1e3716gu964e1krj16kovf9g8k78.png-231.4kB

  1. rhel01.flyfish 登录 harbor node04.flyfish
  2. docker login node04.flyfish
  3. admin
  4. Harbor12345
  5. docker tag wangyanglinux/myapp:v1 node04.flyfish/test/myapp:v1
  6. docker push node04.flyfish/test/myapp:v1

image_1e3711dlo15mg1r5b177nf9trui61.png-185.3kB

  1. docker logout node04.flyfish
  2. docker node04.flyfish/test/myapp:v1

image_1e3714udd142htstupa127j1clp6r.png-136.9kB

  1. 使用 Kuberctl 创建 docker registry 认证的 secret
  2. kubectl create secret docker-registry myregistrykey --docker-server=node04.flyfish -- docker-username=admin --docker-password=Harbor12345 --docker-email=yangyangsirit@163.com
  3. 使用 创建的 "myregistrykey" 注册登录 下载 镜像

image_1e371kq2l1fl61hnkqab1tnlvlb7l.png-53.1kB

  1. vim pod.yaml
  2. ----
  3. apiVersion: v1
  4. kind: Pod
  5. metadata:
  6. name: foo
  7. spec:
  8. containers:
  9. - name: foo
  10. image: node04.flyfish/test/myapp:v1
  11. imagePullSecrets:
  12. - name: myregistrykey
  13. ----
  14. kubectl apply -f pod.yaml

image_1e371opdpj3td1c11vi1qm317ct8v.png-154.2kB

image_1e371m94o1aa7e4djsmhg31v9e8i.png-72.4kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注