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.
3. Aquí agregaremos nuestro Access Key de AWS como variables dando clic en el botón Add Variable.
4. Agregamos 2 variables una para el Access Key y otra para el Secret Key, llenando los campos de la siguiente manera:
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.
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.
5. Dando clic en el Job podemos ver el progreso de nuestro despliegue.
6. Una vez que esto finalicé y si todo anda bien, veremos que el status del deploy se pinta en color verde.
7. Al final del output del Job veremos el link de nuestro proyecto, ingresamos a él y veremos nuestro despliegue finalizado.
“Una vez finalizada la práctica recuerda remover todos los recursos de tu cuenta de AWS, puedes hacerlo fácilmente desde tu entorno local ejecutando los comandos”
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.
Esto comenzará a remover cada componente y configuración de nuestro Stack, solo esperamos a que finalicé y listo.
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/