使用 "kubectl set env" 在 Kubernetes 清单中设置环境变量



我正在尝试更新一个掌机部署的部署,以便它使用作为k8s秘密资源存储的秘密。这个必须设置为我的pod中的STORAGE_PASSWORD环境变量。

在我的例子中,秘密在secrets/redis中,数据项是redis-password:

$ kubectl get secret/redis - yamlapiVersion: v1数据:redis-password: XXXXXXXXXXXXXXXX =:秘密元数据:名称:复述,类型:不透明

我试过了:

$ kubectl set env——from secret/redis deployment/gateway——keys=redis-password警告:密钥REDIS_PASSWORD已传输到REDIS_PASSWORD部署。apps/gateway env updated

当我查看更新的部署清单时,我看到该变量已被添加,但(如建议)该变量已设置为REDIS_PASSWORD:

- name: REDIS_PASSWORDvalueFrom:secretKeyRef:关键:redis-passwordname: redis

我也尝试过kubectl patchreplace操作,但我不能得到语法正确的有秘密插入。

如何修改环境变量名称为STORAGE_PASSWORD?

给出如下的部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: example
spec:
  replicas: 1
  template:
    spec:
      containers:
        - image: alpinelinux/darkhttpd
          name: darkhttpd
          args:
            - --port
            - "9991"
          ports:
            - name: http
              protocol: TCP
              containerPort: 9991
          env:
            - name: EXAMPLE_VAR
              value: example value

在secret中进行补丁的语法如下:

kubectl patch deploy/example --patch='
  {
    "spec": {
      "template": {
        "spec": {
          "containers": [
            {
              "name": "darkhttpd",
              "env": [
                {
                  "name": "STORAGE_PASSWORD",
                  "valueFrom": {
                    "secretKeyRef": {
                      "name": "redis",
                      "key": "redis-password"
                    }
                  }
                }
              ]
            }
          ]
        }
      }
    }
  }
'

或者使用JSONPatch样式的补丁:

kubectl patch --type json deploy/example --patch='
[
  {
    "op": "add",
    "path": "/spec/template/spec/containers/0/env/-",
    "value": {
      "name": "STORAGE_PASSWORD",
      "valueFrom": {
        "secretKeyRef": {
          "name": "redis",
          "key": "redis-password"
        }
      }
    }
  }
]
'

这两个都不是特别漂亮,因为你是在现有的复杂嵌套结构上添加一个复杂的嵌套结构。

您也可以使用kubectl edit:

更新资源
kubectl edit deployment gateway

然后编辑yaml文件

    # - name: REDIS_PASSWORD
    - name: STORAGE_PASSWORD
      valueFrom:
        secretKeyRef:
          key: redis-password
          name: redis

供参考:https://kubernetes.io/docs/concepts/cluster-administration/manage-deployment/kubectl-edit

相关内容

  • 没有找到相关文章

最新更新