Proyecto Avanzado End to End Three-Tier , AWS EKS, Jenkins, Sonar — Parte III

Cristhian C. M.
4 min readJan 7, 2025

--

Introducción al Proyecto:
La guía del proyecto Kubernete End to End . En este proyecto integral, vamos a recorrer todo el proceso de configuración de una sólida arquitectura de tres niveles en AWS utilizando Kubernetes, las mejores prácticas de DevOps. Este proyecto tiene como objetivo proporcionar experiencia práctica en el despliegue la supervisión de un entorno de aplicación escalable.

Project Overview:

  1. EKS Cluster Deployment: Utilizar el comando eksctl para crear un cluster en EKS y manejar kubernetes en AWS.
  2. Load Balancer Configuration: Configurar AWS Application Load Balancer (ALB) para el clúster EKS.
  3. DNS Configuration: Configure los ajustes DNS para que la aplicación sea accesible a través de sub dominios personalizados.

Paso 01 : EKS Cluster Deployment

Dentro de nuestras maquinas tenemos que tener instalado las siguientes herramientas :

Docker

sudo apt-get update
sudo apt install docker.io
docker ps
sudo chown $USER /var/run/docker.sock

kubectl

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin
kubectl version --short --client

eksctl

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

Lo siguiente es crear nuestro cluster de Kubernetes en la región Oregon(us-west-2).La creación demorara 15 minutos aproximadamente.

eksctl create cluster --name app-cluster --version 1.28 --region us-west-2 --node-type t2.medium --nodes-min 2 --nodes-max 2
aws eks update-kubeconfig --region us-west-2 --name app-cluster
kubectl get nodes

Lo siguiente es crear nuestro namespace donde se creara todos nuestros recursos .

kubectl create namespace workshop

En el siguiente repositorio se encuentra los manifiesto para poder crear nuestros recursos backend , frontend y base de datos.

descargamos las fuentes y nos dirigimos a la carpeta database y ejecutamos el siguiente código.

kubectl apply -f .

luego realizamos el mismo paso para ejecutar nuestro backend.

Nos dirigimos a la carpeta backend y ejecutamos el siguiente código

kubectl apply -f .

para poder ver los pods que se han ido creando ejecutamos el siguiente comando.

kubectl get pods -n workshop

luego realizamos los mismos pasos para ejecutar nuestro frontend.

Paso 02 : Load Balancer Configuration

Install AWS Load Balancer

curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.9.2/docs/install/iam_policy.json
aws iam create-policy --policy-name AWSLoadBalancerControllerIAMPolicy --policy-document file://iam_policy.json
eksctl utils associate-iam-oidc-provider --region=us-west-2 --cluster=app-cluster --approve
eksctl create iamserviceaccount --cluster=app-cluster --namespace=kube-system --name=aws-load-balancer-controller --role-name AmazonEKSLoadBalancerControllerRole --attach-policy-arn=arn:aws:iam::818929933852:policy/AWSLoadBalancerControllerIAMPolicy --approve --region=us-west-2

Deploy AWS Load Balancer Controller

sudo snap install helm --classic
helm repo add eks https://aws.github.io/eks-charts
helm repo update eks
helm install aws-load-balancer-controller eks/aws-load-balancer-controller -n kube-system --set clusterName=app-cluster --set serviceAccount.create=false --set serviceAccount.name=aws-load-balancer-controller
kubectl get deployment -n kube-system aws-load-balancer-controller

luego dentro de nuestro repositorio donde se encuentra los manifiesto nos dirigimos a la carpeta donde se encuentra el archivo ingress.yaml y ejecutamos en el siguiente código.

kubectl apply -f ingress.yaml

Paso 03 : DNS Configuration

kubectl get ing -n workshop

copiamos el valor de ADDRESS para realizar la configuración en nuestro proveedor de dominio en mi caso godaddy.

Nota: Se ha creado un subdominio challenge.cristhian-caldas.com

Ahora, podemos acceder a nuestro subdominio para poder la aplicación.

Cleanup

Para poder eliminar todo los recursos creados ejecutar el siguiente código.

eksctl delete cluster --name app-cluster --region us-west-2

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.

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 ✔️☁️

No responses yet

Write a response