Create AWS EKS Cluster

Overview

This guide provides instructions for creating an AWS EKS (Elastic Kubernetes Service) cluster that will host your Observo Site deployment. The cluster is created using eksctl, a simple command-line utility for creating and managing EKS clusters.

Prerequisites

Software Requirements

  • AWS CLI installed and configured with appropriate credentials

  • eksctl installed on your local machine

    Install eksctl:

    # macOS
    brew tap weaveworks/tap
    brew install weaveworks/tap/eksctl
    
    # Linux
    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
  • kubectl installed (required for managing the cluster)

  • AWS IAM permissions to create EKS clusters and related resources

AWS Permissions Required

Your AWS user/role needs permissions for:

  • Creating EKS clusters

  • Creating VPCs and networking components

  • Creating EC2 instances (for node groups)

  • Creating IAM roles and policies

  • CloudWatch logging permissions

Cluster Configuration

Note: Review infrastructure requirements and sizing before creating the cluster — see the Site Sizing Calculation for VM and node sizing: Sizingarrow-up-right

Sample EKS Cluster Configuration

Save the following configuration as cluster-create.yaml:

Configuration Breakdown

Cluster Settings

VPC Configuration

  • nat.gateway: Single: Creates a NAT gateway for outbound internet access

  • clusterEndpoints.publicAccess: true: Allows access from internet

  • privateAccess: false: Disables private-only endpoint

IAM Configuration

  • withOIDC: true: Enables OpenID Connect for service account integration

Addons

  • aws-ebs-csi-driver: Enables EBS volume support (required for storage)

Networking

  • serviceIPv4CIDR: IP range for Kubernetes services

  • ipFamily: ipv4: Use IPv4 addressing

Node Group Configuration

  • instanceType: EC2 instance type (t4g.xlarge uses ARM architecture)

  • desiredCapacity: Target number of nodes

  • minSize/maxSize: Autoscaling limits

  • volumeSize: EBS volume size per node

  • volumeType: EBS volume type (gp3 is recommended)

Availability Zones

  • Specify which AZs to use for multi-AZ deployment

Customization Options

You can modify the configuration based on your requirements:

Change Region:

Change Instance Type:

Adjust Cluster Sizing:

Use Specific Availability Zones:

Create the Cluster

1. Create the Cluster Configuration File

2. Check if Cluster Already Exists

Before creating the cluster, verify that a cluster with the same name doesn't already exist:

Or check for a specific cluster name:

If the cluster already exists, you will receive an error when trying to create it. You can either:

  • Choose a different cluster name in the YAML configuration

  • Delete the existing cluster first (see Cleanup section)

3. Validate Configuration

This will show what will be created without actually creating resources.

4. Create the Cluster

This command will:

  • Create the EKS cluster

  • Set up VPC, subnets, and NAT gateway

  • Configure node groups

  • Install addons (EBS CSI driver)

  • Set up kubectl credentials

Expected Output:

This process typically takes 15-20 minutes.

5. Verify Cluster Creation

6. Configure kubectl (if needed)

7. Ensure a Default StorageClass

Kubernetes should have a default StorageClass so PersistentVolumeClaims (PVCs) bind automatically.

  1. Check existing storage classes and whether one is marked as default:

Example output when there is no default:

  1. If no class is marked as default, set one (for example gp2):

  1. Verify it is now the default:

Ensure your cluster has a default StorageClass before proceeding with workloads that use PVCs.

Next Steps

Once your EKS cluster is created and verified:

  1. Configure kubectl access

  2. Review node capacity and adjust if needed

  3. Continue with Helm-Based Deployment → to install Observo Site

  4. Verify Load Balancer support for data pipeline requirements

Troubleshooting

Cluster Creation Fails

If cluster creation fails:

Cleanup

To delete the cluster (when no longer needed):

Or by name:

This will delete all associated resources including VPC, NAT gateway, and node groups.

Additional Resources

Last updated

Was this helpful?