Deploy a Production-Ready EKS Cluster

By Pulumi Team
Published
Updated

The Challenge

You need a production-ready Kubernetes cluster on AWS with high availability, automatic node scaling, and proper network isolation. This is the foundation for running containerized applications, microservices, or any workload that benefits from Kubernetes orchestration.

What You'll Build

  • EKS cluster with high availability across multiple availability zones
  • VPC with public and private subnets
  • Managed node groups with autoscaling
  • Kubeconfig for kubectl access
  • Production-ready networking and security configuration

Neo Try This Prompt in Pulumi Neo

Run this prompt in Neo to deploy your infrastructure, or edit it to customize.

Best For

Use this prompt when you need a production Kubernetes cluster for running containerized applications, microservices, or workloads that require orchestration. Ideal for teams adopting Kubernetes on AWS, migrating from self-managed clusters, or building new microservices platforms.

Architecture Overview

This architecture provisions a fully functional EKS cluster with the networking and compute resources needed for production workloads. A dedicated VPC provides network isolation with subnets spread across multiple availability zones for resilience. The EKS control plane is managed by AWS, which handles Kubernetes API server availability, etcd storage, and version upgrades.

Managed node groups run your workloads on EC2 instances that AWS provisions and maintains. Unlike self-managed nodes, AWS handles AMI updates, draining, and replacement during upgrades. Autoscaling is configured so the node group can expand when pods are pending due to insufficient capacity and contract when nodes are underutilized.

The cluster exports a kubeconfig file, which is the standard way to authenticate kubectl and other Kubernetes tools. This lets you deploy workloads, inspect cluster state, and integrate with CI/CD pipelines immediately after provisioning.

VPC and Networking

The VPC spans multiple availability zones, each with public and private subnets. Public subnets host load balancers and NAT gateways, while private subnets run worker nodes, keeping them off the public internet. This separation is a standard security practice for production Kubernetes clusters.

EKS Control Plane

The EKS control plane is a managed service. AWS runs the Kubernetes API server and etcd across multiple availability zones, providing an SLA for control plane availability. You interact with it through the standard Kubernetes API, and AWS handles patching and scaling the control plane infrastructure.

Managed Node Group

The managed node group runs your application pods. Autoscaling boundaries define how small and large the group can grow, letting it respond to workload changes without manual intervention. AWS handles the underlying EC2 instance lifecycle, including health checks and replacement of unhealthy nodes.

Common Customizations

  • Add a second node group for specialized workloads: Request a GPU-enabled or memory-optimized node group alongside the general-purpose group to support machine learning inference or in-memory databases.
  • Enable cluster autoscaler or Karpenter: Ask for Karpenter or the Kubernetes Cluster Autoscaler to be deployed into the cluster for more sophisticated bin-packing and scaling decisions.
  • Configure private cluster endpoint: Restrict the Kubernetes API to private access only, requiring VPN or Direct Connect to reach the control plane.
  • Install an ingress controller: Add an NGINX or AWS Load Balancer Controller ingress to expose services with TLS termination and path-based routing.