Kat Morgan
June 21, 2024

🎈1yr Pulumi Anniversary!🎊

Posted on June 21, 2024  •  19 minutes  • 3960 words
Table of contents

From learning to code, content engineering, the rise of AI, Platform Engineering and beyond. So much learning, teaching, and creating. I want to talk about it so let’s dive in!

“The art of teaching is the art of assisting discovery”
β€” Mark Van Dore 1

πŸͺ…Year One of DevRel @ Pulumi!

July 26 2024 Kat Joins Pulumi!

🎈 Yesterday was June 26th, and the anniversary of my first year at Pulumi! 🎈🎊

πŸ”₯ Oh, I will not apologize for emoji in my blogs @ibuildthecloud , get rekt… πŸ˜‚

πŸ“– Story Time

🧐 What is Pulumi?

Pulumi is an ecosystem built from a fully Open Source Software (OSS) “Infrastructure as Code” (IaC) cloud orchestration tool that supports writing IaC in general purpose programming languages like Python, Go, TypeScript, and C#.

Find out more on pulumi.com

πŸ’” The problem of DevOps without Pulumi

My first time using Pulumi IaC was circa 2019. I was working at Red Hat at the time, and new on a team delivering OpenShift and an air-gap DevSecOps platform for the US Department of Defense Platform One initiative.

To accomplish our goal of a push-button platform provisioning automation, we assembled a stack of tools including Ansible, Terraform, Docker, OpenStack, Bash, and Python to accomodate our end-to-end requirements, at one point the project called CodeSparta developed entirely in the professional services consulting org was even referred to by RH Product Engineering as “a purpose built OpenShift installer”.

Dockerfiles, bash, Ansible, Python, and Terraform add up to a large web of functionality spread across a dizzying array of tools, languages, and requires an unreasonably wide range of expertise to maintain and operate. As the lead developer and maintainer on the Sparta work, I discovered the limits of scaling the work to maintain and develop such an obscure and patchwork product across a larger team of engineers to be more challenging as the complexity continued to spiral out of control.

πŸ’œ Why I like Pulumi IaC

Pulumi, was first shown to me by Chris Kuperstein , a brilliant talent with the vision and goals of a leader. By comparison, Pulumi has in my experience, completely replaced most of that laundry list of tools, and proven far more capable and flexible besides.

I would go on to write a bit of Pulumi IaC while at Red Hat primarily for my own interest, before moving on to write many consulting engagements in Pulumi python, typescript, and golang while working as a consulting engineer at Kong Inc , an API Ops company.

⏱️ Once in a Lifetime

There are many DevRel opportunities in the tech industry. Among them are only a small few I would consider taking on myself. Pulumi specifically is a technology I was already convinced is the future of orchestration, and in keeping with a theme I adhere to at every opportunity, choose an architecture that eliminates the most tools from your stack.

Choose an architecture that eliminates the most tools from your stack.

  • Kat Morgan

The conventional DevOps, Platform Engineering, and general operations tool belt has exploded in complexity and variety. With the greatest of intentions, organizations frequently make mistakes in ops architectures where features are bought and bolted on without a vision for simplification and velocity.

Pulumi’s single greatest feature, is the ability to write arbitrary logic inline with your IaC to intelligently operate cloud infrastructure with the flexibility to meet real world demands. This key feature is a primary focus of my own learning journey with Pulumi, breaking down the barriers between Traditional Ops (TradOps) and more software development skills while elegantly meeting more complex orchestration problems without breaking a sweat.

The pairing of the ultimate infrastructure as code tooling and ecosystem, with the job description of developer advocacy and community work, is bar none, one of the most exciting professional opportunities in the industry today. Serving as the “glue” technology bringing together the best cloud services on earth, to elegantly deliver a robust and simple path to cloud orchestration, my role as a community engineer at Pulumi offers me direct access to dabbling, or diving deep into almost any tech on the bleeding edge of cloud computing today.

