This is a collection of Helm charts for Kubernetes. The charts are used by cLabs to deploy and manage our infrastructure, and can be used by anyone else to manage their own infrastructure, specifically for Celo Network related resources.
The charts are published to the OCI registry at oci://us-west1-docker.pkg.dev/devopsre/clabs-public-oci
. OCI registries are a new standard for container registries, and are supported by Helm 3+, and enabled by default in Helm 3.8.0+.
- akeyless-gadmin-producer: Deploys Akeyless Google Admin producer.
- akeyless-gcp-producer: Deploys Akeyless GCP custom producer.
- akeyless-grafana-access-policy-producer: Deploys Akeyless Grafana access policy producer.
- akeyless-grafana-access-policy-rotated: Deploys Akeyless Grafana access policy rotator.
- akeyless-grafana-sa-producer: Deploys Akeyless Grafana Service Account producer.
- akeyless-okta-producer: Deploys Akeyless Okta custom producer.
- blockscout: Helm chart for deploying the Blockscout-based Celo Explorer.
- celo-fullnode-backups: Automate Celo blockchain chain backups using PVC snapshots.
- celo-fullnode: Deploy Celo Network nodes with different configurations (archive nodes, light nodes, etc.)
- clean-pvcs: Delete PVCs that are not mounted and have not been recently created
- common: Common library with Celo validators and full nodes helper functions and templates
- daily-chain-backups: Helm chart for a cron job taking periodic chain backups and uploading them to GCS.
- image-annotator-webhook: Kubernetes mutating webhook that annotates Kubernetes objects with the container images used in the resource.
- k8s-digester: Helm chart for the k8s digester translating image tags to SHAs.
- kong-celo-fullnode: Chart wrapper over celo-fullnode chart to adapt to Forno. It requires a Kong controller, kong ingressClass and kong CRDs installed in the cluster, and creates the Kong consumers, plugins and rate limits.
- load-test: Helm chart to run a load test for a Celo Network.
- odis-combiner: Helm chart for the Celo ODIS combiners.
- odis-loadtest: Helm chart for deploying the Celo ODIS load tests in GKE.
- odis-signer: Helm chart for the Celo ODIS signers.
- rosetta: Helm chart for the Celo Rosetta client.
- safe-client-gateway: Helm chart for deploying Celo Safe Client Gateway.
- safe-config-service: Helm chart for deploying Celo Safe Config Service.
- safe-transaction-service: Helm chart for deploying Celo Safe Transaction Service.
- testnet: Helm chart for deploying an ephemeral Celo testnet.
- ultragreen-dashboard: Helm chart for deploying the Celo Ultragreen dashboard.
A list of best practices when writing Helm charts can be found in the docs/
folder.
This repo uses GitHub Actions to automatically perform the following:
- On Pull Request using the
helm_test.yaml
workflow: check that chart version is bumped inChart.yaml
, lint, template, install/delete and test the modified charts in a Kind cluster. If the previous checks are OK, it will autogenerate a README for the chart using helm-docs. - On push to
main
using thehelm_release
workflow: publish the new Helm release (version inChart.yaml
) in OCI format to Artifact Registry (projectdevops
, URLoci://us-west1-docker.pkg.dev/devopsre/clabs-public-oci
).
- For checking the
Chart.yaml
version, linting, installing/deleting and testing a chart the chart-testing Action is used (based on the helm/chart-testing CLI tool). - For spinning a Kind cluster the Kind Action is used (based on kind tool).
- For autogenerating the chart README, a custom workflow based on helm-docs is used.
- For publishing a new chart release to Artifact Registry (project
devops
, URLoci://us-west1-docker.pkg.dev/devopsre/clabs-public-oci
), a custom workflow is used.
The chart-testing Action allows testing the installation/deletion of a chart using a custom values.yaml
file. In order to do that, the action allows for a chart to have multiple custom values files matching the glob pattern *-values.yaml
in a directory named ci
in the root of the chart's directory. The chart is installed and tested for each of these files.
If no custom values file is present, the chart is installed and tested with defaults.