修补kubernetes仪表板

修补kubernetes仪表板,kubernetes,Kubernetes,我正在尝试使用patch命令修改kubernetes仪表板部署。我需要用一个命令将“---enable skip login”arg添加到containers部分。 诸如此类: kubectl -n kube-system patch deployment kubernetes-dashboard --patch '{"spec":{"template":{"spec":{"containers":{"- args":{"- --enable-skip-login"}}}}}}' 但这不起作用

我正在尝试使用patch命令修改kubernetes仪表板部署。我需要用一个命令将“---enable skip login”arg添加到containers部分。 诸如此类:

kubectl -n kube-system patch deployment kubernetes-dashboard --patch '{"spec":{"template":{"spec":{"containers":{"- args":{"- --enable-skip-login"}}}}}}'

但这不起作用,我需要正确的语法在部署yaml中添加此arg。

容器和
arg
都是数组,因此在JSON中表示如下:

{
  "spec": {
    "template": {
      "spec": {
        "containers": [
          { 
            "name", "yourcontainername",
            "args": [
              "--enable-skip-login"
            ]
          }
        ]
      }
    }
  }
}
因此,您可以尝试:

$ kubectl -n kube-system patch deployment kubernetes-dashboard --patch \
'{"spec":{"template":{"spec":{"containers":[{"name": "yourcontainername","args": ["--enable-skip-login"]}]}}}}'
请注意,您需要
“name”
,因为它是一个合并键。更多信息

(答案已在第节中更正):


最后,通过使用patch向数组中添加新元素,我得到了想要的结果:

kubectl -n kube-system patch deploy kubernetes-dashboard --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--enable-skip-login"}]'
如果没有arg,或者您像这样传输数组中的所有arg,则前面的答案将非常有用:

kubectl -n kube-system patch deployment kubernetes-dashboard --patch \
'{"spec":{"template":{"spec":{"containers":[{"name": "kubernetes-dashboard","args": ["--auto-generate-certificates", "--enable-skip-login"]}]}}}}'
kubectl -n kube-system patch deployment kubernetes-dashboard --patch \
'{"spec":{"template":{"spec":{"containers":[{"name": "kubernetes-dashboard","args": ["--auto-generate-certificates", "--enable-skip-login"]}]}}}}'