修补kubernetes仪表板

时间:2019-04-11 04:56:41

标签: kubernetes

我正在尝试使用patch命令修改kubernetes-dashboard部署。我需要使用一个命令将“---enable-skip-login” arg添加到容器部分。 像这样:

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

但这无法正常工作,我需要正确的语法才能在部署Yaml中添加此arg。

2 个答案:

答案 0 :(得分:2)

containersargs是数组,因此在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"。更多信息here

(答案已在部分中更正):

"name",  "yourcontainername" 

答案 1 :(得分:1)

最后,通过使用补丁向数组添加新元素,我已经有了想要的东西:

kubectl -n kube-system patch deploy kubernetes-dashboard --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--enable-skip-login"}]'

如果没有args或将数组中的所有args像这样传输,则上一个答案将很有用:

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