4 ms·
I find myself conflicted between two approaches at work: 1. Write a provider/extension/whatever for a tool like Terraform or Pulumi. I live in a world where th
by sigwinch28 4y ago
I find myself conflicted between two approaches at work:
1. Write a provider/extension/whatever for a tool like Terraform or Pulumi. I live in a world where the infrastructure doesn't move underneath my feet. I am the source of truth. I feel like I only need to reconcile changes when I make changes to my IaC repositories.
2. I could write something that exists in a control plane, like Kubernetes operators or Crossplane. I live in a world where I look at the world, find the delta between current state and desired state, then try to reconcile. This is an endless loop.
I feel like these are different approaches with the same goal. Why should I decide either way beyond tossing a coin?
Some use cases:
- an internal enterprise DNS system which is not standards-compliant with the world at large
- an internal certificate authority and certificate issuing system.
- aliasxneo 4y agoTerraform doesn't run a control loop. If you've never been in a situation where you've needed a control loop to reconcile the deployment state, then you've probably never needed an operator. In most cases, the native controllers (and resources) from Kubernetes are enough, but sometimes, an application requires additional hand-holding. I find this to be especially true for legacy applications.