Amazon EKS Distro Cluster
This example deploys an Amazon EKS Distro cluster using a dynamic provider which utilizes kops
Deploying the App
To deploy your infrastructure, follow the below steps.
Prerequisites
Steps
After cloning this repo, from this working directory, run these commands:
- Install the required Node.js packages: - $ npm install
- Create a new stack, which is an isolated deployment target for this example: - $ pulumi stack init
- Set the required configuration variables for this program: - $ pulumi config set aws:region us-west-2
- Stand up the EKS cluster, which will also deploy the Kubernetes Dashboard: - $ pulumi up
- After 10-15 minutes, your cluster will be ready, and the kubeconfig JSON you’ll use to connect to the cluster will be available as an output. You can save this kubeconfig to a file like so: - $ pulumi stack output kubeconfig --show-secrets >kubeconfig.json- Once you have this file in hand, you can interact with your new cluster as usual via - kubectl:- $ KUBECONFIG=./kubeconfig.json kubectl get nodes
- From there, feel free to experiment. Make edits and run - pulumi upto incrementally update your stack. For example, in order to deploy a Helm chart into your cluster, import the- @pulumi/kubernetes/helmpackage, add a- Chartresource that targets the EKS cluster to- index.ts, and run- pulumi up. Note that the Helm client must be set up in order for the chart to deploy. For more details, see the Prerequisites list.- import * as helm from "@pulumi/kubernetes/helm"; // ... existing code here ... const myk8s = new k8s.Provider("myk8s", { kubeconfig: cluster.kubeconfig.apply(JSON.stringify), }); const postgres = new helm.v2.Chart("postgres", { // stable/postgresql@0.15.0 repo: "stable", chart: "postgresql", version: "0.15.0", values: { // Use a stable password. postgresPassword: "some-password", // Expose the postgres server via a load balancer. service: { type: "LoadBalancer", }, }, }, { providers: { kubernetes: myk8s } });- Once the chart has been deployed, you can find its public, load-balanced endpoint via the Kubernetes Dashboard. 
- Once you’ve finished experimenting, tear down your stack’s resources by destroying and removing it: - $ pulumi destroy --yes $ pulumi stack rm --yes