This repository serves as a collection of Helm Charts designed for Meowhq clusters. In addition, it aims to showcase the following goals and solutions:
meowhq is name of my home lab cluster 😉
- Manage all Helm Charts in a Monorepo: Consolidate all Helm Charts within a single GitHub repository.
- Automate Helm Chart Versioning: Automate the versioning of Helm Charts when changes are pushed to the main branch.
- Publish Charts to a Registry/Repository: Automatically publish the updated charts to a registry/repository when their versions are incremented.
- Selective Publishing: Publish only the charts that have been modified and had their versions updated.
- Utilize Community Charts Efficiently: Avoid reinventing the wheel; utilize existing community charts, customize them by adding required resources, setting default values, and using container images from proxy cache repositories like Harbor or Artifactory when necessary.
- Automatically Updating Helm Dependencies: Incorporating changes from the upstream chart to quickly adopt the latest features and fixes.
- Create a single GitHub repository and organize Helm Charts within the
charts
directory. - Utilize
release-please
to automate the versioning of Helm Charts, allowing it to update the version inChart.yaml
file automatically. - Configure
release-please
to support Monorepo structures, ensuring that only charts with changes receive version updates in theirChart.yaml
files. - Implement automated workflows using GitHub Actions and
release-please-action
. - Implement a GitHub Actions workflow with a shell script to analyze the Git history, determining which directories
Chart.yaml
files have received updates, and selectively publish them. - Leverage Helm chart dependencies and adopt a subchart methodology. Update dependencies when building a chart to include them in the package.
- Utilize
Renovate
to automatically fetch updates for Helm dependencies and seamlessly integrate them into github actions workflows
By following these solutions, you can effectively manage and automate the versioning and publishing of Helm Charts within your Monorepo while optimizing the use of community charts.