Despliega tu proyecto AWS CDK desde GitLab

Desplegar tu proyecto utilizando los flujos de CD&CI de los servicios de repositorio nos ayuda mucho en nuestro día a día como DevOps, hoy te traigo un pequeño tutorial práctico que te ayudará a realizar un despliegue de tu proyecto AWS CDK desde Gitlab

Configurando las credenciales de AWS

Comenzaremos por generar nuestras access keys en el IAM de AWS, si tienes dudas respecto a este paso puedes consultar este post de AWS que explica paso a paso como generar una cuenta y crear las Access Keys.

Agregando nuestras credenciales a GitLab

1. Crearemos un repositorio en GitLab, en mi caso lo llamaré deploy-gitlab-cdk-example

2. Una vez creado el repositorio procedemos a agregar un par de variables al proceso de CI&CD de GitLab. Desde la pantalla inicial de nuestro repo Ingresamos a Settings → CI/CD → En la sección de Variables, expandimos dando clic en el botón Expand.

AWS CDK desde GitLab - Configurar Gitlab

3. Aquí agregaremos nuestro Access Key de AWS como variables dando clic en el botón Add Variable.

AWS CDK desde GitLab - Agregandoi variables

4. Agregamos 2 variables una para el Access Key y otra para el Secret Key, llenando los campos de la siguiente manera:

AWS CDK desde GitLab - Agregar claves
AWS CDK desde GitLab - Agregando claves 2

El proyecto a desplegar

Vamos a utilizar un pequeño proyecto que venimos trabajando en días anteriores, que consta de una pequeña página web que se despliega en AWS, utilizando un bucket s3 y Cloud Front. Si no has desarrollado ese ejercicio, te recomiendo antes de continuar asegurarte que puedas desplegar ese proyecto siguiendo los pasos de dicha publicación, y después integrar lo que mencionamos en este proyecto.

1. Comenzaré clonando mi repositorio en mi entorno local para poder agregar los archivos que formarán parte de mi sitio web.

git clone [email protected]:gumonet/deploy-cdk-example.git

2. Agregamos los archivos de nuestro proyecto, siguiendo los pasos del post anterior, quedando nuestra estructura de esta manera.

Preview Visual Studio

3. Ya teniendo nuestro código cargado y configurado, procedemos a agregar nuestro archivo pipeline para indicarle a GitLab las instrucciones de despliegue. Procedemos a crear en la raiz de nuestro un nuevo archivo llamado .gitlab-ci.yml Lo abrimos y agregamos lo siguiente:

image: node:20 #Definimos la versión de node que utilizara nuestro pipeline
cache:
  paths:
  - node_modules/

stages:
  - deploy #Indicamos el orden en el que correrábn los stages

deploy: #Creamos el stage deploy
  only: #Vamos a indicarle a Gitlab que este stage solo se ejecute cuando se actualice la rama main
   - main
  stage: deploy
  variables: #Agregamos una variable de entorno en donde indicamos en que región se desplegará nuestro proyecto
    CDK_DEPLOY_REGION: 'us-east-1'
  before_script: #Antes de ejecutar el script de despliegue le indicamos que instale el cli de cdk
    - npm install -g aws-cdk@latest
  script: # Definimos el scrip de ejecución con los pasos para nuestro despliegue
    - cd infra/
    - npm install
    - npm run build
    - cdk synth
    - cdk deploy --require-approval never

4. Hacemos un commit de nuestros cambios y enviamos todo a nuestro repositorio. Esto deberá de iniciar un nuevo Job que podemos ver en la sección Build → Jobs de nuestro repositorio.

Lista de Jobs

5. Dando clic en el Job podemos ver el progreso de nuestro despliegue.

AWS CDK desde GitLab - Resultado del despliegue

6. Una vez que esto finalicé y si todo anda bien, veremos que el status del deploy se pinta en color verde.

AWS CDK desde GitLab - Despliegue success

7. Al final del output del Job veremos el link de nuestro proyecto, ingresamos a él y veremos nuestro despliegue finalizado.

Obtener la url
Proyecto desplegado
cd infra #Ingresas al directorio infra
cdk destroy #ejecutas el destroy

De igual manera puedes ingresar a tu consola de AWS, dirigirte al servicio Cloud Formation, encontrar el proyecto que desplegaste y lo seleccionamos dando clic en el Radio Button y posteriormente lo eliminamos presionando el botón Delete.

Eliminar stack

Esto comenzará a remover cada componente y configuración de nuestro Stack, solo esperamos a que finalicé y listo.

Elimiar stack

Por último, aquí te dejo el código fuente para que puedas apoyarte en caso de que tengas dudas. https://gitlab.com/gumonet/deploy-cdk-example/