mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 21:47:07 +00:00
Merge pull request #101164 from vinayakankugoyal/apiservernonroot
Run control-plane as non root in kube-up.
This commit is contained in:
commit
ca0c04e4d3
@ -2030,18 +2030,6 @@ function update-node-label() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# A helper function that sets file permissions for kube-controller-manager to
|
|
||||||
# run as non root.
|
|
||||||
# User and group should never contain characters that need to be quoted
|
|
||||||
# shellcheck disable=SC2086
|
|
||||||
function run-kube-controller-manager-as-non-root {
|
|
||||||
prepare-log-file /var/log/kube-controller-manager.log ${KUBE_CONTROLLER_MANAGER_RUNASUSER}
|
|
||||||
setfacl -m u:${KUBE_CONTROLLER_MANAGER_RUNASUSER}:r "${CA_CERT_BUNDLE_PATH}"
|
|
||||||
setfacl -m u:${KUBE_CONTROLLER_MANAGER_RUNASUSER}:r "${SERVICEACCOUNT_CERT_PATH}"
|
|
||||||
setfacl -m u:${KUBE_CONTROLLER_MANAGER_RUNASUSER}:r "${SERVICEACCOUNT_KEY_PATH}"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Starts kubernetes controller manager.
|
# Starts kubernetes controller manager.
|
||||||
# It prepares the log file, loads the docker image, calculates variables, sets them
|
# It prepares the log file, loads the docker image, calculates variables, sets them
|
||||||
# in the manifest file, and then copies the manifest file to /etc/kubernetes/manifests.
|
# in the manifest file, and then copies the manifest file to /etc/kubernetes/manifests.
|
||||||
@ -2060,7 +2048,7 @@ function start-kube-controller-manager {
|
|||||||
fi
|
fi
|
||||||
echo "Start kubernetes controller-manager"
|
echo "Start kubernetes controller-manager"
|
||||||
create-kubeconfig "kube-controller-manager" "${KUBE_CONTROLLER_MANAGER_TOKEN}"
|
create-kubeconfig "kube-controller-manager" "${KUBE_CONTROLLER_MANAGER_TOKEN}"
|
||||||
prepare-log-file /var/log/kube-controller-manager.log
|
prepare-log-file /var/log/kube-controller-manager.log "${KUBE_CONTROLLER_MANAGER_RUNASUSER:-0}"
|
||||||
# Calculate variables and assemble the command line.
|
# Calculate variables and assemble the command line.
|
||||||
local params=("${CONTROLLER_MANAGER_TEST_LOG_LEVEL:-"--v=2"}" "${CONTROLLER_MANAGER_TEST_ARGS:-}" "${CLOUD_CONFIG_OPT}")
|
local params=("${CONTROLLER_MANAGER_TEST_LOG_LEVEL:-"--v=2"}" "${CONTROLLER_MANAGER_TEST_ARGS:-}" "${CLOUD_CONFIG_OPT}")
|
||||||
local config_path='/etc/srv/kubernetes/kube-controller-manager/kubeconfig'
|
local config_path='/etc/srv/kubernetes/kube-controller-manager/kubeconfig'
|
||||||
@ -2149,12 +2137,13 @@ function start-kube-controller-manager {
|
|||||||
sed -i -e "s@{{cpurequest}}@${KUBE_CONTROLLER_MANAGER_CPU_REQUEST}@g" "${src_file}"
|
sed -i -e "s@{{cpurequest}}@${KUBE_CONTROLLER_MANAGER_CPU_REQUEST}@g" "${src_file}"
|
||||||
|
|
||||||
if [[ -n "${KUBE_CONTROLLER_MANAGER_RUNASUSER:-}" && -n "${KUBE_CONTROLLER_MANAGER_RUNASGROUP:-}" ]]; then
|
if [[ -n "${KUBE_CONTROLLER_MANAGER_RUNASUSER:-}" && -n "${KUBE_CONTROLLER_MANAGER_RUNASGROUP:-}" ]]; then
|
||||||
run-kube-controller-manager-as-non-root
|
sed -i -e "s@{{runAsUser}}@\"runAsUser\": ${KUBE_CONTROLLER_MANAGER_RUNASUSER},@g" "${src_file}"
|
||||||
sed -i -e "s@{{runAsUser}}@${KUBE_CONTROLLER_MANAGER_RUNASUSER}@g" "${src_file}"
|
sed -i -e "s@{{runAsGroup}}@\"runAsGroup\":${KUBE_CONTROLLER_MANAGER_RUNASGROUP},@g" "${src_file}"
|
||||||
sed -i -e "s@{{runAsGroup}}@${KUBE_CONTROLLER_MANAGER_RUNASGROUP}@g" "${src_file}"
|
sed -i -e "s@{{supplementalGroups}}@\"supplementalGroups\": [ ${KUBE_PKI_READERS_GROUP} ],@g" "${src_file}"
|
||||||
else
|
else
|
||||||
sed -i -e "s@{{runAsUser}}@0@g" "${src_file}"
|
sed -i -e "s@{{runAsUser}}@@g" "${src_file}"
|
||||||
sed -i -e "s@{{runAsGroup}}@0@g" "${src_file}"
|
sed -i -e "s@{{runAsGroup}}@@g" "${src_file}"
|
||||||
|
sed -i -e "s@{{supplementalGroups}}@@g" "${src_file}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cp "${src_file}" /etc/kubernetes/manifests
|
cp "${src_file}" /etc/kubernetes/manifests
|
||||||
|
@ -11,11 +11,12 @@
|
|||||||
},
|
},
|
||||||
"spec":{
|
"spec":{
|
||||||
"securityContext": {
|
"securityContext": {
|
||||||
|
{{runAsUser}}
|
||||||
|
{{runAsGroup}}
|
||||||
|
{{supplementalGroups}}
|
||||||
"seccompProfile": {
|
"seccompProfile": {
|
||||||
"type": "RuntimeDefault"
|
"type": "RuntimeDefault"
|
||||||
},
|
}
|
||||||
"runAsUser": {{runAsUser}},
|
|
||||||
"runAsGroup": {{runAsGroup}}
|
|
||||||
},
|
},
|
||||||
"priorityClassName": "system-node-critical",
|
"priorityClassName": "system-node-critical",
|
||||||
"priority": 2000001000,
|
"priority": 2000001000,
|
||||||
|
@ -1355,6 +1355,18 @@ ETCD_PEER_KEY: $(yaml-quote "${ETCD_PEER_KEY_BASE64:-}")
|
|||||||
ETCD_PEER_CERT: $(yaml-quote "${ETCD_PEER_CERT_BASE64:-}")
|
ETCD_PEER_CERT: $(yaml-quote "${ETCD_PEER_CERT_BASE64:-}")
|
||||||
SERVICEACCOUNT_ISSUER: $(yaml-quote "${SERVICEACCOUNT_ISSUER:-}")
|
SERVICEACCOUNT_ISSUER: $(yaml-quote "${SERVICEACCOUNT_ISSUER:-}")
|
||||||
KUBECTL_PRUNE_WHITELIST_OVERRIDE: $(yaml-quote "${KUBECTL_PRUNE_WHITELIST_OVERRIDE:-}")
|
KUBECTL_PRUNE_WHITELIST_OVERRIDE: $(yaml-quote "${KUBECTL_PRUNE_WHITELIST_OVERRIDE:-}")
|
||||||
|
KUBE_SCHEDULER_RUNASUSER: 2001
|
||||||
|
KUBE_SCHEDULER_RUNASGROUP: 2001
|
||||||
|
KUBE_ADDON_MANAGER_RUNASUSER: 2002
|
||||||
|
KUBE_ADDON_MANAGER_RUNASGROUP: 2002
|
||||||
|
KUBE_CONTROLLER_MANAGER_RUNASUSER: 2003
|
||||||
|
KUBE_CONTROLLER_MANAGER_RUNASGROUP: 2003
|
||||||
|
KUBE_API_SERVER_RUNASUSER: 2004
|
||||||
|
KUBE_API_SERVER_RUNASGROUP: 2004
|
||||||
|
KUBE_PKI_READERS_GROUP: 2005
|
||||||
|
ETCD_RUNASUSER: 2006
|
||||||
|
ETCD_RUNASGROUP: 2006
|
||||||
|
KUBE_POD_LOG_READERS_GROUP: 2007
|
||||||
EOF
|
EOF
|
||||||
# KUBE_APISERVER_REQUEST_TIMEOUT_SEC (if set) controls the --request-timeout
|
# KUBE_APISERVER_REQUEST_TIMEOUT_SEC (if set) controls the --request-timeout
|
||||||
# flag
|
# flag
|
||||||
|
Loading…
Reference in New Issue
Block a user