coordination #80142: [saga][epic] Scale out: Redundant/load-balancing deployments of openQA, easy containers, containers on kubernetes
Create a helm chart to deploy web UI in kubernetes
Helm charts allows you to automate the deployment of a complex set of items in a kubernetes environment. These elements are not only limited to pods (containers) but also to configurations (configmaps and secrets), and all the resources they need in the correct order and with the proper checks.
Thanks to the work done in #80142 we saw how to divide the web UI into parts, which were could be converted into HA and which had to remain standalone. In addition to how we should configure the load balancer to integrate each of the different services that make up the complete web UI.
This ticket proposes to create a helm chart capable of generating a complete and functional deployment of the web UI based on the following prerequisites:
- There is a pre-existing installation of kubernetes
- AC1: The complete web UI HA is installed with the DB with the default options
- AC2: The web UI is accessible from outside of the cluster
- AC3: The helm chart is configurable with: Typical and basic parameters and, number of replicas for HA, type of persistence for DB, ...
- AC4: Documentation is completed with instructions of use.
- Highly recommended based on work done in # 80142
- Use local kubernetes deployments to development purposes (this avoid the infra needs). For instance: minikube, k3s,...
- Figure out if is necessary to publish the helm chart and where
For validation the helm chart we could use
helm lint ./chart
But also there is an other interesting tool kubebal
helm template ./chart | kubeval --strict
This allows testing with the default helm chart values, but also set different values and test the helm chart with these. This is important in case we have different branches of execution based on conditions
helm template --set area.key="val" | kubeval --strict
Or more complex, creating a VALUES.yaml file with the new values
area: key: "val"
And use to check it
echo "$VALUES" | helm template -f - | kubeval --strict