Geisemberg Marcos Zamora Yuave
Geisemberg Marcos Zamora Yuave
Geisemberg Marcos Zamora Yuave
¿Por qué es mejor separar las Actions?
Imagina que tienes un restaurante y un solo interruptor apaga o enciende la cocina, el comedor y los baños al mismo tiempo. Si solo quieres cambiar un foco en el baño, terminarías apagando todo el restaurante. Lo mismo ocurre con los microservicios. Si agrupas todos los despliegues en un solo archivo YAML de GitHub Actions, cualquier pequeño cambio en el servicio de usuarios obligaría a recompilar y redesplegar el servicio de pagos, el de inventario y el de notificaciones.
Al crear un flujo de trabajo independiente para cada microservicio, garantizas que el ciclo de integración y entrega continua (CI/CD) sea verdaderamente modular. Si haces un commit en la carpeta de un servicio específico, solo ese contenedor se construye y se envía a Azure Container Apps. Esto ahorra minutos valiosos de cómputo en GitHub, reduce el riesgo de romper servicios estables y te permite rastrear exactamente qué despliegue falló sin tener que descifrar un log gigante de múltiples aplicaciones.
¿Puedo usar Docker para guardar mis secretos?
Definitivamente no. Guardar secretos directamente dentro de una imagen de Docker (por ejemplo, copiando un archivo appsettings.json con credenciales reales durante el docker build) es una vulnerabilidad crítica de seguridad.
Las imágenes de Docker funcionan como plantillas inmutables. Si alguien obtiene acceso a tu registro de contenedores (como DockerHub), podría descargar la imagen, inspeccionar sus capas y extraer tus contraseñas, tokens o cadenas de conexión en texto plano. En su lugar, la imagen de Docker debe ser completamente agnóstica al entorno. Debe contener solo el código y las dependencias, como un motor de auto vacío. El "combustible" (los secretos y configuraciones) se inyecta en tiempo de ejecución a través de variables de entorno directamente en la plataforma de alojamiento, asegurando que la misma imagen pueda viajar desde desarrollo hasta producción sin exponer datos sensibles.
¿Cómo inyectar secretos sin exponer el código?
La regla de oro en seguridad es nunca subir archivos como appsettings.json a tu repositorio si contienen contraseñas o cadenas de conexión de bases de datos. En su lugar, debes usar el almacén de Secrets de GitHub.
Piensa en los secretos como una caja fuerte a la que solo el servidor de despliegue tiene la combinación. Durante la ejecución de tu GitHub Action, extraes estos valores de la caja fuerte y se los pasas directamente al comando de despliegue (por ejemplo, az containerapp up) utilizando el parámetro de variables de entorno.
A nivel de código, tu aplicación en .NET debe estar preparada para leer estas variables. Usando builder.Configuration, el sistema intentará buscar la cadena de conexión localmente, pero si no la encuentra (como ocurrirá en el contenedor en la nube), automáticamente tomará el valor inyectado por la variable de entorno. Así mantienes tu código limpio, público y 100% seguro.