Skip to content

Commit 8daa9e6

Browse files
Updating kube-controller-manager to run as non-root.
1 parent a4e7db7 commit 8daa9e6

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

cluster/gce/gci/configure-helper.sh

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1840,6 +1840,16 @@ function update-node-label() {
18401840
done
18411841
}
18421842

1843+
# A helper function that sets file permissions for kube-controller-manager to
1844+
# run as non root.
1845+
function run-kube-controller-manager-as-non-root {
1846+
prepare-log-file /var/log/kube-controller-manager.log ${KUBE_CONTROLLER_MANAGER_RUNASUSER} ${KUBE_CONTROLLER_MANAGER_RUNASGROUP}
1847+
setfacl -m u:${KUBE_CONTROLLER_MANAGER_RUNASUSER}:r "${CA_CERT_BUNDLE_PATH}"
1848+
setfacl -m u:${KUBE_CONTROLLER_MANAGER_RUNASUSER}:r "${SERVICEACCOUNT_CERT_PATH}"
1849+
setfacl -m u:${KUBE_CONTROLLER_MANAGER_RUNASUSER}:r "${SERVICEACCOUNT_KEY_PATH}"
1850+
}
1851+
1852+
18431853
# Starts kubernetes controller manager.
18441854
# It prepares the log file, loads the docker image, calculates variables, sets them
18451855
# in the manifest file, and then copies the manifest file to /etc/kubernetes/manifests.
@@ -1937,6 +1947,15 @@ function start-kube-controller-manager {
19371947
sed -i -e "s@{{flexvolume_hostpath}}@${FLEXVOLUME_HOSTPATH_VOLUME}@g" "${src_file}"
19381948
sed -i -e "s@{{cpurequest}}@${KUBE_CONTROLLER_MANAGER_CPU_REQUEST}@g" "${src_file}"
19391949

1950+
if [[ -n "${KUBE_CONTROLLER_MANAGER_RUNASUSER:-}" && -n "${KUBE_CONTROLLER_MANAGER_RUNASGROUP:-}" ]]; then
1951+
run-kube-controller-manager-as-non-root
1952+
sed -i -e "s@{{runAsUser}}@${KUBE_CONTROLLER_MANAGER_RUNASUSER}@g" "${src_file}"
1953+
sed -i -e "s@{{runAsGroup}}@${KUBE_CONTROLLER_MANAGER_RUNASGROUP}@g" "${src_file}"
1954+
else
1955+
sed -i -e "s@{{runAsUser}}@0@g" "${src_file}"
1956+
sed -i -e "s@{{runAsGroup}}@0@g" "${src_file}"
1957+
fi
1958+
19401959
cp "${src_file}" /etc/kubernetes/manifests
19411960
}
19421961

cluster/gce/manifests/kube-controller-manager.manifest

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,24 @@
1313
}
1414
},
1515
"spec":{
16+
"securityContext": {
17+
"runAsUser": {{runAsUser}},
18+
"runAsGroup": {{runAsGroup}}
19+
},
1620
"priorityClassName": "system-node-critical",
1721
"priority": 2000001000,
1822
"hostNetwork": true,
1923
"containers":[
2024
{
2125
"name": "kube-controller-manager",
26+
"securityContext": {
27+
"allowPrivilegeEscalation": false,
28+
"capabilities": {
29+
"drop": [
30+
"all"
31+
]
32+
}
33+
},
2234
"image": "{{pillar['kube_docker_registry']}}/kube-controller-manager-amd64:{{pillar['kube-controller-manager_docker_tag']}}",
2335
"resources": {
2436
"requests": {

0 commit comments

Comments
 (0)