Amazon EKS cluster
A minimal AWS Python EKS example cluster
This example lives in the pulumi/examples repository. Check out just this directory to use it:
git clone --filter=blob:none --sparse https://github.com/pulumi/examples pulumi-examplesgit -C pulumi-examples sparse-checkout set aws-py-ekscd pulumi-examples/aws-py-eksThis example deploys an EKS Kubernetes cluster inside an AWS VPC with proper NodeGroup and networking configured.
Prerequisites#
- Install Pulumi
- Configure AWS credentials
- Install Python
- Optional for K8s auth: Install
iam-authenticator
Deploying the example#
-
Create a new stack:
Terminal window pulumi stack init python-eks-testing -
Set the AWS region to deploy into:
Terminal window pulumi config set aws:region us-east-2 -
Install dependencies:
Terminal window python3 -m venv venvsource venv/bin/activatepip install -r requirements.txt -
Run
pulumi upto preview and deploy changes:Terminal window pulumi upPreviewing stack 'python-eks-testing'Previewing changes:...Do you want to perform this update? yesUpdating (python-eks-testing):Type Name Status+ pulumi:pulumi:Stack aws-py-eks-python-eks-testing created+ ├─ aws:iam:Role ec2-nodegroup-iam-role created+ ├─ aws:iam:Role eks-iam-role created+ ├─ aws:ec2:Vpc eks-vpc created+ ├─ aws:iam:RolePolicyAttachment eks-workernode-policy-attachment created+ ├─ aws:iam:RolePolicyAttachment eks-cni-policy-attachment created+ ├─ aws:iam:RolePolicyAttachment ec2-container-ro-policy-attachment created+ ├─ aws:iam:RolePolicyAttachment eks-service-policy-attachment created+ ├─ aws:iam:RolePolicyAttachment eks-cluster-policy-attachment created+ ├─ aws:ec2:InternetGateway vpc-ig created+ ├─ aws:ec2:Subnet vpc-sn-1 created+ ├─ aws:ec2:Subnet vpc-sn-2 created+ ├─ aws:ec2:SecurityGroup eks-cluster-sg created+ ├─ aws:ec2:RouteTable vpc-route-table created+ ├─ aws:eks:Cluster eks-cluster created+ ├─ aws:ec2:RouteTableAssociation vpc-1-route-table-assoc created+ ├─ aws:ec2:RouteTableAssociation vpc-2-route-table-assoc created+ └─ aws:eks:NodeGroup eks-node-group createdOutputs:cluster-name: "eks-cluster-96b87e8"Resources:+ 18 createdDuration: 14m15s -
View the cluster name via
pulumi stack output:Terminal window pulumi stack outputCurrent stack outputs (1):OUTPUT VALUEcluster-name eks-cluster-96b87e8 -
Verify that the EKS cluster exists, by either using the AWS Console or running
aws eks list-clusters. -
Update your kubeconfig, authenticate to your Kubernetes cluster, and verify you have API access and nodes running:
Terminal window aws eks --region us-east-2 update-kubeconfig --name $(pulumi stack output cluster-name)Added new context arn:aws:eks:us-east-2:account:cluster/eks-cluster-96b87e8Terminal window kubectl get nodesNAME STATUS ROLES AGE VERSIONip-10-100-0-182.us-east-2.compute.internal Ready <none> 10m v1.14.7-eks-1861c5ip-10-100-1-174.us-east-2.compute.internal Ready <none> 10m v1.14.7-eks-1861c5
Cleaning up#
To clean up resources, run pulumi destroy and answer the confirmation question at the prompt. Then run pulumi stack rm to remove the stack.