Skip to content

Helm charts ⚓

This repository hosts a set of personal Helm Charts and exposes a Helm Repository at https://this-is-tobi.github.io/helm-charts thanks to Github Pages and the Github Action chart releaser.

TIP

See charts details here.

Chart list

ChartApplicationDescriptionArtifactHub
backup-utils-Easy backup tools deployment.link
cnpg-clusterCNPGEasy CNPG cluster deployment.link
dashyDashyA self-hostable personal dashboard.link
homarrHomarrA self-hostable personal dashboard.link
vso-utilsVSOEasy VSO objects deployment.link

Usage

CLI

sh
helm repo add tobi https://this-is-tobi.github.io/helm-charts
helm search repo tobi
helm install <release_name> tobi/<chart_name>

ArgoCD

yaml
[...]
sources:
- repoURL: https://this-is-tobi.github.io/helm-charts
  chart: <chart_name>
  targetRevision: <version> # 1.0.*
  helm:
    releaseName: <release_name>
    parameters: []
    values: ""

Dependencies updates

A script is available to help upgrade charts dependencies:

sh
./ci/scripts/update-charts-dependencies.sh

Template

A template folder is available for easy integration of new chart, to use it follow the steps bellow:

  1. Copy the template directory:

    sh
    # Clone the template chart
    cp -R ./template ./charts/<chart_name>
    
    # Rename the chart
    sed -i "s/chartname/<chart_name>/g" ./charts/<chart_name>/Chart.yaml
  2. Update the service name:

    sh
    # Rename the templates directory
    mv ./charts/<chart_name>/templates/servicename ./charts/<chart_name>/templates/<service_name>
    
    # Update service name in template files
    find ./charts/<chart_name>/templates/<service_name> -type f -exec sed -i "s/servicename/<service_name>/g" ./charts/<chart_name>/values.yaml {} \;
    
    # Update service name in values file
    yq eval ".<service_name> = .servicename | del(.servicename)" -i ./charts/<chart_name>/values.yaml
    sed -i "s/servicename/<service_name>/g" ./charts/<chart_name>/values.yaml
  3. Optionally add another service:

    sh
    # Clone additional service
    cp -R ./template/templates/servicename ./charts/<chart_name>/templates/<other_service_name>
    
    # Update service name in template files
    find ./charts/<chart_name>/templates/<other_service_name> -type f -exec sed -i "s/servicename/<other_service_name>/g" ./charts/<chart_name>/values.yaml {} \;
    
    # Update service name in values file
    yq eval ".<other_service_name> = load(\"./template/values.yaml\").servicename" -i ./charts/<chart_name>/values.yaml
    sed -i "s/servicename/<other_service_name>/g" ./charts/<chart_name>/values.yaml
  4. Update chart name:

    sh
    # Update chart name in values
    sed -i "s/chartname/<chart_name>/g" ./charts/<chart_name>/values.yaml

Do not forget to change <chart_name>, <service_name> and <other_service_name> placeholders.

Contributions

  • Each PR is associated with a pipeline that checks the lint + helm-docs.
  • When a merge is performed on the main branch, the release pipeline publishes the new version of the chart(s) affected and updates the Helm Repo (gh-pages branch).

TIP

The version in the Chart.yaml file must be modified before the merge to main, otherwise the release pipeline will error on version duplication.

Sources

Take a look at the project sources.