<p>I have a big and fairly complex system for install into the k8s cluster.</p>
<p>60 microservices and 10 helm charts installed to 5 namespaces.</p>
<p>Currently, we run 5 helm install/upgrade commands with a pause of 30 seconds between commands. However, this strategy incurs a serious load on nodes due to the fact that we pull docker images and start applications. We have a long and not clear execution time(timeline) that often results in timeouts of components such as consul, Elasticsearch, and applications that depend on the aforementioned components.</p>
<p>I would like to hear opinions about ways to turn this situation around. First, here is our approach so far:</p>
<ol>
<li>Write the script that controls installation by helm charts.</li>
<li>Write an ansible-playbook that runs Helm charts and controls the installation status of components.</li>
<li>Write an ansible-playbook install components (either using Jinja2 templates or Golang templates)</li>
<li>Write the k8s operator that installs components and controls the system status.</li>
</ol>

<p>To answer my own question, I created an installation that can be used as a quick solution to fairly complex installations.</p>
<p>The solution relies on Ansible as an installation orchestrator and Helm as a package manager.</p>
<p>You can browse my <a href="https://github.com/ozlevka/k8slogginginstall" rel="nofollow noreferrer">github repo contains the code</a>.</p>
