Hi!
In today’s Quick-Tip I’ll showcase briefly how you can leverage any OCI Registry to store your Helm Charts in.
Harbor is an OCI Registry and can thus be used to store Helm Charts in and deploy Helm Charts from.

Prerequisites
Component | Value |
Harbor | Version >= 2.0.0 |
Harbor Project | Create a regular Project in Harbor where you would like to store your Helm Charts in. E.g.: harbor.potus.local/helm |
Helm | Version >= 3. For Helm Version < 3.8.0 you need to enable OCI Support by Exporting an Enviornment Variable: export HELM_EXPERIMENTAL_OCI=1 Starting from version 3.8.0 OCI support is enabled by default. |
Helm Chart | You’ve created a Helm Chart yourself or downloaded one from a public repository |
If you don’t have a Helm Chart, let’s download one from the Bitnami Catalog to your local PC:
mkdir <helm-chart-folder>
cd <helm-chart-folder>
helm pull bitnami/kube-prometheus
This will pull the Prometheus Operator Helm Chart in .tgz format for Kubernetes from the Bitnami Catalog into the specified folder on your PC.

Common Tasks with Helm & OCI Registries (e.g.: Harbor)
Login to your OCI Registry:
helm registry login -u <harbor-user> <harbor-fqdn>
Example:
helm registry login -u mike harbor.potus.local
Push your Helm Chart into the OCI Registry / Harbor Project:
helm push <helm-chart-tgz> oci://<harbor-fqdn/project>
Example:
helm push kube-prometheus-8.3.2.tgz oci://harbor.potus.local/helm
Now your Helm Chart is stored in Harbor. Let’s use it!
Save the possible Values of the Helm Chart into ‘values.yaml’ so you can edit it:
helm show values oci://<harbor-fqdn/project/chart-name> --version <chart-version-MANDATORY!!> > <values-file-name.yaml>
Example:
helm show values oci://harbor.potus.local/helm/kube-prometheus --version 8.3.2 > values.yaml
When working with Helm and OCI Registries it is mandatory to always provide a Version Number for your Helm Chart as shown above.
Let’s deploy our Helm Chart into a Kubernetes Cluster!
helm install <your-deployment-name> oci://<harbor-fqdn/project/chart-name> --version <chart-version-MANDATORY!!> -n <your-preferred-k8s-namespace> --create-namespace -f <values-file-name.yaml>
Example:
helm install prometheus-operator oci://harbor.potus.local/helm/kube-prometheus --version 8.3.2 -n prometheus --create-namespace -f values.yaml
And then you can continue to use Helm as usual to List your Deployments / Releases:
helm list -A
Or to uninstall a Deployment / Release:
helm uninstall <your-deployment-name>
Example:
helm uninstall prometheus-operator
I hope it helps!