今天继续给大家介绍Linux运维相关知识,本文主要内容是Secret应用。
在上文Kubernetes详解(四十一)——Secret创建中,我们通过四种方式创建了Secret,今天,我们来介绍Secret的应用。
一、secret调用
首先,我们来尝试在Pod中调用Secret。我们创建pod-secret.yaml文件,并向其中写入如下内容:
apiVersion: v1
kind: Pod
metadata:
name: pod-secret
spec:
containers:
- name: pod-with-secret
image: ikubernetes/myapp:v1
volumeMounts:
- name: secret-exp
mountPath: "/etc/secret"
readOnly: true
volumes:
- name: secret-exp
secret:
secretName: secret4
在上述配置中,volumes挂载卷终我们使用了secret类型,并指定secret的名称。注意,该Secret必须在Kubernetes集群中已经存在,否则Pod不会被创建。
配置完成后的资源清单如下所示:
之后,我们可以执行命令:
kubectl apply -f pod-secret.yaml
创建该Pod。该命令执行结果如下所示:
在该Pod创建后,我们可以进入该Pod,来查看我们的Secret挂载结果。根据我们的资源清单配置,我们的Secret会挂载到/etc/secret/目录下,我们查看该目录下的内容如下所示:
从上图中可以看出,我们的Secret挂载到Pod后,能够被Pod所使用。
二、secret动态更新
在前文中我们介绍过,Secret可以实现容器与容器配置信息的解耦,接下来,我们尝试修改Secret,然后在容器中查看对应的Secret是否也被修改。
我们修改Secret的配置文件如下所示:
之后,我们按照同样的步骤,进入容器中查看Secret的信息,结果如下:
从上图中可以看出,我们Pod中的Secret信息已经成功修改!
三、secret环境变量
其实,Secret除了可以被挂载使用外,我们还可以将Secret配置成Pod容器中的环境变量。我们创建pod-env-secrete.yaml文件,并向其中写入如下内容:
apiVersion: v1
kind: Pod
metadata:
name: pod-with-env-secret
spec:
containers:
- name: pod-with-env
image: ikubernetes/myapp:v1
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: secret4
key: username
- name: SECRET_PASSWORD
valueFrom:
secretKeyRef:
name: secret4
key: password
在上述配置中,我们使用spec.containers.env参数来指定Pod容器中的环境变量。env参数下的-name参数指定了环境变量的名称,valueFrom参数指定了该环境变量的来源,secreteKeyRef参数指定了该环境变量来源于Secret,该参数下的name参数指定了该Secret的名称,key参数则指定了该Secret具体的键。
配置完成后的清单文件如下所示:
在该资源清单文件配置完成后,我们执行命令:
kubectl apply -f pod-env-secret.yaml
创建该Pod,该命令执行结果如下所示:
之后,我们进入该Pod,查看该Pod下的环境变量,结果如下所示:
从上图中我们看出,Secret中的内容作为环境变量被Pod所使用。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200