Logo

dev-resources.site

for different kinds of informations.

Pipeline CD en Jenkins para terraform AWS EKS

Published at
12/10/2024
Categories
aws
jenkins
devops
eks
Author
ahioros
Categories
4 categories in total
aws
open
jenkins
open
devops
open
eks
open
Author
7 person written this
ahioros
open
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.

jenkins Article's
30 articles in total
Favicon
Mastering Cost Optimisation with Shell Scripting: Automate Log Storage in S3 for Budget-Friendly Infrastructure
Favicon
Can’t access username or password, forgot these credentials after installing Jenkins
Favicon
Deploying a Next.js UI App on S3 Using Jenkins🤩
Favicon
How to install Jenkins in ubuntu
Favicon
Integrating Maven with Jenkins: A Step-by-Step Guide
Favicon
"Is Jenkins better than Docker? Or are they meant for different purposes?"
Favicon
Can a Python Server (Serving HTML with Jinja2) Interact and Modify Files in a Jenkins Pipeline?
Favicon
Streamlining CI/CD: A Complete Guide to Installing Jenkins on AWS EC2
Favicon
[Boost]
Favicon
Best Practices of Optimizing CI/CD Pipelines: Jenkins Consultancy
Favicon
deploy Jenkins using docker compose with production ready
Favicon
Pipeline CD en Jenkins para terraform AWS EKS
Favicon
[Boost]
Favicon
Mastering Jenkins: A Step-by-Step Guide to Setting Up and Supercharging Your CI/CD Workflow
Favicon
13 Best DevOps Tools for Enhancing Business Processes
Favicon
A Complete Guide to Setting Up Nexus (2 Ways) + How to Connect Nexus to Jenkins
Favicon
Automating Kubernetes Deployments with CI/CD Pipelines (GitLab, Jenkins)
Favicon
Accelerate Releases with Shift-Left Validation: A Custom CI/CD Configuration Framework
Favicon
Ci CD pipeline with Jenkins
Favicon
Building a Secure and Scalable CI/CD Pipeline for EKS Using Jenkins and GitHub Actions
Favicon
Strategies for Improving Jenkins Pipeline Performance: Best Practices and Implementation
Favicon
Connecting Jenkins to Slack: A Beginner's Guide
Favicon
From 41 Minutes to 8 Minutes: How I Made Our CI/CD Pipeline 5x Faster
Favicon
Jenkins Guide for Beginners
Favicon
DevOps and Security: How To Build Resilient Pipelines
Favicon
Cómo instalar Jenkins en AWS: Guía paso a paso
Favicon
Automating Docker Workflows with Jenkins: A Complete Guide
Favicon
Top 5 Free DevOps Certification Courses to Boost Your Career!
Favicon
Jenkins with PHP – Run Your First Pipeline
Favicon
How to Manage Terraform with Jenkins

Featured ones: