es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cloud Run establece parcialmente las variables de entorno a través de Github Actions.

Estoy jugando con Github Actions y Cloud Run para automatizar mis tareas. He creado un repositorio en Github y preparado dos flujos de trabajo. Uno para DEV y otro para… llamémoslo entorno PROD.

El flujo de trabajo despliega y ejecuta un contenedor con variables que están codificadas directamente:

  • name: Desplegar en Cloud Run
    run: |-
    gcloud run deploy ${{ env.SERVICE }} \
    –region ${{ env.REGION }} \
    –image gcr.io/${{ env.PROJECT_ID }}/${{ env.SERVICE }}:${{ github.sha }} \
    […]
    –set-env-vars "X=testvar1" \
    –set-env-vars "Y=testvar2" \
    –set-env-vars "Z=testvar3" \

El problema que estoy teniendo es que el entorno DEV funciona bien. Cada vez que desencadeno la acción para DEV termina exitosamente, el servicio de cloud run está operativo y puedo pedir acceso a mi aplicación en GCP.

Cuando despliego de una manera literal y exactamente igual en un entorno prod, este paso anterior falla. Cuando depuro más sobre esto, voy a la pestaña de Variables y Secretos en la instancia de Cloud Run para este servicio fallido y ahí faltan estas variables de entorno. Cuando las añado manualmente a través de la consola de GCP y vuelvo a desplegar, el servicio funciona bien.

Esto debería hacerse automáticamente como en el entorno DEV. Además, cuando activo la acción de github de nuevo para prod, reemplaza la imagen de docker y estas variables de entorno que he definido manualmente se pierden y tengo que volver a definirlas a través de la consola.

No se han realizado configuraciones de seguridad adicionales. Se trata de una aplicación Express simple hecha en NodeJS. Todo es literalmente lo mismo en cuanto a flujos de trabajo de Github (archivos YAML), el archivo Dockerfile es el mismo, el proyecto de GCP también.

¿Cuál podría ser la causa de esto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema parece estar relacionado con que las variables de entorno no están correctamente establecidas durante el despliegue en el entorno PROD. Esto podría ser causado potencialmente por un problema de configuración o de configuración incorrecta en el archivo de flujo de trabajo.

    Una solución potencial podría ser intentar establecer las variables de entorno explícitamente en el archivo de flujo de trabajo en lugar de confiar en la bandera --set-env-vars durante el despliegue. Esto se puede hacer utilizando la palabra clave env en el archivo de flujo de trabajo, de la siguiente manera:

    env:
      X: "testvar1"
      Y: "testvar2"
      Z: "testvar3"
    

    Otra solución potencial podría ser verificar si las variables de entorno están correctamente configuradas en la instancia de Cloud Run para el entorno PROD. Esto se puede hacer navegando a la instancia de Cloud Run en la consola de GCP, yendo a la pestaña “Variables y secretos” y comprobando si las variables de entorno esperadas están presentes. Si no están presentes, entonces pueden necesitar ser añadidas manualmente o el proceso de despliegue puede necesitar ser ajustado para establecerlas correctamente.

    También puede ser útil comparar las configuraciones entre los entornos DEV y PROD para identificar cualquier diferencia o configuración incorrecta potencial.

Comments are closed.