Netflix está buscando pensadores sistémicos -no especialistas- en la era de la IA
La solución no es meter la IA de vuelta en el cajón ni enterrar la confusión o los riesgos bajo más procesos. Es contratar y desarrollar más pensadores sistémicos.
TL/DR; ¿Cansado de revisar manualmente tu clúster de Kubernetes para encontrar problemas? Popeye es como un chequeo de salud para tu clúster, encontrando posibles problemas con tus configuraciones y uso de recursos. Es una herramienta de línea de comandos que escanea tu clúster en vivo, no solo archivos estáticos,
¿Cansado de revisar manualmente tu clúster de Kubernetes para encontrar problemas? Popeye es como un chequeo de salud para tu clúster, encontrando posibles problemas con tus configuraciones y uso de recursos. Es una herramienta de línea de comandos que escanea tu clúster en vivo, no solo archivos estáticos, y señala cosas como errores de configuración, recursos no utilizados e incluso posibles sobreasignaciones de recursos. Es de solo lectura, por lo que no tocará tu clúster, solo te dará un informe amigable (o tal vez no tan amigable 🙃, dependiendo de la salud de tu clúster). Incluso puedes ponerte fancy con diferentes formatos de salida (JSON, HTML, lo que sea), enviar informes a S3 e integrarlo con Prometheus y Grafana para monitoreo continuo.

Seamos realistas, Kubernetes es increíble para orquestar tus aplicaciones en containers. Sin embargo, a medida que tus implementaciones crecen, también lo hace la complejidad. De repente, te estás ahogando en un mar de archivos YAML, preguntándote si ese Service en el default namespace está realmente hablando con tu Pod, o si ese PersistentVolumeClaim de un proyecto eliminado todavía está dando vueltas como un mal olor.
Ahí es donde entra Popeye, flexionando sus músculos con poder de espinaca para darle a tu clúster un chequeo completo.
🎶🎶🎤 ¡Popeye el marino soy!...
Popeye se sumerge en tu clúster en vivo, inspeccionando tus recursos mientras se ejecutan. Esta no es solo una herramienta de análisis estático de prueba en seco. Es la cosa real, buscando problemas comunes que pueden hacerte tropezar:
Pod coinciden con tus selectores Service?Namespace que pensaste que eliminaste hace meses? Popeye lo encontrará. ¿Esos Secrets sin usar? Sí, también los marcará.
¡Tienes opciones! (¡diVeRsIoNN! ¡fuN!) Descarga binarios, usa brew install, o go install si eres un aficionado a Go.
brew install derailed/popeye/popeye
go install github.com/derailed/popeye@latest
Interpretando el informe: Popeye codifica por colores sus hallazgos para darte una imagen clara de la salud de tu clúster:
Sube de nivel con Prometheus y Grafana: Integra Popeye con Prometheus para recopilar métricas y visualizar la salud de tu clúster con el tiempo en Grafana. Incluso puedes configurar alertas para que se te notifique cuando Popeye encuentre algo sospechoso.

Puedes ajustar el comportamiento de Popeye usando un archivo de configuración spinach.yaml. ¿Quieres ajustar los umbrales de utilización de recursos, excluir recursos específicos o incluso anular la gravedad de ciertas verificaciones? ¡Spinach te tiene cubierto!
popeye:
allocations:
cpu:
overPercUtilization: 70 # Trigger a warning if CPU utilization goes above 70%
Ejecuta el escaneo: Popeye funciona de inmediato. Solo apúntalo a tu clúster:
popeye
¿Quieres escanear un namespace específico? No hay problema:
popeye -n my-awesome-app
Digamos que estás ejecutando una aplicación web en tu clúster. Tienes un Deployment, un Service, y algunos otros recursos. Ejecutas Popeye, y este arroja lo siguiente:
😱 WARN po Pods default/my-awesome-app-7c94985768-x5fzk Container 'my-awesome-app' has no resource requests or limits defined!
¡Uy! Parece que olvidaste establecer los límites de recursos en tu Pod. Esto significa que tu aplicación podría consumir potencialmente todos los recursos de tu nodo, dejando a otras aplicaciones sin nada. ¡Es hora de actualizar ese archivo YAML!
Popeye es una herramienta esencial para cualquiera que ejecute Kubernetes. Es como tener un experto en Kubernetes constantemente mirándote por encima del hombro, señalando posibles problemas antes de que se conviertan en grandes dolores de cabeza. Entonces, ¡agrega Popeye a tu caja de herramientas y comienza a darle a tu clúster los chequeos que se merece! (O tal vez no...)

