Gran parte de mis proyectos personales corren en Kubernetes, generalmente en clusters de DigitalOcean Kubernetes (DOKS). Como en muchos entornos Kubernetes, la mayoría de los servicios públicos se exponen a través de Ingress Controllers, que terminan publicando aplicaciones web, APIs u otros servicios hacia internet.
Con el tiempo me encontré repitiendo el mismo proceso una y otra vez:
cada vez que exponía un nuevo servicio público, también tenía que crear manualmente checks de uptime y alertas para asegurarme de que el endpoint estuviera disponible.
El proceso no era complicado, pero sí repetitivo y fácil de olvidar.
Quería algo más alineado con cómo normalmente trabajamos en Kubernetes: definir el estado deseado y dejar que el sistema se encargue de mantenerlo.
De esa necesidad nació do-uptime-kubernetes-operator, un operador de Kubernetes que automatiza la creación y mantenimiento de uptime checks en DigitalOcean Uptime Monitoring para los servicios expuestos a través de Ingress.
👉 Página del proyecto: https://do-uptime-operator.douz.io/
👉 Repositorio: https://github.com/douz/do-uptime-kubernetes-operator
El problema
Cuando trabajas con Kubernetes, la infraestructura normalmente se gestiona como código:
- Manifests
- Helm charts
- Terraform
- GitOps pipelines
Pero muchas veces el monitoreo externo termina configurándose manualmente.
En el caso de DigitalOcean, el servicio de Uptime Monitoring permite crear checks HTTP para monitorear endpoints públicos y generar alertas cuando dejan de responder correctamente.
Funciona bien, pero al usar Kubernetes el flujo termina viéndose así:
- Crear o actualizar un Ingress
- Esperar a que el endpoint esté disponible
- Ir al panel de DigitalOcean
- Crear manualmente un uptime check
- Configurar alertas
- Repetir para cada servicio nuevo
En clusters donde constantemente se agregan o modifican servicios públicos, esto se vuelve difícil de mantener.
La idea
La solución era bastante clara:
si Kubernetes ya sabe qué servicios están expuestos a través de Ingress, entonces también debería poder automatizar la creación de los uptime checks correspondientes. Así nació este operador.
do-uptime-kubernetes-operator observa los recursos Ingress dentro del cluster y crea automáticamente uptime checks en DigitalOcean para los endpoints públicos que encuentre.
De esta forma, el monitoreo externo pasa a ser parte natural del flujo de Kubernetes.
Cómo funciona
El operador observa los recursos Ingress dentro del cluster, pero solo actúa sobre aquellos que incluyen annotations específicas que indican que deben ser monitoreados.
La annotation principal que activa el operador es:
douz.io/do-monitor: "true"
Cuando un Ingress incluye esta annotation, el operador interpreta que ese endpoint debe tener un uptime check en DigitalOcean Uptime Monitoring.
Además de la annotation principal, el operador también busca annotations adicionales que comienzan con el prefijo:
douz.io/do-monitor-*
Estas annotations permiten definir la configuración del uptime check directamente desde el manifiesto de Kubernetes.
Cuando el operador detecta un Ingress con estas annotations:
- Lee el host definido en el recurso Ingress.
- Analiza las annotations
douz.io/do-monitor-*para determinar la configuración del check. - Consulta la API de DigitalOcean Uptime Monitoring.
- Crea o actualiza el uptime check correspondiente para ese endpoint.
Si el Ingress cambia (por ejemplo, el host o la configuración de monitoreo), el operador sincroniza esos cambios automáticamente con DigitalOcean.
Y si el Ingress se elimina o se quita la annotation douz.io/do-monitor: "true", el operador también elimina el uptime check asociado.
De esta forma, el monitoreo externo queda definido junto con el resto de la infraestructura, directamente en los manifests de Kubernetes.
El resultado es un flujo completamente declarativo donde los uptime checks se gestionan como parte natural del ciclo de vida del Ingress.
Enfoque del proyecto
El objetivo del operador es mantenerse simple y enfocado.
No intenta reemplazar sistemas de monitoreo completos ni herramientas de observabilidad. Su propósito es mucho más específico:
automatizar uptime monitoring externo para servicios públicos en Kubernetes.
El proyecto está escrito siguiendo el patrón estándar de Kubernetes Operators, utilizando las herramientas comunes del ecosistema y manteniendo el comportamiento lo más transparente posible.
Open source
Desarrollé este operador inicialmente para uso personal, para simplificar la gestión de monitoreo en mis clusters de Kubernetes en DigitalOcean.
Después de usarlo durante un tiempo y ver que resolvía bien el problema, decidí liberarlo como open source.
El código está disponible aquí:
https://github.com/douz/do-uptime-kubernetes-operator
Si trabajas con Kubernetes en DigitalOcean y quieres automatizar uptime monitoring para tus servicios públicos, probablemente te resulte útil.
Y si decides probarlo o extenderlo, las contribuciones y feedback siempre son bienvenidos.

Leave a Reply