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)