I'm trying to modify kubernetes-dashboard deployment with patch command. I need to add "- --enable-skip-login" arg to containers section with one command. Something like that:
kubectl -n kube-system patch deployment kubernetes-dashboard --patch '{"spec":{"template":{"spec":{"containers":{"- args":{"- --enable-skip-login"}}}}}}'
But this doesn't work and I need right syntax to add this arg in the deployment yaml.
containers
and args
are arrays so in JSON the representation would be this:
{
"spec": {
"template": {
"spec": {
"containers": [
{
"name", "yourcontainername",
"args": [
"--enable-skip-login"
]
}
]
}
}
}
}
So, you can try:
$ kubectl -n kube-system patch deployment kubernetes-dashboard --patch \
'{"spec":{"template":{"spec":{"containers":[{"name": "yourcontainername","args": ["--enable-skip-login"]}]}}}}'
Note that you need "name"
since it's a merge key. More info here
(answer was corrected in section):
"name", "yourcontainername"
Finally I've got what I want by using patch with adding new element to an array:
kubectl -n kube-system patch deploy kubernetes-dashboard --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--enable-skip-login"}]'
The previous answer will be useful if there was no args or if you transfer all args in array like this:
kubectl -n kube-system patch deployment kubernetes-dashboard --patch \
'{"spec":{"template":{"spec":{"containers":[{"name": "kubernetes-dashboard","args": ["--auto-generate-certificates", "--enable-skip-login"]}]}}}}'