To install a Kubernetes Cluster on AWS EKS using eksctl, you can follow these steps. This guide is structured similarly to the one from ComputingForGeeks, ensuring all necessary steps are covered.

Prerequisites Link to heading

  1. AWS Account: Ensure you have an AWS account with sufficient permissions.
  2. AWS CLI: Install and configure the AWS CLI with appropriate IAM permissions.
  3. eksctl: Install eksctl.

Install AWS CLI Link to heading

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

Configure AWS CLI with your credentials: Link to heading

aws configure

Install eksctl Link to heading

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

Step 1: Create EKS Cluster Configuration File Link to heading

I choose eu-central-1 (frankfurt), you can choose your region

eks-sigma is my cluster name, you can define what you want

eksctl create cluster --name=eks-sigma \
--version 1.28 \
--region=eu-central-1 \
--zones=eu-central-1a,eu-central-1b,eu-central-1c \
--without-nodegroup

Step 2: Create Node Group Configuration Link to heading

You can create either a public or private node group depending on your requirements.

Public Node Group Configuration A public node group allows nodes to have public IP addresses and be directly accessible from the internet.

eksctl create nodegroup --cluster=eks-sigma \
--region=eu-central-1 \
--name=eks-sigma-nodegroup-public \
--node-type=t3.large \
--nodes=3 \
--nodes-min=1 \
--nodes-max=4 \
--node-volume-size=30 \
--ssh-access \
--ssh-public-key=kube-sigma \
--managed \
--asg-access \
--external-dns-access \
--full-ecr-access \
--appmesh-access \
--alb-ingress-access

Private Node Group Configuration A private node group keeps the nodes private within your VPC, without public IP addresses, enhancing security.

eksctl create nodegroup --cluster=eks-sigma \
--region=eu-central-1 \
--name=eks-sigma-nodegroup-private \
--node-type=t3.medium \
--nodes=3 \
--nodes-min=1 \
--nodes-max=4 \
--node-volume-size=30 \
--managed \
--node-private-networking \
--ssh-access \
--ssh-public-key=kube-sigma \
--asg-access \
--external-dns-access \
--full-ecr-access \
--appmesh-access \
--alb-ingress-access

Step 3: Configure kubectl Link to heading

kubectl is the command-line tool for interacting with the Kubernetes cluster. After the EKS cluster is up and running, you need to configure kubectl to communicate with your EKS cluster.

  1. Install 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/
    
  2. Enable kubectl to use your new EKS cluster:
    aws eks --region eu-central-1 update-kubeconfig --name eks-sigma
    

Step 4: Verify the Cluster and Node Group Link to heading

To verify that your cluster and node group are set up correctly, you can run the following commands:

kubectl get svc
kubectl get nodes

Step 5: Deploy a Sample Application Link to heading

Now that your cluster is up and running, you can deploy a sample application to ensure everything is working correctly.

  1. Create a deployment:
    kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
    
  2. Expose the deployment as a service:
    kubectl expose deployment hello-node --type=LoadBalancer --port=8080
    
  3. Get the service URL:
    kubectl get services hello-node
    

After deploy sample application and expose it’s service, You can check external url with expose port in your browser :

http://ac9091d71ada24e56a8f9daf99bde754-1632655992.eu-central-1.elb.amazonaws.com:8080/

img.png