Skip to content

Commit c6011f2

Browse files
authored
Merge pull request kubernetes#91390 from vinayakankugoyal/nonroot
Updating kube-controller-manager to run as non-root.
2 parents e24a42f + 8daa9e6 commit c6011f2

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
@@ -1804,6 +1804,16 @@ function update-node-label() {
18041804
done
18051805
}
18061806

1807+
# A helper function that sets file permissions for kube-controller-manager to
1808+
# run as non root.
1809+
function run-kube-controller-manager-as-non-root {
1810+
prepare-log-file /var/log/kube-controller-manager.log ${KUBE_CONTROLLER_MANAGER_RUNASUSER} ${KUBE_CONTROLLER_MANAGER_RUNASGROUP}
1811+
setfacl -m u:${KUBE_CONTROLLER_MANAGER_RUNASUSER}:r "${CA_CERT_BUNDLE_PATH}"
1812+
setfacl -m u:${KUBE_CONTROLLER_MANAGER_RUNASUSER}:r "${SERVICEACCOUNT_CERT_PATH}"
1813+
setfacl -m u:${KUBE_CONTROLLER_MANAGER_RUNASUSER}:r "${SERVICEACCOUNT_KEY_PATH}"
1814+
}
1815+
1816+
18071817
# Starts kubernetes controller manager.
18081818
# It prepares the log file, loads the docker image, calculates variables, sets them
18091819
# in the manifest file, and then copies the manifest file to /etc/kubernetes/manifests.
@@ -1901,6 +1911,15 @@ function start-kube-controller-manager {
19011911
sed -i -e "s@{{flexvolume_hostpath}}@${FLEXVOLUME_HOSTPATH_VOLUME}@g" "${src_file}"
19021912
sed -i -e "s@{{cpurequest}}@${KUBE_CONTROLLER_MANAGER_CPU_REQUEST}@g" "${src_file}"
19031913

1914+
if [[ -n "${KUBE_CONTROLLER_MANAGER_RUNASUSER:-}" && -n "${KUBE_CONTROLLER_MANAGER_RUNASGROUP:-}" ]]; then
1915+
run-kube-controller-manager-as-non-root
1916+
sed -i -e "s@{{runAsUser}}@${KUBE_CONTROLLER_MANAGER_RUNASUSER}@g" "${src_file}"
1917+
sed -i -e "s@{{runAsGroup}}@${KUBE_CONTROLLER_MANAGER_RUNASGROUP}@g" "${src_file}"
1918+
else
1919+
sed -i -e "s@{{runAsUser}}@0@g" "${src_file}"
1920+
sed -i -e "s@{{runAsGroup}}@0@g" "${src_file}"
1921+
fi
1922+
19041923
cp "${src_file}" /etc/kubernetes/manifests
19051924
}
19061925

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)