DEV Community

Guillermo Garcia
Guillermo Garcia

Posted on • Originally published at ahioros.info on

Pipeline CD en Jenkins para terraform AWS EKS

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.

Top comments (0)