Secret热更新

2023-05-02 19:43:24 浏览数 (1)

在 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

代码语言:javascript复制
$ kubectl logs my-pod

0 人点赞