Hey Daniel ! I’d love to hear more about your thesis !
Helm charts, especially for internally adapted services work really well in a Kubernetes based environment.
What I have found is there is a bit of confusion when it comes to developers seeking to dig deeper into Cloud offerings such as Lambda, SQS or anything of that nature. Distributing through Terraform allows me to distribute everything from Kubernetes, it’s appliances, and all the way through to VPC and subnet configurations, and anything in between.
What I like to do is see Kubernetes as just another *thing that needs to be deployed, the same as I see an EC2 instance.
It becomes easier for me to reason about infrastructure that way.
I can also protect the things that need protecting, and still allow developers the flexibility to experiment with whatever they need from the cloud or things they run on Kubernetes, and then abstract and augment once adoption becomes a bit higher.
The primary interface is represented through distributed Terraform modules, configurable through variables or overrides.
Each module is configurable on it’s own so developers can build “sub” environments, and also clone the module if the want to make bigger changes to the underlying module.
I have got some examples here
https://gitlab.com/kubernetes-catalog which you can have a look at. They are very much for demo, but they contain the primary idea behind the modules.
Another benefit I’ve found when using Terraform as the primary interface, is the templating language behind the modules becomes a non-issue. Helm, Kustomize, or whichever else.