kubectl 使用来自秘密配置的 env var 运行

Ale*_*int 5 kubernetes

如何发出kubectl run从 k8s 秘密配置映射中提取环境变量的命令?

目前我有:

kubectl run oneoff -i --rm NAME --image=IMAGE --env SECRET=foo

Cha*_*ino 12

查看命令overrides的标志run...它的内容如下:

生成对象的内联 JSON 覆盖。如果它非空,则用于覆盖生成的对象。要求对象提供有效的 apiVersion 字段。

https://kubernetes.io/docs/reference/ generated/kubectl/kubectl-commands#run

所以在你的情况下我想它会是这样的:

kubectl run oneoff -i --rm --overrides='
{
  "spec": {
    "containers": [
      {
        "name": "oneoff",
        "image": "IMAGE",
        "env": [
          {
            "name": "ENV_NAME"
            "valueFrom": {
              "secretKeyRef": {
                "name": "SECRET_NAME",
                "key": "SECRET_KEY"
              }
            }
          }
        ]
      }
    ]
  }
}
'  --image= IMAGE
Run Code Online (Sandbox Code Playgroud)

  • 请记住,为容器设置覆盖几乎会覆盖所有内容,包括“运行”参数,例如图像(必须覆盖)和命令。刚刚被咬了,“--command --/my/custom/command”被完全忽略,我不得不将它设置在覆盖中。 (4认同)

Ric*_*ico 6

这是另一个可以解决问题的方法:

 kubectl run oneoff -i --rm NAME --image=IMAGE --env SECRET=$(kubectl get secret your-secret -o=jsonpath="{.server['secret\.yml']}")
Run Code Online (Sandbox Code Playgroud)