Cómo crear pods de desarrollo en Kubernetes con Helm y ArgoCD

Problema Equipos pequeños que migran de Docker Compose a un clúster Kubernetes (k3s, EKS, GKE, etc.) suelen perder la agilidad que tenían al desarrollar localmente. En un flujo tradicional con Compose, cada ingeniero monta su código en un contenedor, reinicia al instante y ve los logs en la terminal. Cuando la aplicación pasa a Helm y ArgoCD, el proceso se vuelve más rígido: los pipelines generan imágenes versionadas, los charts se despliegan en entornos de staging y prod, y los desarrolladores ya no tienen una forma sencilla de lanzar una instancia aislada para pruebas rápidas. ...

August 26, 2026 · Ernesto

Cómo aislar runners auto‑hosteados de GitHub Actions con capacidad Docker

Problema Los runners auto‑hosteados de GitHub Actions son convenientes porque pueden reutilizar infraestructura existente y ejecutar jobs que requieren Docker, Docker‑Compose o herramientas de navegador como Playwright. Sin embargo, cuando el job tiene acceso directo al daemon Docker del host, se rompe el aislamiento esperado: un script malintencionado o un error de configuración puede manipular contenedores del propio host, leer volúmenes sensibles o consumir recursos críticos. Además, la ejecución de código del workflow directamente sobre la máquina física elimina la frontera entre el CI y el entorno de producción, lo que complica la depuración y la rotación de runners. ...

August 24, 2026 · Ernesto

Cómo montar un pipeline CI/CD completo con Argo CD, Argo Workflows y Argo Image Updater en Kubernetes

Problema Muchas instalaciones de Kubernetes usan GitHub Actions, GitLab CI o Jenkins para compilar imágenes y aplicar manifiestos. Cuando el número de microservicios crece, la coordinación entre compilación, publicación de imágenes y despliegue se vuelve frágil: los pipelines están dispersos, los permisos son inconsistentes y la trazabilidad entre código y versión de imagen se pierde. El patrón problemático es intentar orquestar tres fases distintas (build, push, deploy) con herramientas que no comparten un modelo de estado único, lo que genera “drift” y fallos inesperados en entornos homelab o producción. ...

August 14, 2026 · Ernesto

Cómo desplegar docker-compose.yml en EC2 usando user‑data y mantener un entorno cloud‑agnostic

Problema En entornos donde la aplicación está compuesta por varios contenedores (por ejemplo, PHP‑Apache y Nginx) el proceso de despliegue suele reducirse a “pull image → run”. Cuando la arquitectura requiere orquestación ligera –docker‑compose– y la infraestructura se basa en máquinas virtuales (EC2, Compute Engine, etc.), la pregunta recurrente es cómo iniciar la pila completa desde el user‑data de la instancia. El reto es evitar pasos manuales, mantener la solución independiente de servicios gestionados (ECS, Fargate, Cloud Run) y conservar la capacidad de mover la misma configuración a otra nube sin cambios sustanciales. ...

August 12, 2026 · Ernesto

Cómo crear flujos IaC y CI/CD para homelabs con Proxmox y Docker Compose

Problema Mantener un homelab en casa implica crear máquinas virtuales, instalar servicios y actualizar configuraciones de forma manual. Cada vez que se añade un nuevo contenedor o se cambia una versión de Ubuntu, el proceso se vuelve repetitivo y propenso a errores. El patrón típico es: Provisión de VMs en Proxmox (a menudo con cloud‑init). Instalación de Docker y despliegue de stacks mediante docker-compose.yml. Configuración de accesos externos (por ejemplo, Cloudflare Tunnel). Sin una capa de automatización, reproducir el entorno en otro nodo o restaurarlo después de un fallo requiere volver a ejecutar cada paso a mano. Además, la gestión de secretos y la separación entre entornos de desarrollo y producción suele quedar a medias, lo que complica la evolución del laboratorio. ...

August 4, 2026 · Ernesto

Cómo optimizar la productividad en Kubernetes y GitLab CI/CD

