Chequea Kubernetes con Popeye! Seguridad, configs, problemas y más con Popeye CLI (Además es open source y liviano!)

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, 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.

¿Por qué necesitas un linter de Kubernetes como Popeye?

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 al rescate!

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:

  • Error de configuraciones: ¿Tus asignaciones de puertos de contenedor son correctas? ¿Tus etiquetas Pod coinciden con tus selectores Service?
  • Uso de recursos: Popeye incluso puede acceder a tu servidor de métricas (si estás usando uno) y advertirte sobre posibles sobreasignaciones de CPU o memoria antes de que tu clúster tire la toalla.
  • Recursos obsoletos: ¿Recuerdas ese Namespace que pensaste que eliminaste hace meses? Popeye lo encontrará. ¿Esos Secrets sin usar? Sí, también los marcará.
  • Mejores prácticas de seguridad: Popeye puede ayudarte a detectar cosas como Pods que se ejecutan como root, límites de recursos faltantes y otras malas prácticas básicas de seguridad.

Instalación

 ¡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

Comenzando con Popeye

Interpretando el informe: Popeye codifica por colores sus hallazgos para darte una imagen clara de la salud de tu clúster:

    • ✅ OK: ¡Todo parece estar bien!
    • 🔊 Info: Solo algunos mensajes de información.
    • 😱 Warn: Posibles problemas que podrías querer investigar.
    • 💥 Error: ¡Se requiere acción! Estos son problemas que necesitan ser solucionados.

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.

Personalizando escaneos (¿Espinacas, alguien?)

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

Popeye en acción: Un ejemplo práctico

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!

Mantén tu clúster saludable con Popeye

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...)

Enlaces útiles

GitHub - derailed/popeye: 👀 A Kubernetes cluster resource sanitizer
👀 A Kubernetes cluster resource sanitizer. Contribute to derailed/popeye development by creating an account on GitHub.
popeye
👀 A Kubernetes cluster resource sanitizer

Algunos checks de ejemplo

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

Comment using your social account:

You will be asked to grant read-only access to your public profile and email address only to verify your identity. We will never post to your account. Select your preferred social account to get started.
Service provided by Spectral Web Services.

  |

Read interesting articles in SREDevOps.org:

Whonix: An Operating System for DevSecOps, Researchers and Paranoids like you and me

Whonix: An Operating System for DevSecOps, Researchers and Paranoids like you and me

Ah, privacy. That mythical beast we all chase in this digital jungle. You think incognito mode is enough? Honey, please. Your ISP knows what you had for breakfast, and they're judging. But fear not, my friend, for there's a solution for the truly paranoid: Whonix. Whonix

DevOps Paradox: OpenTelemetry meets Mobile

DevOps Paradox: OpenTelemetry meets Mobile

OpenTelemetry is transforming the landscape of mobile app observability, providing developers with powerful tools to monitor, understand, and optimize their applications. Embrace, with its open-source SDKs and commitment to community involvement, is at the forefront of this exciting evolution. This episode of DevOps Paradox features Austin Alexander from Embrace (https:

How to fix the Critical 9.9 CVE Linux Vulnerability in CUPS: A Step-by-Step Guide

How to fix the Critical 9.9 CVE Linux Vulnerability in CUPS: A Step-by-Step Guide

Oh No! Not My Printers! Exploiting CUPS on Linux: A How-to Guide (Just Kidding, Please Patch Your Systems) Remember those carefree days when the most terrifying thing about printers was running out of ink at 3 AM just before a big deadline? Yeah, me neither. But hold onto your coffee

Linux could be facing a critical RCE vulnerability, scoring 9.9 (CVE): Let's separate hype, security, facts, and developer drama

Linux could be facing a critical RCE vulnerability, scoring 9.9 (CVE): Let's separate hype, security, facts, and developer drama

The Linux community is abuzz with news of a potential Remote Code Execution (RCE) vulnerability, sending chills down the spines of sysadmins and prompting frantic security checks. But hold on to your penguins, because things are a bit more complicated than they appear. UPDATE 29-09-2024: How to fix the Critical