(资料图片)

在 Kubernetes 中,Secret 对象不仅可以用来存储敏感信息,如访问私有镜像仓库的凭证、HTTPS 证书等,还可以实现 Secret 对象的热更新。

创建一个 Secret 对象

首先,我们需要创建一个 Secret 对象。可以使用以下命令来创建一个 Secret 对象:

$ kubectl create secret generic my-secret --from-literal=foo=bar

在这个命令中,my-secret参数指定了 Secret 对象的名称,--from-literal参数用于指定要存储的键值对。

可以使用以下命令来查看刚创建的 Secret 对象的详细信息:

$ kubectl describe secret my-secret

创建一个 Pod 对象

接下来,我们需要创建一个使用上一步中创建的 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 对象中的键值对时,可以使用以下命令来更新 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 中。

观察 Pod 对象

当更新了 Secret 对象后,我们可以观察 Pod 对象的日志,看到环境变量 foo的值已经从 bar变为了 baz

$ kubectl logs my-pod

关键词: