Skip to main content

Cluster Setup

CAIPE deploys on any Kubernetes 1.28+ cluster. Pick the option that fits your environment and proceed to Deploy with Helm once your cluster is ready.


Option 1 — KinD (local, no cloud account needed)

KinD (Kubernetes in Docker) is the fastest way to get a cluster running locally for development or evaluation.

Prerequisites

Create the cluster

kind create cluster --name caipe
kubectl cluster-info --context kind-caipe

Your cluster is ready. Jump to Deploy with Helm →


Option 2 — AWS EKS

Use EKS for production or cloud-based evaluation.

Install tools

ToolPurpose
AWS CLIAuthenticate to AWS — install
eksctlCreate and manage EKS clusters — install
kubectlInteract with the cluster — install

Configure AWS credentials

aws configure
aws sts get-caller-identity
export AWS_DEFAULT_REGION=us-east-2

Create the cluster

git clone https://github.com/cnoe-io/ai-platform-engineering.git
cd ai-platform-engineering
cp deploy/eks/dev-eks-cluster-config.yaml.example dev-eks-cluster-config.yaml

# Takes ~10–15 minutes
eksctl create cluster -f dev-eks-cluster-config.yaml

# Verify nodes are ready
kubectl get nodes

Required for LoadBalancer-type services on EKS:

eksctl create iamserviceaccount \
--cluster=dev-eks-cluster \
--namespace=kube-system \
--name=aws-load-balancer-controller \
--role-name AmazonEKSLoadBalancerControllerRole \
--attach-policy-arn=arn:aws:iam::aws:policy/ElasticLoadBalancingFullAccess \
--approve

helm repo add eks https://aws.github.io/eks-charts && helm repo update

helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
-n kube-system \
--set clusterName=dev-eks-cluster \
--set serviceAccount.create=false \
--set serviceAccount.name=aws-load-balancer-controller

Your cluster is ready. Jump to Deploy with Helm →


Other cloud providers

The Helm install works on any conformant cluster. Follow your provider's managed Kubernetes guide:

ProviderManaged Service
Google CloudGKE
Microsoft AzureAKS
Self-managedAny kubeadm or Rancher cluster

Once kubectl get nodes shows your nodes in Ready state, proceed to Deploy with Helm →