diff --git a/cluster/gce/gci/configure-helper.sh b/cluster/gce/gci/configure-helper.sh index b4b08d58f0d..50b59be9c3a 100644 --- a/cluster/gce/gci/configure-helper.sh +++ b/cluster/gce/gci/configure-helper.sh @@ -2030,18 +2030,6 @@ function update-node-label() { 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. # 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. @@ -2060,7 +2048,7 @@ function start-kube-controller-manager { fi echo "Start kubernetes controller-manager" 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. 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' @@ -2149,12 +2137,13 @@ function start-kube-controller-manager { 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 - run-kube-controller-manager-as-non-root - sed -i -e "s@{{runAsUser}}@${KUBE_CONTROLLER_MANAGER_RUNASUSER}@g" "${src_file}" - sed -i -e "s@{{runAsGroup}}@${KUBE_CONTROLLER_MANAGER_RUNASGROUP}@g" "${src_file}" + sed -i -e "s@{{runAsUser}}@\"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@{{supplementalGroups}}@\"supplementalGroups\": [ ${KUBE_PKI_READERS_GROUP} ],@g" "${src_file}" else - sed -i -e "s@{{runAsUser}}@0@g" "${src_file}" - sed -i -e "s@{{runAsGroup}}@0@g" "${src_file}" + sed -i -e "s@{{runAsUser}}@@g" "${src_file}" + sed -i -e "s@{{runAsGroup}}@@g" "${src_file}" + sed -i -e "s@{{supplementalGroups}}@@g" "${src_file}" fi cp "${src_file}" /etc/kubernetes/manifests diff --git a/cluster/gce/manifests/kube-controller-manager.manifest b/cluster/gce/manifests/kube-controller-manager.manifest index 09754285822..a1771a53fad 100644 --- a/cluster/gce/manifests/kube-controller-manager.manifest +++ b/cluster/gce/manifests/kube-controller-manager.manifest @@ -11,11 +11,12 @@ }, "spec":{ "securityContext": { + {{runAsUser}} + {{runAsGroup}} + {{supplementalGroups}} "seccompProfile": { "type": "RuntimeDefault" - }, - "runAsUser": {{runAsUser}}, - "runAsGroup": {{runAsGroup}} + } }, "priorityClassName": "system-node-critical", "priority": 2000001000, diff --git a/cluster/gce/util.sh b/cluster/gce/util.sh index 49fd5425981..00eb235e94a 100755 --- a/cluster/gce/util.sh +++ b/cluster/gce/util.sh @@ -1355,6 +1355,18 @@ ETCD_PEER_KEY: $(yaml-quote "${ETCD_PEER_KEY_BASE64:-}") ETCD_PEER_CERT: $(yaml-quote "${ETCD_PEER_CERT_BASE64:-}") SERVICEACCOUNT_ISSUER: $(yaml-quote "${SERVICEACCOUNT_ISSUER:-}") 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 # KUBE_APISERVER_REQUEST_TIMEOUT_SEC (if set) controls the --request-timeout # flag