πŸ€” Why join Pulumi

Before joining Pulumi myself, I had the great privilege of collaborating with the Pulumi team on a Kong + Pulumi project, and joined PulumiUP 2022 as a panelist with other amazing experts.

Walking among The Greatsℒ️ I joined Pulumi’s Developer Relations πŸ₯‘ Community Engineering team, contributing to the most interesting community growing in the cloud orchestration space.

From AI to Kubernetes, Virtual Machine and Container platforms, if nothing else, the last year has proven that not only have I been fortunate to write an incredible professional development story from my own humble beginnings, but that you only reach the ceiling once you settle for having already achieved it.

I am beyond proud of this past year’s work, and I couldn’t be more excited to leap directly into what is next.

πŸ₯‘ The Greats️️️ℒ️

Note: This concludes the official “blog” portion of this post. Continue on for more detailed content and resources from the past year of work.


⏯️ The Content

Below is a collection of the past year’s highlights listed by topic.

Each section includes a brief overview of the project, the challenges faced, and the successes achieved for a highlighted item, and also includes an “click to expand” resource list of additional content for further exploration.

All content is my own original work with code and reference links unless otherwise noted.

Thank you to all who have supported and contributed to these successes and more!


πŸˆβ€β¬› The KatWalk LLM AI Server πŸ’…πŸ»

The Oops

The KatWalk project was my opening act on the Pulumi DevRel team. I’ve told this story a few times, but irony never fails to entertain me and I’ll write it down finally to share here as well.

Pulumi supports many languages. While interviewing for Pulumi, I pre-cleared a preference for writing mainly only golang and typescript in seat, and that I specifically did not want to write python. My preference was thankfully accepted and supported on the part of Pulumi decision makers. However, fate saw fit to change my plans on day one.

Being only 2 months after ChatGPT’s release, in less than 3 hours of day one at Pulumi, I landed in a team call where the topic of AI came up. Having nothing on my plate yet I volunteered to do some ice breaking into the burgeoning machine learning and data science space. If you know anything about the AI field, you know to expect lots of Python! … EVERYWHERE. Inevitably, I’ve written almost exclusively Python since joining.

The Ops

The KatWalk project was a full stack development endeavor. The app source and infrastructure as code (IaC) source code is all written in Python and a frontend written as a very simple javascript app deployed to Vercel.

From first enabling CUDA support inside and outside of the KatWalk container runtime, to coordinating compatible versions of cuda with the various vLLM and other python libraries required, the minutia was frought with pitfalls especially being so early in the ChatGPT era.

The Work

The total work product includes:


πŸ‘©πŸΌβ€πŸ’» Pulumi Devcontainers

Why Devcontainers?

The “Development Containers” or the Devcontainer project was created to solve the problem of “it works on my machine!” and reduce the frequency of productivity drains caused by variations in local development environments.

Nix didnt work

In starting my journey at Pulumi, I first turned to the promise of the Nix, NixOS, Nixpkgs, home-manager, direnv, and the rest of the Nix ecosystem to simplify dependency installation and versioning in Pulumi IaC developer environments.

Nix is a powerful ecosystem and my novice understanding definitely limited my fluency with solving problems as I encountered them, however I found that aspect to be a concerning barrier to entry for the goal of making Pulumi development life easier and inevitably determined that Nix was not the right tool for the job at this time. I have since adopted NixOS with Plasma 6 as my personal laptop daily driver OS for it’s ease of management and configuration, but for Pulumi IaC cloud orchestration and platform developers Nix is still an out-of-reach baseline barrier to entry.

So what actually meets the needs of an easily sharable and maintainable developer environment with full support for kind kubernetes local k8s development or even localstack aws development? Enter Devcontainers !

Achieving Success

The Pulumi Devcontainer work was a great opportunity to meaningfully improve the daily workflow for myself and others in the Pulumi community and proved to be a straightforward solution to implement and scale.

