(资料图)
在 Kubernetes 中,Secret 对象不仅可以用来存储敏感信息,如访问私有镜像仓库的凭证、HTTPS 证书等,还可以实现 Secret 对象的热更新。
首先,我们需要创建一个 Secret 对象。可以使用以下命令来创建一个 Secret 对象:
$ kubectl create secret generic my-secret --from-literal=foo=bar
在这个命令中,my-secret
参数指定了 Secret 对象的名称,--from-literal
参数用于指定要存储的键值对。
可以使用以下命令来查看刚创建的 Secret 对象的详细信息:
$ kubectl describe secret my-secret
接下来,我们需要创建一个使用上一步中创建的 Secret 对象的 Pod 对象。可以使用以下 YAML 配置文件来创建一个简单的 Pod 对象:
apiVersion: v1kind: Podmetadata: name: my-podspec: 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 对象:
$ kubectl apply -f pod.yaml
当需要更新 Secret 对象中的键值对时,可以使用以下命令来更新 Secret 对象:
$ 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 中。
当更新了 Secret 对象后,我们可以观察 Pod 对象的日志,看到环境变量 foo
的值已经从 bar
变为了 baz
。
$ kubectl logs my-pod