Skip to content

Latest commit

 

History

History

README.md

Deploy this example with Pulumi Deploy this example with Pulumi

Zero downtime migration of EKS node groups

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.

Prerequisites

  1. Install Pulumi
  2. Configure AWS credentials
  3. Install Node.js

Deploying the example

  1. Create a new stack:

    pulumi stack init dev
  2. Set the AWS region to deploy into:

    pulumi config set aws:region us-west-2
  3. Install dependencies:

    npm install
  4. Deploy the stack:

    pulumi up

Then follow the tutorial for the step-by-step migration walkthrough.

Cleaning up

Once you're finished experimenting, destroy your stack and remove it to avoid incurring further charges:

pulumi destroy
pulumi stack rm