邯郸医院网站建设,简单的个人简历网页代码,新媒体运营师考试报名官网,房地产宣传推广方案k8s创建secret并在container中获取secret
本文使用的deployment和service与我的上一篇文章一样。link也放在下面了#xff0c;如果不懂什么事deployment和service#xff0c;可以先看我的上一篇文章。 k8s使用kustomize来部署应用
下面我们将通过创建secret开始。secret是我…k8s创建secret并在container中获取secret
本文使用的deployment和service与我的上一篇文章一样。link也放在下面了如果不懂什么事deployment和service可以先看我的上一篇文章。 k8s使用kustomize来部署应用
下面我们将通过创建secret开始。secret是我们自己收到创建的我们需要先通过下面的命令来创建分别存放username和password的文件。
echo -n admin ./username.txt
echo -n S!B\*d$zDsb ./password.txt下面我们通过一个命令把secret绑定到我们需要部署的命名空间即dev-api中secret的名字叫db-user-pass存放有两对keypairs。
kubectl create -n dev-api secret generic db-user-pass \--from-fileusername./username.txt \--from-filepassword./password.txt我们通过下面命令查看secret是否创建成功如果有secret的详细信息说明已经创建成功了。
# 查看secret
kubectl get secret -n dev-api
kubectl describe secret -n dev-api db-user-pass 也可以使用下面命令解码secret看看。
kubectl get secret -n dev-api db-user-pass -o jsonpath{.data.password} | base64 --decode方法一使用挂载访问secret
下面我们更改deployment.yaml是的container中可以访问这个secret。
apiVersion: apps/v1
kind: Deployment
metadata:name: api-helloworld # 部署的名称# namespace: dev-api # 部署到哪个命名空间, 使用kustomize的话这里不能出现需要在overlays/dev/kustomization.yaml 指定
spec:replicas: 2 # 设置副本数量为2selector:matchLabels:app: api-helloworld # 用于选择匹配的Pod标签template:metadata:labels:app: api-helloworld # Pod的标签spec:containers:- name: api-helloworld-c # 容器名称# image: docker.io/library/restfulapi:latest # For image in container, use ctr -n k8s.io images import restfulapi.tar to import imagesimage: restfulapi:1 # For image in dockerimagePullPolicy: IfNotPresent # 镜像拉取策略如果本地没有就拉取ports:- containerPort: 80 # 容器内部监听的端口volumeMounts:- name: secret-volumemountPath: /etc/secretsreadOnly: truevolumes:- name: secret-volumesecret:secretName: db-user-pass
想对于没有修改之前的版本这里主要加入了对volume以及volumeMounts的描述volume把secret定义在volume上面了volumeMount则是把volume挂载到Pod.
主要变化。 containers:- name: api-helloworld-c # 容器名称# image: docker.io/library/restfulapi:latest # For image in container, use ctr -n k8s.io images import restfulapi.tar to import imagesimage: restfulapi:1 # For image in dockerimagePullPolicy: IfNotPresent # 镜像拉取策略如果本地没有就拉取ports:- containerPort: 80 # 容器内部监听的端口volumeMounts:- name: secret-volumemountPath: /etc/secretsreadOnly: truevolumes:- name: secret-volumesecret:secretName: db-user-pass最后我们重新部署一下。
cd overlay/dev
kubectl kustomize | kubectl apply -f -当确定好Pod已经起来以后我们就可以进去Pod里面看看我们的secret了。
kubectl exec -it -n dev-api api-helloworld-6c7c74fcbd-22prm -- bash
ls /etc/secrets/可以看得到secret已经可以成功范围了并且值得注意的是当作为volume挂载进来Pod的时候secret会自动的进行base64解码这里直接就可以访问明文了。
方法二使用环境变量方式访问secret
deployment.yaml如下
apiVersion: apps/v1
kind: Deployment
metadata:name: api-helloworld # 部署的名称# namespace: dev-api # 部署到哪个命名空间, 使用kustomize的话这里不能出现需要在overlays/dev/kustomization.yaml 指定
spec:replicas: 2 # 设置副本数量为2selector:matchLabels:app: api-helloworld # 用于选择匹配的Pod标签template:metadata:labels:app: api-helloworld # Pod的标签spec:containers:- name: api-helloworld-c # 容器名称# image: docker.io/library/restfulapi:latest # For image in container, use ctr -n k8s.io images import restfulapi.tar to import imagesimage: restfulapi:1 # For image in dockerimagePullPolicy: IfNotPresent # 镜像拉取策略如果本地没有就拉取ports:- containerPort: 80 # 容器内部监听的端口env:- name: SECRET_USERNAMEvalueFrom: secretKeyRef:name: db-user-passkey: username- name: SECRET_PASSWORDvalueFrom:secretKeyRef:name: db-user-passkey: password上面主要是加入了env的相关描述绑定到Pod里面的环境变量名分别为SECRET_USERNAMESECRET_PASSWORD。同样我们把deployment的变化直接apply到集群。
cd overlay/dev
kubectl kustomize | kubectl apply -f -Pod确定起来以后我们进去里面看看我们新绑定的env.
kubectl get pods -n dev-api
kubectl exec -it -n dev-api api-helloworld-797679c6c-5wk72 -- bash
env | grep SECRET同样我们也可以在env中看到我们新绑定的secret并且和卷绑定一样可以看到是明文形式来存储的。
好了以上是本期分享的全部内容了如果你觉得对你还有帮助建议点赞分享并收藏哦。如果大家想对我表示肯定扫描下面的二维码即可哦原创不易一分钱也是爱哦。