| K8s Resource | Linters | Aliases | |
|---|---|---|---|
| 🛀 | Node | no | |
| Conditions ie not ready, out of mem/disk, network, pids, etc | |||
| Pod tolerations referencing node taints | |||
| CPU/MEM utilization metrics, trips if over limits (default 80% CPU/MEM) | |||
| 🛀 | Namespace | ns | |
| Inactive | |||
| Dead namespaces | |||
| 🛀 | Pod | po | |
| Pod status | |||
| Containers statuses | |||
| ServiceAccount presence | |||
| CPU/MEM on containers over a set CPU/MEM limit (default 80% CPU/MEM) | |||
| Container image with no tags | |||
Container image using latest tag |
|||
| Resources request/limits presence | |||
| Probes liveness/readiness presence | |||
| Named ports and their references | |||
| 🛀 | Service | svc | |
| Endpoints presence | |||
| Matching pods labels | |||
| Named ports and their references | |||
| 🛀 | ServiceAccount | sa | |
| Unused, detects potentially unused SAs | |||
| 🛀 | Secrets | sec | |
| Unused, detects potentially unused secrets or associated keys | |||
| 🛀 | ConfigMap | cm | |
| Unused, detects potentially unused cm or associated keys | |||
| 🛀 | Deployment | dp, deploy | |
| Unused, pod template validation, resource utilization | |||
| 🛀 | StatefulSet | sts | |
| Unused, pod template validation, resource utilization | |||
| 🛀 | DaemonSet | ds | |
| Unused, pod template validation, resource utilization | |||
| 🛀 | PersistentVolume | pv | |
| Unused, check volume bound or volume error | |||
| 🛀 | PersistentVolumeClaim | pvc | |
| Unused, check bounded or volume mount error | |||
| 🛀 | HorizontalPodAutoscaler | hpa | |
| Unused, Utilization, Max burst checks | |||
| 🛀 | PodDisruptionBudget | ||
| Unused, Check minAvailable configuration | pdb | ||
| 🛀 | ClusterRole | ||
| Unused | cr | ||
| 🛀 | ClusterRoleBinding | ||
| Unused | crb | ||
| 🛀 | Role | ||
| Unused | ro | ||
| 🛀 | RoleBinding | ||
| Unused | rb | ||
| 🛀 | Ingress | ||
| Valid | ing | ||
| 🛀 | NetworkPolicy | ||
| Valid, Stale, Guarded | np | ||
| 🛀 | PodSecurityPolicy | ||
| Valid | psp | ||
| 🛀 | Cronjob | ||
| Valid, Suspended, Runs | cj | ||
| 🛀 | Job | ||
| Pod checks | job | ||
| 🛀 | GatewayClass | ||
| Valid, Unused | gwc | ||
| 🛀 | Gateway | ||
| Valid, Unused | gw | ||
| 🛀 | HTTPRoute | ||
| Valid, Unused | gwr |
La solución no es meter la IA de vuelta en el cajón ni enterrar la confusión o los riesgos bajo más procesos. Es contratar y desarrollar más pensadores sistémicos.
El Ejecutivo ha sido incapaz de conformar el Consejo Directivo de la nueva Agencia de Protección de Datos Personales, el organismo encargado de fiscalizar el cumplimiento de la norma.