Implementación de una aplicación SpringBoot en Amazon EKS mediante GitHub, Jenkins, Maven y Docker

Cristhian C. M.
5 min readNov 4, 2023

Paso 1: Crear una instancia Ubuntu

Creamos una instancia de tipo t2.medium y habilitamos el trafico HTTP, HTTPS.

Paso 2: Instalar JDK 11

sudo apt update -y
wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | tee /etc/apt/keyrings/adoptium.asc
echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
sudo apt update -y
sudo apt install temurin-17-jdk -y
java --version

Paso 3: Instalar y configurar Jenkins

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update -y
sudo apt-get install jenkins -y
sudo systemctl start jenkins
sudo systemctl status jenkins

Necesitamos ir a nuestro grupo de seguridad de nuestra instancia y agregar el puerto 8080 en las reglas de seguridad de entrada.

Luego acceder a Jenkins mediante la ip publica de la instancia.

http://{IP-INSTANCIA}:8080

Para obtener el password ejecutar en siguiente comando en el terminal de la instancia , para luego proseguir con la instalación.

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Creamos un usuario para poder ingresar a la herramienta.

Paso 4—Actualizar visudo y asignar privilegios administrativos al usuario jenkins

Abre el archivo /etc/sudoersen modo vi

sudo vi /etc/sudoers

Agregue la siguiente línea al final del archivo

jenkins ALL=(ALL) NOPASSWD: ALL

Después de agregar la línea, guarde y cierre el archivo con :wq!

Ahora podemos usar Jenkins como usuario root y para eso ejecutar el siguiente comando

sudo su - jenkins

Paso 5— Instalar Docker con el usuario jenkins

Ejecutar los siguientes comandos con el usuario Jenkins

sudo apt-get update
sudo apt-get install docker.io -y
sudo usermod -aG docker jenkins
newgrp docker
sudo chmod 777 /var/run/docker.sock

Paso 6: Instalar y configurar AWS y EKS CLI

sudo apt install awscli
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
sudo apt install unzip
unzip awscliv2.zip
sudo ./aws/install --update
aws --version

Luego de instalar AWS CLI lo siguiente es configurar nuestro AWS CLI para que pueda autenticarse y poder comunicarse con el entorno AWS.

aws configure

Paso 7: Instalar y configurar kubectl

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin
kubectl version

Paso 8: Crear Cluster en EKS utilizando eksctl

Primero debemos de instalar eksctl para luego empezar a crear nuestro cluster en AWS EKS.

curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
eksctl version
eksctl create cluster --name new-eks-cluster --version 1.25 --region us-east-2 --nodegroup-name worker-nodes --node-type t2.micro --nodes 2

La creación del cluster y nodos demora aproximadamente 15 a 20 minutos.

Step 9: Agregar el rol IAM de EKS a la instancia.

Crear un rol con permisos de administrador.

Luego de haber creado el rol , se tiene que asociar a la instancia creada.

Step 10: Añadir las credenciales de Docker Hub y GitHub en Jenkins.

En Docker Hub crearemos un token de acceso para poder realizar la comunicación entre Docker Hub con Jenkins.

De igual forma se registrara las credenciales de GitHub

Step 11: Añadir Maven en Global Tool Configuration

Ir a la siguiente ruta Dashboard -> Manage Jenkins -> Tools

Step 12 : Build, Deploy and Test Jenkins Pipeline

Lo siguiente sera crear una nueva canalización:

Step 13: Añadir Webhook para el despliegue automático

Nos dirigimos a nuestro repositorio hacemos click en la sección Settings y luego en la opción Webhooks y le dan click en añadir webhook.

En Payload poner la ip de nuestro Jenkins seguido de github-webhook/

Step 14 : Eliminar nuestro cluster de EKS

eksctl delete cluster --name new-eks-cluster

Espero que te pueda ser útil este tutorial , si es posible compártelo para que otros desarrolladores puedan realizarlo.

Si tienes algún duda ,comentario, puedes escribirme a mi LinkedIn.

Cristhian Caldas Mendoza.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Cristhian C. M.
Cristhian C. M.

Written by Cristhian C. M.

💯✔️☁️x2 AWS Certified (Solutions Architect, Developer) | OCA Java 8 | Software Engineer ✔️☁️

Responses (1)

Write a response

Hello, sorry for coming to the comment section without you prior notice 🫣...but I guess this question need to be ask Do you struggle to gain reader and views on medium ? If yes
I am social media promoter (medium), I will gain your article organic…