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.
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.
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.
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.
Debemos asegurarnos de que el módulo de IAM y Administración esté activo.
Una vez activo debemos dirigirnos al menú de Workload Identity Federation.
Ahora procedemos a crear nuestro nuevo Grupo de identidades.
Debemos elegir el nombre, el identificador y una descripción.
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
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.
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>
¡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.
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.
Ahora rellenamos los datos necesarios para crear la cuenta de servicio.
Debemos darle los siguientes permisos a la cuenta de servicio que acabamos de crear:
En el último paso no haremos nada ya que le daremos permisos al usuario en el paso siguiente.
Nos dirigimos al apartado de IAM y pulsamos el botón de dar acceso
Se abrirá el menú a la derecha aquí debemos rellenar lo siguiente:
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).
iam.googleapis.com
: Indica que se trata de un recurso gestionado por IAM en Google Cloud.projects/<UUID>
: Identifica el proyecto de Google Cloud asociado con este recurso, donde <UUID>
es un identificador único para el proyecto.locations/global
: Especifica la ubicación global del recurso, indicando que está disponible en todo el mundo.workloadIdentityPools/<YOUR_WORKLOAD_IDENTITY_POOL>
: Se refiere al conjunto de identidades de carga de trabajo (Workload Identity Pool) con un nombre específico que reemplaza <YOUR_WORKLOAD_IDENTITY_POOL>
.attribute.repository/<YOUR_GITHUB_REPOSITORY>
: Hace referencia a una entidad específica dentro del conjunto de identidades, donde <YOUR_GITHUB_REPOSITORY>
es el nombre del repositorio en GitHub asociado con esta entidad.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”
Con esto ya tendríamos configurada nuestra cuenta de servicio.
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”.
Rellena el formulario para crear el repositorio. Debes elegir el nombre y la región donde va a estar alojado.
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.
¿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?
Pero espera 🖐 que tenemos un conflicto interno. A nosotros las newsletter nos parecen 💩👎👹 Por eso hemos creado la LEAN LISTA, la primera lista zen, disfrutona y que suena a rock y reggaeton del sector de la programación. Todos hemos recibido newsletters por encima de nuestras posibilidades 😅 por eso este es el compromiso de la Lean Lista