Problema Muchos profesionales de infraestructura llegan a un punto donde la complejidad de la pila —Kubernetes, varios proveedores de nube, Terraform, Helm, Ansible y pipelines de GitLab— se vuelve una carga más que una ventaja. El síntoma típico es la sensación de “no avanzar”: tareas que deberían tomar minutos se alargan horas, los cambios se pierden en ramas con políticas diferentes y la depuración de un pod falla sin una pista clara. El cansancio mental se acumula, la curiosidad por experimentar desaparece y el miedo a una entrevista técnica se vuelve constante. No es un caso aislado; es el patrón de sobrecarga operativa que afecta a equipos medianos y a sysadmins con más de cinco años de experiencia. ...

July 10, 2026 · Ernesto

Cómo desplegar self‑hosted GitHub Actions runners en Lambda MicroVMs

Problema Muchas organizaciones usan GitHub Actions como motor de CI/CD, pero los runners gestionados por GitHub tienen tres limitaciones que aparecen con frecuencia: Coste por minuto que supera al de alternativas serverless cuando el flujo de trabajo es intensivo. Límite de tiempo (6 h) que impide jobs de larga duración, como compilaciones de firmware o pruebas de integración extensas. Compromiso de facturación de 60 s, lo que penaliza pipelines con etapas cortas y alta concurrencia. El patrón típico es: un equipo necesita ejecutar jobs de forma esporádica, con diferentes arquitecturas (ARM64 vs x86) y sin mantener infraestructura permanente. La solución ideal sería un runner que aparezca sólo cuando hay trabajo, se apague inmediatamente después y cueste lo menos posible. ...

July 2, 2026 · Ernesto

Cómo diseñar una hoja de ruta de aprendizaje para DevOps Engineer

Problema Muchos profesionales que inician en DevOps llegan con conocimientos básicos de contenedores y control de versiones, pero sin una guía clara sobre qué aprender a continuación. El resultado suele ser una lista larga y desordenada de tecnologías (Kubernetes, Terraform, Ansible, AWS, Prometheus, etc.) que se estudian sin orden ni objetivo. Esa dispersión genera frustración, pérdida de tiempo y, a la larga, lagunas críticas en habilidades que los equipos de producción realmente exigen. ...

July 1, 2026 · Ernesto

Cómo diagnosticar y solucionar fallos silenciosos en self‑hosted GitHub Actions runners en EKS

Problema Los pipelines de CI/CD que usan self‑hosted GitHub Actions runners dentro de un clúster EKS pueden quedar en estado “Waiting for a runner” o consumir recursos inesperados sin que aparezca ningún error en los logs. El síntoma típico es que los pods del runner aparecen “Running”, reportan “Connected to GitHub”, pero los jobs nunca se asignan. En otros casos los nodos se provisionan con el tipo de instancia equivocado (on‑demand en lugar de Spot) o la infraestructura completa se vuelve inestable cuando el clúster escala a cero. Estos fallos son “silenciosos”: el control plane muestra verde, pero la causa real está oculta en configuraciones de IAM, Helm, taints o en la interacción entre Karpenter y Terraform. ...

June 15, 2026 · Ernesto

Cómo orquestar el aprovisionamiento de VMs en entornos multi‑hypervisor con Terraform, Ansible y Slack

Problema Los equipos que gestionan infraestructuras híbridas suelen mezclar hipervisores distintos (VMware, Proxmox, Nutanix, etc.) por motivos de coste, licencias o migraciones parciales. Cada plataforma expone su propia API y sus propias herramientas de automatización. Cuando los procesos de aprovisionamiento se fragmentan entre scripts SSH heredados, playbooks de Ansible disparados manualmente y módulos de Terraform aislados, aparecen varios síntomas: falta de trazabilidad, reintentos manuales, logs dispersos y dificultad para añadir pasos como registro DNS o notificaciones. El reto es crear un flujo único donde la definición de la VM sea declarativa, la configuración sea idempotente y los eventos de éxito o fallo se notifiquen de forma consistente. ...

June 11, 2026 · Ernesto