Despliegue de una app en K3S en AWS EC2 con GitHub Actions y ECR

Guía práctica para desplegar una app multicontenedor en K3S sobre EC2 con CI/CD en GitHub Actions y AWS ECR, con buenas prácticas de seguridad y operación.

8 sept 2025 • 5 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

En este artículo práctico repasamos cómo desplegar una aplicación multicontenedor en un clúster K3S alojado en una instancia EC2 de AWS, integrando GitHub Actions para CI CD y AWS ECR como registro de imágenes. Además presentamos recomendaciones y buenas prácticas útiles para equipos que buscan implementar soluciones de software a medida y servicios en la nube.

Q2BSTUDIO es una empresa de desarrollo de software especializada en aplicaciones a medida y software a medida, con experiencia en inteligencia artificial, ciberseguridad y servicios cloud. Si necesitas migrar o desplegar cargas en la nube, podemos ayudarte con servicios cloud AWS y Azure y arquitecturas seguras y automatizadas.

Resumen del stack de la demo: frontend en React, backend en Node y Express, base de datos MongoDB, contenedorización con Docker, orquestación con K3S y registro de imágenes en AWS ECR. El flujo general: construir images, subir a ECR, actualizar manifiestos Kubernetes y aplicar cambios en K3S mediante un job de GitHub Actions que se comunica por SSH con la EC2.

Preparación de la instancia EC2 y K3S: actualizar el sistema, instalar K3S con el script oficial curl -sfL https://get.k3s.io | sh - y comprobar el nodo con sudo k3s kubectl get node. K3S es una distribución ligera de Kubernetes ideal para nodos con recursos limitados; soporte completo de API Kubernetes, instalación sencilla y optimizada para entornos edge y pruebas.

Instalar Docker en Ubuntu y limpiar paquetes conflictivos, configurar la key GPG de Docker, añadir el repositorio y ejecutar sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin seguido de sudo docker run hello-world para verificar la instalación.

Clonar el repositorio de demo, revisar docker compose y Dockerfiles para frontend, backend y MongoDB. El flujo de desarrollo local usa docker compose up -d para construir y ejecutar contenedores; comprobar con docker ps -a y probar la aplicación accediendo a la IP de la EC2 en el puerto mapeado para el frontend.

Antes de pasar a Kubernetes conviene ajustar variables de entorno en el frontend para que apunten a la IP o al NodePort del backend. En local se editan archivos .env y se validan las llamadas a la API desde el navegador con las herramientas de desarrollador para confirmar respuestas 200 al crear tareas o consultar endpoints.

Manifiestos Kubernetes esenciales: Deployment para api con replicas para disponibilidad y estrategia RollingUpdate, Service tipo NodePort para exponer la API, Secret para credenciales MongoDB en base64, Service headless tipo ClusterIP None y StatefulSet con PV y PVC para MongoDB para garantizar identidad estable y persistencia de datos. Adicionalmente ConfigMap para inyectar REACT_APP_API_URL al frontend y Deployment para el web con requests y limits para un correcto scheduling.

Por ejemplo, conceptos clave a incluir en los manifiestos: definir replicas, strategy RollingUpdate, selector matchLabels, volumeClaimTemplates en el StatefulSet, clusterIP None para servicio headless y uso de secretKeyRef y configMapKeyRef para no hardcodear credenciales ni endpoints.

Crear repositorio ECR: desde la consola AWS ECR crear repositorio privado, anotar el endpoint y autenticar Docker con aws ecr get-login-password --region region | docker login --username AWS --password-stdin ACCOUNT.dkr.ecr.region.amazonaws.com. Es recomendable configurar políticas de retención y escaneo de imágenes automático.

Pipeline de GitHub Actions: pasos principales son checkout del repo, preparar buildx, autenticación en ECR con aws-actions/amazon-ecr-login, generar un tag de imagen con timestamp, construir y etiquetar las imágenes con docker compose build y docker tag, escanear con Trivy, push a ECR y finalmente ejecutar comandos por SSH en la EC2 para actualizar los manifiestos y aplicar kubectl apply -f. En el job remoto conviene sustituir en los YAML solo la parte image para mantener trazabilidad de los manifiestos y versionado.

Configurar secrets en GitHub: AWS_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, ECR_REGISTRY, EC2_HOST, EC2_USER, EC2_SSH_KEY entre otros. En la EC2 crear el secret mongo-secret con kubectl create secret generic mongo-secret --from-literal=username=admin --from-literal=password=clave segura para evitar exponer credenciales en texto plano dentro de los manifiestos.

Buenas prácticas operativas: usar namespaces para separar entornos, health checks readiness y liveness probes, recursos requests y limits, backups de volúmenes para bases de datos, control de acceso a ECR mediante roles IAM y rotación de claves, y escaneos automáticos de seguridad en la pipeline con herramientas como Trivy. Para auditoría y seguridad adicional, Q2BSTUDIO ofrece servicios de ciberseguridad y pentesting que pueden integrarse en el ciclo de despliegue para endurecer la plataforma servicios de ciberseguridad.

Al desplegar, validar con kubectl get all y kubectl rollout status deployment/web y deployment/api, comprobar que los NodePorts están accesibles desde la IP de la EC2 y que las peticiones del frontend al backend retornan códigos 200. Monitorizar logs con kubectl logs y revisar estado del StatefulSet y los PVC para confirmar persistencia de MongoDB.

Beneficios de esta arquitectura: despliegue reproducible y automatizado, control de versiones de imagen y manifiestos, escalabilidad del backend mediante replicas, persistencia garantizada para MongoDB y posibilidad de implementar estrategias de despliegue como blue green o canary si se desea mayor seguridad en la entrega. Además, combinando K3S con pipelines GitHub Actions y ECR se obtiene un flujo CI CD ligero y efectivo para entornos de pruebas y producción ligera.

En Q2BSTUDIO desarrollamos soluciones a medida, desde la automatización de procesos hasta proyectos complejos de inteligencia artificial e inteligencia de negocio con Power BI. Si te interesa implementar agentes IA o IA para empresas que integren modelos en tus aplicaciones, podemos ayudarte a diseñar la arquitectura y la pipeline de despliegue necesaria. Consulta nuestros servicios de inteligencia artificial para empresas y proyectos a medida en inteligencia artificial.

Palabras clave: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi. Si quieres que Q2BSTUDIO te acompañe en la implantación, auditoría o migración de tus aplicaciones a una arquitectura basada en contenedores y nube, contacta para una evaluación personalizada y una propuesta de valor alineada con tus objetivos de negocio.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat