Most of us know using Infrastructure-as-Code (IaC) is always a good idea. You use tools like Terraform, CloudFormation / CDK or Pulumi to model your desired state and have the tools figure out how to modify your account to reflect that state. That kind of declarative paradigm is also used in Kubernetes, where you model the cluster state using YAML configuration (often templated through e.g. Helm) and have Kubernetes figure out itself how to make it so.
Unfortunately, the state of stacks and resources cannot easily be shared across tools and if you are familiar with one you might not necessary know how to work with the other. And what to do with infrastructure resources that are tied closely to your application, like databases or buckets? Wouldn’t it be nice if you could package those into your application Helm chart so you can deploy everything in one go, and manage the application and its infra in the same lifecycle with the same tools?
In comes Crossplane: a provider-driven Kubernetes operator for declaring infrastructure as Kubernetes Custom Resources created next to your actual application deployment. In this talk, we will have a closer look at Crossplane and I will share some of my experiences working with it.