Did anyone build another oam implementation or Ia...
# general
c
Did anyone build another oam implementation or IaC api gateway? I look for a way to build a component to allocate databases dynamically and consider a few options. 1. Crossplane, it looks the easiest because I can use cdk8s or a regular yaml marshaller, push the yaml to s3 and give it to fluxcd, done 2. generate json, embed terraform code right into my go app, prepare providers and apply it from the generated json 3. same as 2, but cdktf, the only concern it takes something to do about cdktf.json to prepare providers and then fork and patch the original module in order to generate json to output instead of the file system, so I could use the generated json further 4. Simply call could api, but I’m concerned I will build terraform in the end 5. I tried to look at pulumi, but it doesn’t seem to be really open source, only CLI is available to look how it manages the state and there is no real source, only binary usage is possible
p
which cloud? there are also cloud provider Controllers available like: https://github.com/aws/aws-application-networking-k8s
an option is to build a Custom Kubernetes Operator if what is available on GitHub does not help
a
What do you mean by IaC api gateway? You mention the goal is to allocate databases dynamically, is this about having people make requests for one? If so, are they infra oriented people or not infra oriented peopel? Or is this about machines making requests as a part of other workflows? Or both/neither? The tools here can all provision infra, but it sounds like you are most interested in the experience for someone outside the implementation of these tools? If so, who those people are makes a big difference on which of these may best suit.
c
It’s to give the other tech people cloud resources, they understand there infrastructure they request, but it’s suppose to reduce their tinkering time, kinda providing an internal marketplace
a
Gotcha. So in this case, would the tech people asking for these cloud resources be making requests to your IaC of choice? E.g. they would create a claim on a composite resource you already created if you choose Crossplane? Or would they actually need to speak directly to providers etc (again, in Crossplane world)
The reason I ask is because the user experience is one side, and the provider experience is the other. If the users are expected to go all the way to the provider level, you will want to pick a tool they can easily understand and use. If you are expecting one group of people (the users) to just set config, and another set of people (the infra providers) to manage the translation from config to running resources then you have a bit more options. I have previously used google config connector (the GCP specific tool as Piotr referenced) and my experience is that while we all wanted this to be easy enough for app devs to pick up, in reality they copied and pasted across repos because no one truly understood it, nor was it really efficient for them to try to. So I prefer solutions that allow for config from users, then a provisioning service that also translates those configs to include org-wide opinions and processes. Any of the IaC tools you mention can do the provisioning, it is the translation layer that I think you are thinking about? 💭
c
The goal is to provide ui/yaml to give an option just to install the app(a database let’s say) and not to talk to Crossplane at all, picking only size and replicas for instance, even vpc we configure internally because we know where the app is. I just recently found pulumi automation api, it look like something I look for, the only concern it requires CLI installed (just weird) and probably we can process the infra there somehow else. All the tools I listed require additional tinkering like CLI installing, provider management and so on, only crossplane looks great, but it is expected to increase a cluster load.
a
Yea for sure, I think you may like this thread for more ideas on separating the IaC tool from the user experience: https://platformengin-b0m7058.slack.com/archives/C02DF3KKNES/p1738836061111869
m
In general if you want nice UI/UX to your automation you can setup something like https://docs.tempestdx.com/developer/private-apps/overview. You can wrap pretty much anything with it and show UI form asking for required input.
c
it is not really what I look, but seems nice. did you like it more than port/backstage?
m
It's a lot simpler to setup and use than the backstage. I didn't used port yet so can't compare there.
r
SST or Pulumi seem like good IAC tools