Installing/Setup Kubernetes Cluster with AWS EKS using eksctl
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
- AWS Account: Ensure you have an AWS account with sufficient permissions.
- AWS CLI: Install and configure the AWS CLI with appropriate IAM permissions.
- eksctl: Install
eksctl
.
Install AWS CLI
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:
aws configure
Install 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
Step 1: Create EKS Cluster Configuration File
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
You can create either a public or private node group depending on your requirements.
Public Node Group Configuration <br> 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 <br> 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
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.
- 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/
- 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
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
Now that your cluster is up and running, you can deploy a sample application to ensure everything is working correctly.
- Create a deployment:
kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
- Expose the deployment as a service:
kubectl expose deployment hello-node --type=LoadBalancer --port=8080
- 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 like bellow :
http://ac9091d71ada24e56a8f9daf99bde754-1632655992.eu-central-1.elb.amazonaws.com:8080/