我正在尝试使用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。
答案 0 :(得分:2)
containers
和args
是数组,因此在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"]}]}}}}'