I have big and complicated system for install into k8s cluster.
60 microservices and 10 helm charts installed to 5 namespaces.
Currently, we run 5 helm install/upgrade commands with a pause of 30 seconds between commands. This kind of installation provide a serious load on nodes due to pull docker images and start applications. We have a long and not clear installation time with often timeouts of components as consul, elasticsearch, and applications depend on these parts.
I would like to hear opinions about the way to change this terrible situation.
There's a lot of ways of doing this. But you can use the kubernetes api directly. You can create any tech server such as Spring Boot, NodeJS, etc that controls the creation of the Kubernetes objects that you want. This way, basically, you'll be doing a customized Helm API, but the main difference is that you'll customize in your way with your needs.
To answer my own question I have been created the desired installation that can be used to answer to quick solution for complicated installations. The solution is used ansible as an installation orchestrator and Helm as a package manager for install third party installation.
You can browse my github repo contains the code.