Configure registry, VPC, EKS, and networking
Build the AWS infrastructure (VPC, IAM, EKS, networking, ECR access) and install the Kubernetes platform components for an In-VPC e6data deployment.
This page builds the AWS infrastructure for an In-VPC deployment and installs the Kubernetes platform components that the e6data workspace runs on. Run these steps with the AWS CLI, kubectl, and Helm.
Infrastructure requirements
Review these requirements before you begin. They apply whether you create a new VPC (Part 1, Step 1) or reuse an existing one.
VPC options
You can either create a new VPC or use an existing one:
New VPC
Recommended for an isolated e6data deployment. Follow Step 1 in Part 1 below.
Existing VPC
Use when e6data must share a network with other workloads. Skip Step 1 and confirm your VPC meets the requirements below.
VPC and subnet CIDR ranges
VPC CIDR
/20 (4,096 IPs)
/16 (65,536 IPs)
Must accommodate EKS nodes, pods, and services.
Private subnets
/22 per subnet (1,024 IPs)
/20 per subnet (4,096 IPs)
e6data engine nodes run here.
Public subnets
/24 per subnet (256 IPs)
/24 per subnet
NAT Gateway and load balancers only.
Each e6data engine pod consumes one IP address. For large workloads with 100+ concurrent pods, make sure private subnets have enough IP space.
Availability zones
Number of AZs
2
3
Private subnets
1 per AZ
1 per AZ
Public subnets
1 per AZ
1 per AZ
e6data spreads workloads across AZs for high availability. Tag subnets so EKS, the load balancer controller, and Karpenter can discover them:
Service quotas
Verify these quotas before deploying. Request increases early - they can take 24–48 hours.
EC2
Running On-Demand instances
100 vCPUs
EC2
Running Spot instances
500 vCPUs
EC2
EC2-VPC Elastic IPs
5
EKS
Clusters per Region
1+ available
VPC
NAT Gateways per AZ
1+ available
VPC
VPCs per Region
1+ available
Instance types
System nodes
t3, m5
x86_64 (amd64)
EKS managed node group for system pods.
e6-operator
t3, t4g
amd64 or arm64
Operator controller pods.
Engine nodes
r6g, r6gd, r7g, r7gd, m7g, c7g
arm64 (Graviton)
Query engine pods, provisioned by Karpenter.
The e6data engine is optimized for AWS Graviton (arm64) instances for better price-performance. Confirm your Region has capacity for the r6g/r7g families.
VPC CNI configuration
The Amazon VPC CNI plugin manages pod networking:
WARM_IP_TARGET
5
Pre-allocates IPs for faster pod startup.
MINIMUM_IP_TARGET
10
Keeps a minimum number of IPs available per node.
ENABLE_PREFIX_DELEGATION
true
Increases IP capacity per node (recommended for large clusters).
For clusters with 100+ pods, enable prefix delegation to avoid IP exhaustion. It assigns /28 prefixes (16 IPs) instead of individual IPs, allowing up to 110 pods per node on most instance types:
Existing VPC checklist
If you reuse an existing VPC, verify:
Part 1 - AWS infrastructure
Step 1: Create the VPC
Step 2: Create IAM roles
EKS cluster role:
EKS node role:
Karpenter role:
ALB Controller role:
EBS CSI driver role:
The EBS CSI driver addon uses EKS Pod Identity for its IAM permissions:
Step 3: Create the EKS cluster
Step 4: Create the OIDC provider and Pod Identity add-ons
Step 5: Create the system node group
Step 6: Create the S3 metadata bucket
Do not enable S3 Object Lock on this bucket - it can break metadata operations.
Step 7: Create workspace IAM roles
Create the engine, console, and app roles. All three trust pods.eks.amazonaws.com:
Step 8: Create Pod Identity associations
Step 9: Create the Karpenter SQS queue
Part 2 - Kubernetes platform components
Step 1: Install Karpenter CRDs
Step 2: Install the Karpenter controller
Step 3: Install the AWS Load Balancer Controller
Step 4: Create the e6-operator NodePool
Step 5: Install cert-manager
Step 6: Install the e6-operator CRDs
e6data provides the CRD files. Apply them with server-side apply:
All CRDs from the provided archive are installed - expect 20+ resources with the e6data.io suffix, including:
Step 7: Create the gp3 StorageClass
Step 8: Install the e6-operator controller
e6data provides the operator Helm chart. Install it with helm template | kubectl apply:
Next
Continue to Deploy workspace and e6data.
Last updated
Was this helpful?

