Internet Explorer is no longer supported. Many things will still work, but your experience will be degraded and some things won't function. Please use a modern browser such as Edge, Chrome, or Firefox.

HOWTO: Create and Publish Helm Charts to a Private Repository

view on GitHub

ProGet allows you to easily set up Helm "Feeds" as private repositories for your Helm Charts, enabling you to publish, store, and share them internally.

This page will take you through creating a feed in ProGet to serve as a private Helm Chart Repository. We'll also cover creating, publishing, and install Helm Charts from this feed.

Step 1: Create a New Helm Feed

First, we will create a feed to host your Helm charts. Start by selecting "Feeds" and "Create New Feed". Next, select "Helm Charts".

Then select "No Connectors (Private packages only)" as we will be creating a private feed. From here, we will give our feed a name. In this guide, we will call it internal-helm, and then click "Create Feed".

You will then see several options. These relate to ProGet's SCA features, useful for third party charts. As we will be using our own internal charts, we will leave these boxes unchecked, and select "Set Feed Features". You will then be redirected to your new internal-helm feed, currently empty.

Step 2: Create Your Helm Chart

There are no special requirements for creating Helm Charts in ProGet, but you will need to follow image naming conventions in your Values file if you'd like ProGet to detect the container images that your chart references.

In general, we recommend creating simple charts from scratch instead of trying to modify or use a third-party chart you might find on Artifact Hub.

This involves using the helm create command. In the case of creating a chart my-chart, you would enter:

helm create my-chart

You will then need to modifying the necessary files in the created directory. Finally run the helm package command to create a package file. For example, creating version 1.15.3 of the package my-chart located in ./projects/helm-charts/mychart you would enter:

$ helm package ./projects/helm-charts/mychart

This will create the package (e.g. my-chart-1.15.3.tgz) that can be published to your feed. See the official Chart Template Guide to learn how to get started with creating your own Helm Charts.

Step 3: Create an API Key

Now create an API Key which will allow you to authenticate to the internal-helm feed to publish Helm charts to it. You can read more about creating API keys in ProGet on our API Key page.

When creating an API Key, Select "Feeds (Use Certain Feeds)" as the "Feed Type" and select the internal-helm feed. When setting the API key you can either use any alphanumeric sequence, or just leave it blank for ProGet to autogenerate one for you.

Make sure the "View/Download" and "Add/Repackage" boxes are checked, and then select "Save".

Step 4: Publish Your Helm Chart

To publish your Helm chart to your internal-helm feed, you can use pgutil. This will require some minor configuration before use. This includes setting up your ProGet instance and API key as a source by running the sources add command. For example, adding the ProGet instance https://proget.corp.local/ with the API Key abc12345 you would enter:

$ pgutil sources add --name=Default --url=https://proget.corp.local/ --api-key=abc12345

Now upload your charts by using the pgutil packages upload command:

$ pgutil packages upload --feed=internal-helm --input-file=./projects/helm-charts/mychart

If you're using ProGet 2023 or earlier, you can instead issue a PUT request with the package file as the content to the endpoint URL. For example:

curl https://proget.corp.local//helm/internal-helm --user api:abc12345 --upload-file ./projects/helm-charts/mychart

This method also works in ProGet 2024 and later, should you prefer to use that. Note that neither the helm push nor the helm-push are compatible with ProGet feeds.

Step 5: Adding the Helm Feed as a Repository

To install chart from your internal-helm feed, it needs to be registered as a repository. You can use the helm repo add command to do this. We recommend using proget as the repository name or, if you have multiple Helm feeds configured, you should use proget-«feed-name» instead. For example, if adding your internal helm feed on the ProGet server proget.corp.local, you would enter:

$ helm repo add proget http://proget.corp.local/helm/internal-helm

(Optional) Authenticate to Your Helm Feed

By default your internal-helm feed does not require authentication to install or view charts. However, you may want to make your feed private and require authentication to access. You can learn more about how to do this by reading Authenticating Helm Feeds