Once released, the ghcr.io/pulumi/devcontainer:extra image and github.com/pulumi/devcontainer template repository together immediately accelerated every Pulumi project I worked on as the foundational first step to getting started in everything I do, and adds the benefit of providing a best case scenario of sharing demo success beyond the stage with others by serving as a click-to-start reproducible path that eliminates the prerequisites and beginners fatigue.

Devcontainer Impact

Since it’s release, I personally used the Devcontainer as my first step in every Pulumi project I’ve delivered. From streamlining my prerequisits and sharing that success with others, to seeing it’s adoption in the community, the Devcontainer already has proven the community need from the growing interest alone.

Furthermore, in combination with Github Codespaces , the Pulumi Devcontainer now offers a “one click to start” method to try many Pulumi examples and demos with zero setup required, making all of the official Pulumi Examples on Github directly accessible to anyone with a Github account and a browser.

Pulumi Devcontainer adoption on Github

πŸ”Ž*Click to Expand Enhanced Projects List*
  1. Pulumi Docs - github.com/puulumi/pulumi-hugo
  2. Pulumi Examples - github.com/pulumi/examples
  3. Pulumi Pinecone Provider
  4. Kind Provider - github.com/usrbinkat/pulumi-kind-native
  5. New Pulumi Provider Development Template
  6. Pulumi Minecraft IaC Exercise
  7. Docker Compose GenAI Port to Pulumi IaC (incomplete)
  8. Pulumi IaC for GCP Cloud Run
  9. Pulumi Cert Manager Exercise
  10. AWS Demos Roadmap
  11. Github Workflows Secrets - IaC in the wild
  12. Docker Build - IaC in the wild
  13. Pulumi IaC Template Repo - IaC in the wild
  14. Pulumi Azure AKS - IaC in the wild
  15. Lambda Labs AI Cloud Native Provider - Community Provider
  16. Pulumi Provider for k0s Kubernetes
  17. Pulumi Provider for CEPH Rados Gateway
  18. Pulumi Azure AKS AI Workload K8s Cluster IaC
  19. Pulumi GCP Java Serverless IaC
  20. Pulumi Kubernetes IaC Workshop & Demo Repository
  21. Pulumi Hugo IaC with Example Inputs/Outputs and Output Logic Feature Flows

Learn more


πŸ“¦ Kubernetes πŸ’»

It’s Kubernetes Time

Among the top 5 most used providers, the Pulumi Kubernetes Provider is the first Pulumi provider that I ever used.

In the Pulumi ecosystem, “Pulumi Providers ” inform Pulumi’s IaC engine on the many cloud service API’s that orchestrate the cloud. Between k8s popularity among our own provider offering, and Pulumi’s close ties to the larger CNCF landscape, it’s no surprise that there was a lot of Kubernetes work over the past year.

Teaching & Learning in Public

Marino and Kat presenting on Network Policy as Code with Pulumi Python Kubernetes IaC at Civo Navigate Austin ‘23 Tweet of Marino and Kat on Network Policy as Code at Civo Navigate 2023

There was so much kubernetes in fact, that I created a longer-lived and maintained repository for developing and practicing a larger and more sophisticated baseline IaC project structure.

In this repository I was able to evolve from the “hello world” level of Pulumi code structure and repostory layout, into more efficient, maintainable, and mature. Some of these examples may seem obvious to experienced software developers however Pulumi serves both the modern developer audience as well as tranditional infrastructure engineers such as my self who may be learning to code for the first time or be new to software development practices in general.

Among the most prominently useful discoveries across my collected works to highlight includes the practices of:

  1. Adopting Feature Flags in IaC with Pulumi to enable and disable features in a controlled and declarative way.
  2. Writing actionable Pulumi Stack Export outputs that can be put to work in controlling the versioning update rollout flows through dev/test/prod to reduce dependence on things like Dependabot and further simplify the tool stack with consolidation directly into the IaC codebase.

Find it in the code

πŸ”Ž*Click to expand: Pulumi + Kubernetes Content List*

🌲 AI + Pinecone

Pinecone is a purpose built cloud native vector database for AI and ML workloads. Riding the burgeoning wave of ChatGPT’s sudden rise to prominence and powering many applications in the race to commercialize LLMs. Pinecone and the AI application architectures that it plugs into as a RAG (Retrieval Augmented Generation) database are suddenly high demand practitioner skillsets.

Pinecone Pulumi Meetup in San Francisco

Pinecone Pulumi Meetup in Seattle

pinecone provider

πŸ”ŽClick to find more AI content* πŸ€–

πŸ”Œ Pulumi Providers ⚑

While ice braking in the AI space with the KatWalk LLM Server project, it became obvious that the rapid growth in the number of AI startups and cloud services had one thing in common. Having flipped from a largely academic field of research teams, into a hot bed of rapid commercialization efforts, AI was largely lacking for terraform, pulumi, and other IaC provider support across the generative AI and supporting services.

This called for a second look at the Pulumi Provider development experience. Pulumi providers come in a few forms. The most common being the TF Bridge Provider, and the Pulumi Native Provider.

Dynamic Provider

The Pulumi Dynamic Provider approach allows for writing basic CRUD provider coverage of arbitrary APIs not covered with a real Pulumi provider. This was the first approach taken to support the Runpod.io cloud service in KatWalk server prior to developing and releasing the official runpod provider itself.

Native Provider

The Pulumi Native Provider Boilerplate is a toolkit for generating Pulumi providers from scratch in golang.

This approach is how we delivered the Pulumi Pinecone Provider and the Pulumi Runpod.io Provider to the Pulumi Registry.

TF Bridge Provider

The Pulumi Terraform Bridge Provider Boilerplate is a toolkit for generating Pulumi providers from the Terraform provider schema found in terraform provider source code.

πŸ”Ž*Click to find more Pulumi Providers content*

πŸ› οΈ Pulumi Deployments

The Pulumi Cloud Deployments features are a fairly new practice in my personal toolbelt. One of my more recent exercises, I sat down to learn and implement 3 new features at release time.

As an OSS purist at heart, I commonly lean a little too far into the purist take of “OSS or bust!”, but acknowledging the value of the right tool for the job I was surprised to find the experience of writing my entire GitOps IaC deployment pipeline inside the same Pulumi IaC I was already practicing to be the most convenient experience.

For the video coverage, we start with a quick review of the Pulumi Deployments features, then get hands on demonstrating each of the 3 new capabilities.

Deployments FeatureDescription
TTLTime to Live infrastructure with pre-determined self-destruct EOL
Drift DetectionReconcile Desired State vs Actual State to detect drift conditions
Scheduled DeploymentsSchedule any operation on a cron timer ~$ pulumi [up,down,refresh]

βš™οΈ KubeVirt Baremetal PaaS - Community Platform Engineering

This platform engineering project is dedicated to building community expertise with Pulumi by taking on a longer running, larger, and more complex project scope than most DevRel “101” level exercises. The project has already been an excellent learning and teaching tool for hands on practice with dynamic and complex cloud orchestration environments.

While still in early days, we already have a community of brilliant minds contributing to, and learning together on the CCIO Discord: LINK

Find the project on Github!

πŸ”ŽClick to find more Kargo KubeVirt PaaS Platform Engineering / Homelab content*

tf/vmw -vs- pulumi/kubevirt


🟠 AWS

SageMaker

AWS SageMaker is a powerful tool for building, training, and deploying machine learning models.

I was fresh off the Katwalk LLM API Service project going into this one and comparing the former “build it yourself” approach to the SageMaker “AI-as-a-Service” experience.

πŸ”Ž*Click to find more AWS content*

Workshops

Events


πŸ”΅ Azure

The past year was full of fun in many clouds, including Microsoft Azure!

First up, with a git repo and a Youtube video to show for it, what better way to get into Azure than building a new Kubernetes AI compute platform?

Starting a new project completely from scratch, lets dig in together with Kevin Evans and step through getting started, using Pulumi AI, Pulumi templates, and dive into tooling, syntax, and IaC code techniques including variable maps and arrays for elegant IaC. Draw the whole owl in this step by step demonstration.

Also, stay tuned! With plans to further develop this project enhancing the AKS cluster with Karpenter GPU worker node machine sets and Kubeflow for AI/ML workloads, there’s definitely more that you won’t want to miss!

Azure AI K8s Cluster with Pulumi IaC

Building on With serverless and AI both all the rage, what’s not to love about a serverless AI Langchain Function on Azure with Pulumi IaC?

Serverless AI Langchain Functions on Azure with Pulumi IaC


🟒 GCP

Check out the action on Google Cloud Platform (GCP). Production hybrid kubernetes + serverless architecture, Cloud Run and more!

Google & Pulumi Present: Production Ready Java Serverless Apps

Google & Pulumi Present: Efficient Microservices on GCP Cloud Run


πŸ’œ EmpathyOps - Twitter Spaces (25 & Counting!)

In partnership with EmpathyOps , a tech consulting and fractional Developer Advocacy service provider, I’ve had the great pleasure of co-hosting dozens of industry experts bringing their wealth of knowledge, spilling the tea, and remembering the human side of tech as we journey through lessons learned and aspirations for the future.

TitleLinkAttendees
Application Observability for Peak PerformanceLink1200+
Cloud UnpluggedLink1900+
So I heard you want to contribute to k8s?Link1300+
Deep dive w/ Open TelemetryLink1000+
πŸ”ŽClick to find more EmpathyOps content*
TitleLinkAttendees
Understand the CNI SpecLink200
KubeCon NA 2023 - all about community!Link631
Navigating the Future of Hiring in the Tech IndustryLink973
Platform Engineering - w/ Carlos SantanaLink246
SimpleOps w/ Ambient MeshLink151
GitLab Diaries - DevSecOps Efficiency through AI & CultureLink179
Building Elegant Platforms in the Face of Tech DebtLink194
CHOP DOWN THOSE Enterprise Security Silos + Identity + AuthNLink108
Do you even Authenticate? Diving into Kubernetes AuthNLink347
The Magic of GitOps is still flowingLink182
Let’s chat about Pipeline SecurityLink551
CIVO Navigate RecapLink575
Everyone gets a Namespace: Provision secure NamespacesLink378
from DevRel to Solution EngineeringLink99
Maximising k8s uptime and reliabilityLink249
Democratize Kubernetes to Achieve Continuous ReliabilityLink78
Understanding Linkerd in 2024Link274
Strategies to navigate the tech job landscapeLink290
Building reliable, safe, scalable apps: C#, K8s and friendsLink137
The role of CNCF Ambassadors. Let’s chatLink353
Impact of Developer Relations and BeyondLink226
eBPF & Cilium for Next-Gen CloudLink240

🎭 Youtube Podcasts, Interviews, and Livestreams!

πŸ”Ž*Click to find more Podcasts, Interviews, and Livestreams content*

🐦 Twitter Nonsense

Look, we had fun in the global group chat. A snapshot of the highlights below.

πŸ”ŽClick to find more Twitter Nonsense content*

πŸ§‘πŸΏβ€πŸ€β€πŸ§‘πŸ» Meetups/Community Events

OpenAI DevDay

πŸ”ŽClick to find more Meetups/Community Events content*

Tech Talks with Nana

πŸ”ŽClick to find more Tech Talks with Nana content*

Civo Navigate

πŸ”ŽClick to find more Civo Navigate content*

Open Source Summit

πŸ”ŽClick to find more Open Source Summit content*

Workshops

πŸ”ŽClick to find more Workshops content*

  1. Quote from Mark Van Dore↩︎

@usrbinkat on social

Mostly tech with fun and opinions to keep it spicy.