fix(docs-portal): no forzar drop de capabilities, rompe el arranque de nginx
Detectado en vivo: el pod nuevo crasheaba con 'chown(...) Operation not permitted' -- nginx:1.27-alpine necesita CAP_CHOWN en su propio entrypoint. drop:[ALL] + add:[NET_BIND_SERVICE] no alcanzaba. Se saca la restriccion de capabilities entera para este container (capabilities: null en el patch, unica forma real de anular el drop:[ALL] heredado del base -- omitir el campo u objeto vacio no alcanzan, confirmado en vivo). No es peor que el estado actual en produccion; se resuelve del todo con nginx-unprivileged. Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_011FqYP3Wf1W63Qmh7qgXAAT
This commit is contained in:
1 parent
dcc5bb2d57
commit
827086049c
1 file changed
+18
-11
@@ -26,20 +26,27 @@ spec:
|
||||
containers:
|
||||
- name: app
|
||||
image: gitea.cruzcloud.net/devops/docs-portal:v1.0.116
|
||||
# El base saca TODAS las capabilities. Corriendo como root en
|
||||
# el puerto 80 (privilegiado), eso rompe el bind() -- incluso
|
||||
# root necesita CAP_NET_BIND_SERVICE si se le sacan las demás.
|
||||
# Mismo motivo que el runAsNonRoot de arriba: se resuelve del
|
||||
# todo cuando docs-portal pase a nginx-unprivileged (puerto
|
||||
# 8080, no privilegiado, no necesita esta capability).
|
||||
# El base saca TODAS las capabilities. Probado en vivo y
|
||||
# revertido: con drop: ALL (aunque se agregue NET_BIND_SERVICE
|
||||
# de vuelta) el propio entrypoint de nginx:1.27-alpine falla al
|
||||
# arrancar -- necesita CAP_CHOWN para el chown() que hace sobre
|
||||
# /var/cache/nginx/client_temp en cada arranque ("Operation not
|
||||
# permitted", confirmado en el log real del pod). No vale la
|
||||
# pena ir agregando capabilities una por una a ciegas -- se
|
||||
# deja sin restricción de capabilities, igual que como corre
|
||||
# hoy en producción (no es peor que el estado actual). Se
|
||||
# resuelve del todo cuando docs-portal pase a
|
||||
# nginx-unprivileged (no necesita root ni capabilities
|
||||
# especiales para nada de esto).
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
readOnlyRootFilesystem: false
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
add:
|
||||
- NET_BIND_SERVICE
|
||||
# Ni omitir "capabilities" ni un objeto vacío {} alcanzan
|
||||
# para anular el drop:[ALL] del base (probado en vivo, los
|
||||
# dos dejaron el drop:[ALL] heredado intacto). "null" es la
|
||||
# forma real de borrar un campo heredado en un patch de
|
||||
# merge de Kubernetes/Kustomize.
|
||||
capabilities: null
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
|
||||
Reference in new issue
Block a user