Un Admission Controller es un módulo de software que intercepta y procesa peticiones a la API de un sistema antes de que los objetos solicitados sean persistidos. Su función principal es validar, mutar o denegar peticiones basándose en políticas predefinidas. Actúa como una puerta de enlace, asegurando que las operaciones cumplan con las reglas de seguridad, gobernanza y buenas prácticas del sistema. Pueden ser de tipo 'Validating' (solo verifican la validez de la petición) o 'Mutating' (pueden modificar la petición antes de que sea procesada).
El ejemplo más prominente de implementación de Admission Controllers se encuentra en Kubernetes. El kube-apiserver utiliza una cadena de Admission Controllers para aplicar políticas de seguridad y gestión. Algunos ejemplos incluyen: `PodSecurityPolicy` (obsoleto, reemplazado por Pod Security Standards y Admission Controllers como Kyverno o OPA Gatekeeper), `LimitRanger` (aplica límites de recursos por namespace), `ResourceQuota` (impone cuotas de recursos), y `MutatingAdmissionWebhook` / `ValidatingAdmissionWebhook` que permiten extender la lógica de admisión con servicios externos personalizados. Herramientas como Kyverno y OPA Gatekeeper (Open Policy Agent) extienden esta funcionalidad, permitiendo a los usuarios definir políticas complejas para validar y mutar recursos de Kubernetes.
Para un arquitecto, los Admission Controllers son cruciales para establecer un control de gobernanza y seguridad robusto en entornos distribuidos. Permiten aplicar políticas de forma centralizada y automatizada, reduciendo errores humanos y garantizando el cumplimiento normativo. La decisión de diseño clave radica en cómo equilibrar la flexibilidad con la complejidad: un exceso de Admission Controllers o políticas mal diseñadas pueden introducir latencia en la API, dificultar la depuración y crear puntos únicos de fallo. Es vital diseñar políticas modulares, probarlas exhaustivamente y considerar el impacto en el rendimiento y la experiencia del desarrollador. Son una herramienta poderosa para implementar 'shift-left security' y 'policy-as-code'.