leanmind logo leanmind text logo

Blog

BDD

Behaviour-driven Development es una técnica para tomar mejores requisitos de producto.

Episodio 1: Configurando Google Cloud Deployment

Por Jose Francisco Rodríguez Hernández

En este artículo, que será la primera parte de una serie, aprenderemos a configurar Google Cloud para desplegar nuestra aplicación en la nube. A lo largo de esta primera entrega, abordaremos los pasos esenciales para preparar nuestro entorno en Google Cloud, asegurándonos de que esté listo para alojar nuestra aplicación. En la segunda parte de esta serie, explicaremos en detalle cómo configurar GitHub Actions para que nuestra aplicación se despliegue automáticamente, facilitando así un flujo de trabajo continuo y eficiente.

Contexto

El proyecto en el que estaba trabajando surgió la necesidad de desplegar la aplicación en Google Cloud. Con la necesidad añadida de que cada vez que hacíamos un nuevo un nuevo merge a nuestra rama de ‘prod’ se desplegase dicha versión. Es por ello que tuvimos que crear una GitHub Action y configurar el entorno de Google para poder realizarlo.

En este artículo cubriremos todos los pasos necesarios para configurar el entorno de Google Cloud correctamente, además de desglosar el Action de GitHub y los distintos pasos que la contienen.

Configuración de Google Cloud

Es necesario que tengamos configurado la facturación de nuestra cuenta de Google Cloud, ya que los servicios que vamos a utilizar lo requieren.

Es probable que el uso de estos servicios no sea 100% gratuito y conlleve algunos gastos.

Crear Workload Identity Federation

Workload Identity Federation (WIF) es la manera de darle acceso a tus cargas de trabajo en Google Cloud sin utilizar una key de tus cuentas de servicio. Esto hace que no tengamos que rotar estas keys ya que nuestros servicios obtienen los permisos a través de un grupo de identidades y una cuenta de servicio.

  1. Debemos asegurarnos de que el módulo de IAM y Administración esté activo.

  2. Una vez activo debemos dirigirnos al menú de Workload Identity Federation.

  3. Ahora procedemos a crear nuestro nuevo Grupo de identidades.

    create_wif

    1. Debemos elegir el nombre, el identificador y una descripción.

      create_wif_first

    2. Ahora procedemos a configurar el proveedor de identidades. Hay varias opciones, en nuestro caso vamos a utilizar Open ID Connect (OIDC) y utilizaremos el proveedor que nos facilita Github.

    Vamos a necesitar esta URL para nuestra configuración. Este es el proveedor de tokens de GitHub. https://token.actions.githubusercontent.com

    create_wif_second

    1. Por último podemos configurar y mapear distintos atributos que provienen del token de GitHub. El único parámetro obligatorio es el primero (assertion.sub), el resto son opcionales, pero he decidido añadirlos puesto que luego utilizaremos el repositorio para aceptar peticiones de nuestro repositorio de GitHub.

      create_wif_third

    2. Debemos ejecutar el siguiente comando en la consola de Google Cloud, para obtener la URL de nuestro proveedor que debemos usar posteriormente en nuestro Action de GitHub.

      gcloud iam workload-identity-pools providers describe <"YOUR_PROVIDER_NAME"> \
        --project=<"YOUR_PROJECT_ID"> \
        --location="global" \
        --workload-identity-pool=<"YOUR_IDENTITY_POOL_NAME"> \
        --format="value(name)"
      

    La salida de este comando debemos guardarla, ya que la vamos a utilizar luego, y debería lucir similar a esto:

    projects/<UUID>/locations/global/workloadIdentityPools/<YOUR_IDENTITY_POOL_NAME>/providers/<YOUR_PROVIDER_NAME>
    

Crear Service Accounts

¡Genial! Ya tenemos la mitad de la configuración hecha, ahora solo nos queda crear la cuenta de servicio que se va a utilizar y asignarle sus permisos correspondientes.

  1. Debemos dirigirnos hacia el apartado de Service Accounts en el menú de IAM y administración y luego pulsar el botón para crear una cuenta nueva.

    service_account_menu

  2. Ahora rellenamos los datos necesarios para crear la cuenta de servicio.

    create_service_account_first

  3. Debemos darle los siguientes permisos a la cuenta de servicio que acabamos de crear:

    create_service_account_second

  4. En el último paso no haremos nada ya que le daremos permisos al usuario en el paso siguiente.

    create_service_account_third

Dando permisos al usuario que utilizará la Service Account

Nos dirigimos al apartado de IAM y pulsamos el botón de dar acceso

grant_principal_permissions

Se abrirá el menú a la derecha aquí debemos rellenar lo siguiente:

grant_principal_permissions_second

Para el campo de principals debemos de rellenarlo con :

principalSet://iam.googleapis.com/projects/<UUID>/locations/global/workloadIdentityPools/<YOUR_WORKLOAD_IDENTITY_POOL>/attribute.repository/<YOUR_GITHUB_REPOSITORY>

Este Identificador es una URI que representa una entidad principal en Google Cloud IAM dentro del contexto del servicio de federación de identidades de carga de trabajo (Workloads Identity Pool).

En resumen, este URI se utiliza para identificar y gestionar de manera única las autorizaciones y configuraciones de identidades en el contexto del servicio de federación de identidades de carga de trabajo en Google Cloud, con referencias específicas al proyecto, el conjunto de identidades, y un repositorio de atributos, potencialmente vinculado a un repositorio en GitHub.

Para el campo del rol debemos seleccionar “Workload Identity User”

grant_principal_permissions_second

Con esto ya tendríamos configurada nuestra cuenta de servicio.

Configuración del Artifact Registry

Necesitamos crear un nuevo repositorio en el Artifact Registry, ya que es aquí donde se alojarán las imágenes de Docker de nuestra aplicación para luego ser desplegadas en el servicio de Cloud Run.

Para crearlo debemos dirigirnos al módulo de Artifact Registry y hacemos clic en “crear repositorio”.

create_artifact_registry

Rellena el formulario para crear el repositorio. Debes elegir el nombre y la región donde va a estar alojado.

create_artifact_registry_form

Es recomendable definir una política de limpieza de imágenes, ya que dependiendo de la frecuencia con la que creemos las imágenes puede crecer muchísimo y acarrear costes innecesarios.

Publicado el 31/03/2025 por
Jose Francisco image

Jose Francisco Rodríguez Hernández

¿Quieres más? te invitamos a suscribirte a nuestro boletín para avisarte cada vez que recopilemos contenido de calidad que compartir.

Si disfrutas leyendo nuestro blog, ¿imaginas lo divertido que sería trabajar con nosotros? ¿te gustaría?

Impulsamos el crecimiento profesional de tu equipo de developers