mirror of
https://github.com/kubernetes-sigs/kubespray.git
synced 2026-02-01 09:38:12 -03:30
Drop linux capabilities and rework users/groups
* Drop linux capabilities for unprivileged containerized worlkoads Kargo configures for deployments. * Configure required securityContext/user/group/groups for kube components' static manifests, etcd, calico-rr and k8s apps, like dnsmasq daemonset. * Rework cloud-init (etcd) users creation for CoreOS. * Fix nologin paths, adjust defaults for addusers role and ensure supplementary groups membership added for users. * Add netplug user for network plugins (yet unused by privileged networking containers though). * Grant the kube and netplug users read access for etcd certs via the etcd certs group. * Grant group read access to kube certs via the kube cert group. * Remove priveleged mode for calico-rr and run it under its uid/gid and supplementary etcd_cert group. * Adjust docs. * Align cpu/memory limits and dropped caps with added rkt support for control plane. Signed-off-by: Bogdan Dobrelya <bogdando@mail.ru>
This commit is contained in:
@@ -2,4 +2,7 @@
|
||||
dependencies:
|
||||
- role: adduser
|
||||
user: "{{ addusers.kube }}"
|
||||
tags: kubelet
|
||||
tags: [bootstrap-os, kubelet]
|
||||
- role: adduser
|
||||
user: "{{ addusers.netplug }}"
|
||||
tags: [bootstrap-os, network]
|
||||
|
||||
@@ -23,6 +23,12 @@
|
||||
- include: set_facts.yml
|
||||
tags: facts
|
||||
|
||||
- include: set_resolv_facts.yml
|
||||
tags: [bootstrap-os, resolvconf, facts]
|
||||
|
||||
- include: set_uid_facts.yml
|
||||
tags: [bootstrap-os, facts]
|
||||
|
||||
- name: gather os specific variables
|
||||
include_vars: "{{ item }}"
|
||||
with_first_found:
|
||||
@@ -42,7 +48,7 @@
|
||||
file:
|
||||
path: "{{ kube_config_dir }}"
|
||||
state: directory
|
||||
owner: kube
|
||||
owner: "{{ kubelet_user }}"
|
||||
when: "{{ inventory_hostname in groups['k8s-cluster'] }}"
|
||||
tags: [kubelet, k8s-secrets, kube-controller-manager, kube-apiserver, bootstrap-os, apps, network, master, node]
|
||||
|
||||
@@ -50,7 +56,7 @@
|
||||
file:
|
||||
path: "{{ kube_script_dir }}"
|
||||
state: directory
|
||||
owner: kube
|
||||
owner: "{{ kubelet_user }}"
|
||||
when: "{{ inventory_hostname in groups['k8s-cluster'] }}"
|
||||
tags: [k8s-secrets, bootstrap-os]
|
||||
|
||||
@@ -58,7 +64,7 @@
|
||||
file:
|
||||
path: "{{ kube_manifest_dir }}"
|
||||
state: directory
|
||||
owner: kube
|
||||
owner: "{{ kubelet_user }}"
|
||||
when: "{{ inventory_hostname in groups['k8s-cluster'] }}"
|
||||
tags: [kubelet, bootstrap-os, master, node]
|
||||
|
||||
@@ -80,7 +86,7 @@
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: kube
|
||||
owner: "{{ kubelet_user }}"
|
||||
with_items:
|
||||
- "/etc/cni/net.d"
|
||||
- "/opt/cni/bin"
|
||||
|
||||
@@ -51,6 +51,3 @@
|
||||
etcd_container_bin_dir: "{% if etcd_after_v3 %}/usr/local/bin/{% else %}/{% endif %}"
|
||||
- set_fact:
|
||||
peer_with_calico_rr: "{{ 'calico-rr' in groups and groups['calico-rr']|length > 0 }}"
|
||||
|
||||
- include: set_resolv_facts.yml
|
||||
tags: [bootstrap-os, resolvconf, facts]
|
||||
|
||||
32
roles/kubernetes/preinstall/tasks/set_uid_facts.yml
Normal file
32
roles/kubernetes/preinstall/tasks/set_uid_facts.yml
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
- name: Preinstall | get kube user ID
|
||||
shell: /usr/bin/id -u {{ kubelet_user }} || echo 0
|
||||
register: kube_uid
|
||||
|
||||
- name: Preinstall | get kube group ID
|
||||
shell: /usr/bin/id -g {{ kubelet_group }} || echo 0
|
||||
register: kube_gid
|
||||
|
||||
- name: Preinstall | get kube cert group ID
|
||||
shell: /usr/bin/id -g {{ kube_cert_group }} || echo 0
|
||||
register: kube_cert_gid
|
||||
|
||||
- name: Preinstall | get etcd cert group ID
|
||||
shell: /usr/bin/id -g {{ etcd_cert_group }} || echo 0
|
||||
register: etcd_cert_gid
|
||||
|
||||
- name: Preinstall | get netplug user ID
|
||||
shell: /usr/bin/id -u {{ netplug_user }} || echo 0
|
||||
register: netplug_uid
|
||||
|
||||
- name: Preinstall | get netplug group ID
|
||||
shell: /usr/bin/getent group {{ netplug_group }} | cut -d':' -f3 || echo 0
|
||||
register: netplug_gid
|
||||
|
||||
- set_fact:
|
||||
kubelet_user_id: "{{ kube_uid.stdout }}"
|
||||
kubelet_group_id: "{{ kube_gid.stdout }}"
|
||||
kube_cert_group_id: "{{ kube_cert_gid.stdout }}"
|
||||
etcd_cert_group_id: "{{ etcd_cert_gid.stdout }}"
|
||||
netplug_user_id: "{{ netplug_uid.stdout }}"
|
||||
netplug_group_id: "{{ netplug_gid.stdout }}"
|
||||
Reference in New Issue
Block a user