En el post anterior hicimos un cluster AWS EKS con terraform. Como lo que nos gusta aquí es el tema de automatización, vamos a crear el pipeline de CD con Jenkins, les motraré 2 maneras de hacerlo, en este primer post vamos a hacerlo usando Secrets de Jenkins.
Explicación del Pipeline
El Pipeline -> repositorio github (puede ser cualquier repositorio de git) -> Terraform (init, plan, apply/destroy) -> kubectl test
Requisitos
Para Jenkins estoy usando el contenedor de Jenkins.
Los Plugins que tengo para este ejemplo son:
* Pipeline: GitHub Groovy Libraries * Pipeline: Stage view * Terraform Plugin (opcional)
Nota: En mi caso yo tengo los binarios de terraform y kubectl en el directorio jenkins_home/terraform-bin y jenkins_home/kubectl-bin/.
Aquí abajo te dejo el video para que veas la configuración en caso que tengas dudas:
Configuración de Credenciales en Jenkins
Primero configuramos las credenciales vamos a Manage Jenkins -> Credentials -> System -> Global credentials y damos click en Add Credentials.
Con la siguiente información:
Configuración de Pipeline CD
Damos click en Dashboard -> All -> New Item.
Le damos un nombre al nuevo item y seleccionamos Pipeline.
Ahora seleccionamos el checkbox GitHub project -> y ponemos la URL de nuestro repositorio.
También damos click en el checkbox This project is parameterized -> y le damos los siguiente valores.
Esto nos servirá para que desde el mismo pipeline podemos crear y destruir la infraestructura de AWS EKS, esto te puede servir para los equipos no productivos por ejemplo.
Y en la sección de Pipeline escribimos el siguiente código:
pipeline { agent any environment { AWS_ACCESS_KEY_ID = credentials('SECRET-ACCESS-KEY-ID') AWS_SECRET_ACCESS_KEY = credentials('SECRET-ACCESS-KEY') } stages { stage('Checkout') { steps { git 'https://github.com/ahioros/terraform-aws-eks/' } } stage('Terraform init') { steps { sh '/var/jenkins_home/terraform-bin/terraform init -no-color' } } stage('Terraform plan') { steps{ sh '/var/jenkins_home/terraform-bin/terraform plan -var="config_key=config.json" -no-color' } } stage('Terraform apply') { steps { sh '/var/jenkins_home/terraform-bin/terraform ${action} -auto-approve -var="config_key=config.json" -no-color' } } stage('kubectl test') { steps { script { if (action.toString() == "apply") { sh '/var/jenkins_home/kubectl-bin/kubectl --kubeconfig ./template/kubeconfig.yaml get all -A' } else { echo 'skipping kubectl test' } } } } } }
Por último le das click en save.
Despliegue del cluster EKS
Listo para ejecutar el pipeline solo debes ir Dashboard -> AWS-Terraform (o el nombre que le hayas puesto al pipeline) -> en el menú izquierdo le das click en Build With Parameters
Seleccionamos apply (que debe estar por default) y damos click en Build.
Ahora te tocará esperar unos 10-12 minutos en lo que se crea la infraestructura.
Destrucción del cluster EKS
En la misma pantalla donde le diste click en el botón Build, en el combobox seleccionamos destroy y damos click en Build.
Listo en el siguiente post te mostraré otra forma para construir la infraestructura utilizando otros Plugins de Jenkins.
Top comments (0)