在 Kubernetes 中,Secret 对象不仅可以用来存储敏感信息,如访问私有镜像仓库的凭证、HTTPS 证书等,还可以实现 Secret 对象的热更新。
创建一个 Secret 对象
首先,我们需要创建一个 Secret 对象。可以使用以下命令来创建一个 Secret 对象:
代码语言:javascript复制$ kubectl create secret generic my-secret --from-literal=foo=bar
在这个命令中,my-secret
参数指定了 Secret 对象的名称,--from-literal
参数用于指定要存储的键值对。
可以使用以下命令来查看刚创建的 Secret 对象的详细信息:
代码语言:javascript复制$ kubectl describe secret my-secret
创建一个 Pod 对象
接下来,我们需要创建一个使用上一步中创建的 Secret 对象的 Pod 对象。可以使用以下 YAML 配置文件来创建一个简单的 Pod 对象:
代码语言:javascript复制apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: busybox
command:
- sh
- -c
- while true; do echo $foo; sleep 10; done
env:
- name: foo
valueFrom:
secretKeyRef:
name: my-secret
key: foo
在这个配置文件中,我们创建了一个使用上一步中创建的 Secret 对象的 Pod 对象。其中,env
属性将 Secret 对象中的 foo
键值对作为环境变量传递给了容器,容器将会每隔 10 秒钟打印一次环境变量 foo
的值。
可以使用以下命令来部署 Pod 对象:
代码语言:javascript复制$ kubectl apply -f pod.yaml
更新 Secret 对象
当需要更新 Secret 对象中的键值对时,可以使用以下命令来更新 Secret 对象:
代码语言:javascript复制$ kubectl create secret generic my-secret --from-literal=foo=baz --dry-run=client -o yaml | kubectl apply -f -
在这个命令中,--from-literal
参数用于指定要更新的键值对,--dry-run=client -o yaml
参数用于生成更新后的 Secret 对象的 YAML 配置文件,| kubectl apply -f -
参数用于将更新后的 YAML 配置文件应用到 Kubernetes 中。
观察 Pod 对象
当更新了 Secret 对象后,我们可以观察 Pod 对象的日志,看到环境变量 foo
的值已经从 bar
变为了 baz
。
$ kubectl logs my-pod