Pipeline CD en Jenkins para terraform AWS EKS
Guillermo Garcia

Guillermo Garcia @ahioros

About: Linkedin -> https://www.linkedin.com/in/guillermogarcialedezma/ Github -> https://github.com/ahioros X -> https://twitter.com/ahioros

Joined:
May 12, 2024

Pipeline CD en Jenkins para terraform AWS EKS

Publish Date: Dec 10 '24
0 0

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)
Enter fullscreen mode Exit fullscreen mode

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'

                    }

                }

            }

        }

    }
}
Enter fullscreen mode Exit fullscreen mode

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.

Comments 0 total

    Add comment