Security Context Constraints (SCC)
Prečo tvoj pod na OpenShift nechce bežať ako root.
SCC je OpenShift ekvivalent PodSecurity admission (bývalej PodSecurityPolicy). Definuje, čo pod smie a nesmie: či beží ako root, s akými capabilities, či môže mountnúť hostPath, používať hostNetwork a podobne.
Default SCC je `restricted-v2`. Zakazuje root usera, vynúti random UID z namespace range (`openshift.io/sa.scc.uid-range`), zakáže hostPath a všetky Linux capabilities okrem `NET_BIND_SERVICE` (a aj tú s obmedzením). Väčšina upstream Helm chartov toto nezvláda a spadne s `Permission denied`.
Priority SCC určuje, ktorý sa aplikuje. OpenShift zoradí SCC dostupné pre service account podľa priority a vyberie najreštriktívnejší, ktorý dovolí pod spustiť. Ak service account má `anyuid` aj `restricted-v2`, dostane `restricted-v2`, pokiaľ pod nepýta explicit UID 0.
Ako povoliť anyuid pre appku, ktorá to fakt potrebuje: `oc adm policy add-scc-to-user anyuid -z my-sa -n my-namespace`. Nikdy nepridávaj SCC user-om ani `system:authenticated` – to je diera na celý klaster. Vždy service account + namespace.
Lepšia cesta je fixnúť aplikáciu. Zmeň Dockerfile na `USER 1001`, daj `chown -R 1001:0 /app` na start súbory a nastav `GID 0` na priečinky, ktoré appka zapisuje (OpenShift dá pod-u random UID, ale GID 0 zostáva). Tento pattern je štandard pre Red Hat UBI images a Bitnami charts.