EKS via Pulumi

This is a brief exploration into the usage and features of Pulumi via its Typescript syntax.

Pulumi is a declarative Infrastructure as Code tool, similar to Terraform. However, while Terraform is limited to its HCL syntax, Pulumi is polyglot, supporting JS, Typescript, Go, Python, Java and .Net.

Pulumi’s libraries were used to quickly stand up an EKS cluster and deploy sample workloads into it. Specifically, Pulumi’s AWSX, Kubernetes and Helm libraries were used. Also explored was the syntax for importing submodules into modules, and sharing data across stacks and projects.

Overall, I enjoy using Pulumi. Coding in a real programming language opens doors for virtually unlimited manipulation of input variables to infrastructure resources. The default Pulumi Service for remote state is slick and easy to use. I like that remote state can be self managed if desired, though I have not tried that yet. I’m also excited for the Native AWS provider to come out, since it will give Pulumi a one-to-one mapping with the AWS api.

However, Pulumi is not without its drawbacks- there is a non-trival learning curve to do anything outside of the basic flow outlined in the introductory examples. Pulumi specific idiosyncratic methods and types require becoming familiar with to use effectively. Also, many examples are out of date, no longer working without modification.

I plan to continue exploring Pulumi, though I’m not quite ready to abandon Terraform yet.

JP Earnest
JP Earnest
Cloud Engineer + Fullstack Web Developer

Building, automating and supporting web applications, cloud infrastructure and code delivery pipelines.

Related