我有一个kubectl run
命令,看起来像这样:
kubectl --context ${CONTEXT} -n ${NAMESPACE} run ${POD_NAME} \
--env VARIABLE1=${VARIABLE1} \
--env VARIABLE2=${VARIABLE2} \
--image ${DOCKER_IMAGE}:${IMAGE_TAG} \
--image-pull-policy=Always --restart=Never --rm --wait --attach \
--command -- sh -c "./my-srcipt.sh"
在某些时候,我最终需要为这个pod处理SecurityContext。我看到这个--overrides
选项,并尝试像这样使用它:
kubectl --context ${CONTEXT} -n ${NAMESPACE} run ${POD_NAME} \
--env VARIABLE1=${VARIABLE1} \
--env VARIABLE2=${VARIABLE2} \
--image ${DOCKER_IMAGE}:${IMAGE_TAG} \
--image-pull-policy=Always --restart=Never --rm --wait --attach \
--overrides="{
\"apiVersion\": \"v1\",
\"spec\": {
\"securityContext\": {
\"runAsUser\": 1234,
\"runAsGroup\": 1234,
\"fsGroup\": 1234
},
\"containers\": [
{
\"image\": \"${DOCKER_IMAGE}:${IMAGE_TAG}\",
\"name\": \"${POD_NAME}\",
\"securityContext\": {
\"capabilities\": {
\"drop\": [\"ALL\"]
}
}
}
]
}
}" \
--command -- sh -c "./my-srcipt.sh"
但是,看起来--overrides
选项替代了kubectl run
的其他选项(包括--command和--env)中给出的整个pod配置。
有没有一种方法可以在不覆盖其他所有内容的情况下添加这些对象?
1条答案
按热度按时间mzmfm0qo1#
对于任何想知道的人,我能够通过将
--override-type strategic
选项添加到kubectl run
命令来解决我的问题。