1.secret配置文件
-
与ConfigMap类似,区别在于Secret主要存储敏感数据,所有的数据要经过base64编码。
-
应用场景:凭据
-
kubectl create secret 支持三种数据类型:
- docker-registry(kubernetes.io/dockerconfigjson):存储镜像仓库认证信息
- generic(Opaque):存储密码、密钥等
- tls(kubernetes.io/tls):存储TLS证书
2. 使用案例
2.1 将用户名和密码进行编码
1 2 3 4 | root@configmap-demo-pod:/# echo -n admin | base64 YWRtaW4= root@configmap-demo-pod:/# echo -n '1f2d1e2e67df' | base64 MWYyZDFlMmU2N2Rm |
2.2 将编码后的值放到secret
1 2 3 4 5 6 7 8 9 10 | [root@k8s-master secret]# vim secret.yaml [root@k8s-master secret]# cat secret.yaml apiVersion: v1 kind: Secret metadata: name: db-user-pass type: Opaque data: username: YWRtaW4= password: MWYyZDFlMmU2N2Rm |
2.3 启动secret配置文件
1 2 | [root@k8s-master secret]# kubectl apply -f secret.yaml secret/db-user-pass created |
2.4 编写secret的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 29 30 31 32 | [root@k8s-master secret]# vim secret-pod.yaml [root@k8s-master secret]# cat secret-pod.yaml apiVersion: v1 kind: Pod metadata: name: secret-demo-pod spec: containers: - name: demo image: nginx env: - name: USER valueFrom: secretKeyRef: name: db-user-pass key: username - name: PASS valueFrom: secretKeyRef: name: db-user-pass key: password volumeMounts: - name: config mountPath: "/config" readOnly: true volumes: - name: config secret: secretName: db-user-pass items: - key: username path: my-username |
2.5 启动配置文件
1 2 | [root@k8s-master secret]# kubectl apply -f secret-pod.yaml pod/secret-demo-pod created |
2.6 查看pod是否启动
1 2 3 4 | [root@k8s-master secret]# kubectl get pod NAME READY STATUS RESTARTS AGE configmap-demo-pod 1/1 Running 0 6h52m secret-demo-pod 1/1 Running 0 86s |
2.7 进入容器验证
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 29 | [root@k8s-master secret]# kubectl exec -it secret-demo-pod -- /bin/bash root@secret-demo-pod:/# env KUBERNETES_SERVICE_PORT_HTTPS=443 KUBERNETES_SERVICE_PORT=443 HOSTNAME=secret-demo-pod PWD=/ PKG_RELEASE=1~buster HOME=/root KUBERNETES_PORT_443_TCP=tcp: //10.96.0.1:443 NJS_VERSION=0.5.0 TERM=xterm USER=admin PASS=1f2d1e2e67df SHLVL=1 KUBERNETES_PORT_443_TCP_PROTO=tcp KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1 KUBERNETES_SERVICE_HOST=10.96.0.1 KUBERNETES_PORT=tcp: //10.96.0.1:443 KUBERNETES_PORT_443_TCP_PORT=443 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin NGINX_VERSION=1.19.6 _=/usr/bin/env root@secret-demo-pod:/# echo $USER admin root@secret-demo-pod:/# echo $PASS 1f2d1e2e67df root@secret-demo-pod:/# cat /config/my-username admin root@secret-demo-pod:/# |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!