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

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:
- EKS Cluster Deployment: Utilizar el comando eksctl para crear un cluster en EKS y manejar kubernetes en AWS.
- Load Balancer Configuration: Configurar AWS Application Load Balancer (ALB) para el clúster EKS.
- 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.