:wave: I’m a total beginner to Kubernetes but have...
# kubernetes
a
👋 I’m a total beginner to Kubernetes but have been building and deploying 12 Factor Web Apps and background workers on AWS ECS since 2016. Professionally I build and maintain a tool that takes a Dockerfile and a minimal set of configuration values (env vars, AWS IAM role permissions, firewall rules, sidecar containers) and builds and deploys that using Cloudformation. Does anything exist “off the shelf” to do the same thing in k8s? A generic helm chart? Acorn.io looks promising but is that really the best in class?
h
Acorn is more like a whole paas, there is https://score.dev/ and https://github.com/gimlet-io/onechart
a
a
a
Interestingly I think these tools all try to define the interface but I have found that either companies like to use the Kubernetes native interfaces (e.g. a deployment) or generate their own with something like a custom helm chart values file. Are you thinking you want to rely on something public (which is often vendor specific) or build your own?
a
It's a bit of an 'unknown unknown' at the moment. In the ECS world we have built a tool that synthesises Cloudformation from a declarative YAML config, but when it comes to escape hatches I've felt we're always playing 'catch up' to AWS. Day 1 support for new fields and features is the best we can achieve, but more realistically it's Month 1 or Quarter 1 support given pre-existing commitments and constraints. When digging into the Kubernetes way of working, I'd love to avoid repeating the same mistakes. Terraform is so effective because it has Day 1 support for practically everything by way of open-source contributors and a large community. If there were such a thing for deploying 12-Factor apps to k8s, I'd rather 'buy' (free or paid) before building. But, in saying that, I personally dislike in-house abstractions. I want to hire someone and have them be productive from the get-go, I don't want them learning our specific tooling if they can help it. If we can avoid building a tool all together and just craft a generic helm chart (similar to the
generic-microservices-helm
repo I linked earlier) and this is expected and 'normal' in the k8s world, I'd go that route too. Thank you for the insights, I like the sound of companies using the native interfaces!
a
That all makes a lot of sense, and honestly sounds like the dream! My experience is that we are still in that xkcd world of everyone trying to make a new final FINAL standard. So the idea that people would be familiar based on experiences at other companies is highly unlikely. The only chance is the k8s API, but that comes with its own challenges since it is such a low level concept for most software/application engineers.
a
k8s is a platform with many knobs. Most companies pick a few open source tools and combine them. Some use Terraform all the way, others crossplane. I think something like cnoe.io gives you an example of all the things you can pull together for a solution. Simpler would probably be use AWS fargate or GCP Cloudrun. Lets you skip a lot of the k8s knobs