Creates an EKS cluster with node groups and a workload, and showcases adding a node group to use for workload migration with zero downtime.
This is a Kubernetes Day 2 operations walkthrough: it stands up two worker node groups with different instance types and AMIs, deploys the NGINX Ingress Controller and a simple echoserver app across them, then migrates NGINX onto a new, larger node group with zero downtime before decommissioning the original one.
The migration relies on Pulumi's create-before-delete model and autonaming — the replacement node group is created and workloads are shifted onto it before the original is drained and deleted — combined with Kubernetes high-availability settings (rolling updates, scheduling affinity, and graceful pod termination) so that in-flight requests keep returning HTTP 200 throughout.
For step-by-step instructions, check out the tutorial.
-
Create a new stack:
pulumi stack init dev
-
Set the AWS region to deploy into:
pulumi config set aws:region us-west-2 -
Install dependencies:
npm install
-
Deploy the stack:
pulumi up
Then follow the tutorial for the step-by-step migration walkthrough.
Once you're finished experimenting, destroy your stack and remove it to avoid incurring further charges:
pulumi destroy
pulumi stack rm