Build in linux namespace
working
Použití pro userNS v GITHUB actions runners
premisa SCC pro runner
- pokud chceme aby mohl fungovat podman run tzn v případě multistage buildu je potřeba pro SA nakonfigurovat scc privileged
- pokud nepotřebujeme podman run stačí scc anyuid
UID mapping
V cri-o runneru na OCP je pouze jeden workloadclass podporující userNS a to io.openshift.builder a proto je potřeba ho anotovat.
#anotace podu pro využití userns
annotations:
openshift.io/scc: anyuid
io.kubernetes.cri-o.userns-mode: "auto:size=65536;map-to-root=true"
#hodnota 65536 asi není potřeba tak vysoká bude stačit o řád nižší
io.openshift.builder: "true"
Předchozí anotace provede mapping mezi UID unvitř kontajneru (v našem případě workload běží pod uživatelem 1001(runner))
#inspekce na worker nodu
#pro testy runner běží ve sleepu
#check userns
sh-4.4# lsns -t user
NS TYPE NPROCS PID USER COMMAND
4026531837 user 217 1 root /usr/lib/systemd/systemd --switched-root --system --deserialize 17
4026532928 user 10 156171 166537 sh -c sleep 1000000
#proces je puštěn pod užiatelem 166537
#uid mapping
sh-4.4# cat /proc/156171/uid_map
0 165536 65536
# mapping je lineární tedy UID 0 unvitř kontejneru má UID 165536 z pohledu
# openshift node
# náš proces běžící pod UID 1001 runner unvitř kontejneru bude tedy mít
# 165536+1001 = 166537
# a je namapován na efektivní práva uživatele containers
sh-4.4# cat /etc/subuid
core:100000:65536
containers:165536:65536
containers:200000:16000000
PRIVILEGED SCC
Privileged allows access to all privileged and host features and the ability to run as any user, any group, any fsGroup, and with any SELinux context. WARNING: this is the most relaxed SCC and should be used only for cluster administration Podivame se jake skutecne capabilities jsme ziskali