Helm Repositories in Kubernetes

Helm Repositories in Kubernetes

A friendly, step-by-step guide to the shelves where Helm charts are stored and shared: what a repository is, how Helm finds and downloads charts from it, the classic and modern kinds of repository, and how to publish, secure and troubleshoot them.

Imagine you want to cook a complicated dish for the first time. You could invent every step yourself, or you could visit a cookbook shop, pick a well-tested recipe, and follow it. The recipe lists the ingredients, the quantities and the steps, and if the author improves it next year, you can fetch the new edition. The shop keeps thousands of recipes, each with a title, an edition number and an index at the front so you can find them.

Deploying an application on Kubernetes is a lot like cooking a complicated dish. It needs many ingredients: a deployment, a service, configuration, storage, permissions and more. Helm packages these ingredients into a single recipe called a chart. A Helm repository is the cookbook shop where charts are stored, numbered and shared.

In this guide we build the idea from zero. Every new word is explained the first time it appears, and every big idea comes with an everyday comparison so it sticks. By the end you will know what a Helm repository is, how Helm talks to it, what kinds exist, how to choose between them, and how to keep them safe and healthy.

1What Are Helm Repositories?

To understand Helm repositories we first need a handful of simple words: package manager, chart, release, repository and version.

Word 1

Package manager

A package manager is a tool that finds, downloads, installs, upgrades and removes software packages for you, so you never assemble them by hand. Helm is the package manager of Kubernetes.

Word 2

Chart

A chart is a Helm package. It is a folder of templates and default settings that together describe everything an application needs on Kubernetes.

Word 3

Release

A release is one installed copy of a chart in a cluster. You can install the same chart many times, and each installation is its own release with its own name.

Word 4

Repository

A repository is a place that stores charts and publishes a catalogue of them, so that Helm can find and download any chart by name and version.

Word 5

Version

Every chart has a version number that changes whenever the chart changes. Versions follow a three-part scheme, so that newer and older editions can be told apart.

Word 6

Values

Values are the settings you can adjust when installing a chart, such as how many copies to run or which address to use. The chart ships sensible defaults.

So what exactly is a Helm repository?

A Helm repository is a simple server that holds two kinds of things: packaged charts, each stored as a compressed archive file, and one catalogue file that lists every chart and every version available. When you tell Helm about a repository, it downloads the catalogue and remembers it. From then on, you can search the catalogue, ask for a chart by name and version, and Helm fetches the right archive and installs it.

The important idea is that a repository is deliberately simple. It does not need special software. Anything that can serve static files over the web, such as a small web server, a storage bucket or a page-hosting service, can act as a repository as long as the catalogue and the archives are in the right places. This simplicity is why so many people and companies publish charts.

Everyday analogy

Think of a library. The books are the packaged charts. The card catalogue at the entrance is the index file. You do not walk the shelves looking for a title; you consult the catalogue, which tells you the exact book and edition, and then you fetch it. A repository is the whole library: shelves plus catalogue.

The three promises of a repository

Promise 1

Findable

Every chart and every version is listed in one catalogue that Helm can read and search.

Promise 2

Repeatable

A given chart name and version always refers to the same package, so an installation today matches one made next month.

Promise 3

Shareable

Anyone with access can download the same packages, so teams and companies share tested recipes instead of rewriting them.

A short history

The first generation of Helm shipped with a big shared repository of community charts, and for a while that shared shelf was the way most people found software. As the project grew, the community moved from one giant shared shelf to many independent repositories run by the projects themselves, and a discovery website appeared that lets people search across them. More recently, Helm gained the ability to store charts in the same kind of registries that already hold container images, a style called OCI. Today both the classic style and the registry style are in use, and this guide covers both.

i
Tip

A repository is not the same as a release, and not the same as a chart. The chart is the recipe, the release is the dish you cooked, and the repository is the cookbook shop. Keeping these three words separate removes most early confusion.

2The Problem Helm Repositories Solve

A chart is only useful if people can get it, trust it and get the same one every time. Repositories exist to make that easy.

Sharing recipes by hand is a mess

Suppose a team writes a chart for its application. How do the other teams get it? Emailing a folder is slow. Copying files between laptops means everybody ends up with a different edition. Storing charts inside each application’s code repository ties the recipe to one project and makes reuse awkward. And nobody can tell which edition is the newest, or which one is running in production.

Headache 1

Where do I get the chart?

Without a shared place, people hunt through chat messages and file shares for the latest copy.

Headache 2

Which edition is which?

Unnumbered copies drift apart, and nobody knows what is actually deployed.

Headache 3

Can I trust it?

A recipe from an unknown source could contain harmful instructions. Users need ways to know who published it and whether it was altered.

Headache 4

How do I upgrade?

Without a catalogue of editions, finding and applying an improved version means detective work.

Headache 5

Dependencies

Charts often need other charts, such as a database. Someone must say where those come from.

Headache 6

Access control

Internal charts should be visible to the company and no one else, while public charts should be open to everyone.

What people did before

Old approachHow it workedWhy it hurt
Copy folders between peopleCharts travelled as attachments or shared foldersEvery copy drifted, and nobody knew which was current
Chart inside each application’s source repositoryThe recipe lived next to the codeHard to reuse across projects, hard to version independently
Plain manifests pasted everywhereTeams copied long configuration files and edited themCopy-paste errors and no upgrade path
Download links in a wikiA page listed links to archive filesStale links, no catalogue, no search
flowchart LR
  subgraph W["Without a repository"]
    A1["Team writes a chart"] --> B1["Copies sent by chat or email"]
    B1 --> C1["Many different editions"]
    C1 --> D1["Nobody knows what is deployed"]
  end
  subgraph V["With a repository"]
    A2["Team packages a numbered chart"] --> B2["Publishes it to the repository"]
    B2 --> C2["Everyone installs by name and version"]
    C2 --> D2["Same result every time"]
  end
    
Figure 1. Without a repository, editions drift. With one, everyone installs the same numbered package.

Reading Figure 1

The left half shows the world without a repository. A team writes a chart and sends copies around by chat or email. Soon there are many editions, and nobody can say what is deployed. The right half shows the calmer world. The team packages the chart with a version number and publishes it to the repository. Everyone else installs it by name and version, and because a given version never changes, the result is the same for everyone, every time.

Everyday analogy

Picture a company where every branch office prints its own copy of the staff handbook, editing it as they like. Within a year there are twelve different handbooks. Now picture one official handbook, numbered by edition, kept in one central place. Everyone knows which edition applies. A Helm repository is that central place.

1
catalogue file lists every chart and version in a classic repository
0
special server software is required for a classic repository
2
main styles today: classic web repositories and registry-based storage

3Core Concepts You Need First

A few building blocks appear again and again around repositories. Learn them once and the rest will follow.

Block 1

Chart archive

A chart packaged into one compressed file whose name includes the chart name and version. This is what gets stored and downloaded.

Block 2

Index file

The catalogue of a classic repository. It lists each chart, each version, a short description, the download address and a fingerprint of the archive.

Block 3

Chart version

The number of the chart’s own edition. It changes when the chart’s templates or defaults change.

Block 4

Application version

The version of the software that the chart installs. It is informational and separate from the chart version.

Block 5

Dependency

Another chart that this chart needs, listed together with the repository where it can be found.

Block 6

Provenance file

A small signature file stored beside a chart archive, letting users verify who published it and that it was not changed.

Two versions, two meanings

Every chart carries two numbers that people mix up. The chart version describes the recipe itself. If you change a template, a default setting or the way the chart works, the chart version goes up. The application version describes the software the recipe installs, such as the release number of a web server. A new release of the software may come without any change to the recipe, and a new recipe may install the same software. Repositories index charts by chart version, because that is what identifies a unique package.

NumberDescribesChanges whenUsed by the repository as
Chart versionThe packaged recipeTemplates, defaults or structure changeThe unique identity of a package
Application versionThe software being installedThe software releases a new editionA descriptive label only
Everyday analogy

Think of a cookbook. The edition number of the book is like the chart version. The variety of tomato the recipe uses is like the application version. The cookbook may be reprinted with new photographs while the tomato stays the same, or the tomato may change while the book stays the same. The shop shelves books by edition.

Semantic versioning in plain words

Chart versions follow a widely used three-part scheme: a major number, a minor number and a patch number, separated by dots. A patch increase means small fixes. A minor increase means new features that do not break existing users. A major increase means changes that may break existing users. When you ask for a chart, you can name an exact version or a range, such as any patch of a certain minor edition. Pinning an exact version gives repeatable installs; using ranges gives automatic fixes at the cost of change.

Classic repositories and registry-based storage

A classic repository is a web location with a catalogue file and archives beside it. A registry-based store keeps charts in the same kind of registry that holds container images. There is no single catalogue file; each chart is addressed by a registry address, a name and a version tag. Both styles work with the same Helm tool, but they behave differently for searching, authentication and publishing, as we will see.

!
Watch out

A repository lists charts, not the container images those charts deploy. A chart only points at images that live in an image registry. Trusting a chart does not automatically mean trusting every image it pulls.

Discovery is not hosting

A public website exists where people search for charts published across many repositories. It is a discovery service: it indexes information about charts and points you to the repository that actually hosts them. It does not store your charts for you. When you add a repository you are talking to the real host, not to the discovery website.

4Architecture and Components

Several pieces cooperate between the person who writes a chart and the cluster that runs it. It helps to see who talks to whom.

flowchart TB
  DEV["Chart author"] -->|"Packages a numbered chart"| ARC["Chart archive"]
  ARC -->|"Published to"| REPO["Repository: archives plus catalogue or registry entries"]
  CI["Publishing pipeline"] -->|"Updates the catalogue"| REPO
  CLIENT["Helm command on a laptop or pipeline"] -->|"Adds and refreshes"| CACHE["Local cache of catalogues"]
  CACHE -->|"Reads catalogue from"| REPO
  CLIENT -->|"Downloads the chart archive"| REPO
  CLIENT -->|"Renders templates and sends objects"| API["Kubernetes API server"]
  API --> REL["Release records stored in the cluster"]
    
Figure 2. The main pieces: author, archive, repository, publishing pipeline, Helm client, local cache and cluster.

Reading Figure 2 piece by piece

Start at the top left. A chart author packages the chart into a numbered archive and publishes it to the repository, usually through an automated pipeline that also updates the catalogue. On the user’s side, the Helm command keeps a local cache of the catalogues of the repositories it knows. When the user asks for a chart, Helm consults the cache to find the right version, downloads that archive from the repository, renders the templates into ordinary Kubernetes objects, and sends them to the cluster’s API server. The cluster stores a record of the release so that later upgrades and rollbacks know what was installed.

Notice that the repository never talks to the cluster. It is a passive shelf. All the work happens in the Helm command on the user’s machine or in a pipeline. This fact has consequences for security and for network design that we explore later.

The parts, one by one

Part

Repository host

The web server, storage bucket, registry or chart-hosting product that serves the catalogue and archives.

Part

Catalogue

The index file, or in registry style the list of tags for each chart name, that tells Helm what exists.

Part

Helm client

The command-line tool that searches, downloads, renders and installs. It runs on a person’s machine or in a pipeline, not in the cluster.

Part

Local cache

A folder on the user’s machine holding downloaded catalogues and archives, so repeated searches are quick.

Part

Publishing pipeline

An automated job that packages, signs, uploads and updates the catalogue when a chart changes.

Part

Release records

Data stored in the cluster describing each release and its history, so upgrades and rollbacks work.

Where a repository can live

Because a classic repository only needs to serve files, it can live almost anywhere: a small web server you run, an object storage bucket behind a web address, a free page-hosting service attached to a code repository, or a dedicated chart-hosting product. Registry-based storage lives in a container registry, which many organisations already run. Cloud providers also offer managed registries that accept charts. The best home is usually wherever your team already manages access, backups and availability.

Everyday analogy

Think of a mail-order catalogue. The publisher prints the catalogue and stores goods in a warehouse. The customer reads the catalogue at home, orders by item number, and the goods arrive. The warehouse never visits the customer’s house. The repository is the warehouse and catalogue, the Helm command is the customer, and the cluster is the kitchen where the goods are used.

i
Tip

When something goes wrong, decide which stage failed: reaching the repository, finding the chart in the catalogue, downloading the archive, verifying it, or installing it in the cluster. Each stage has its own clues.

5How Helm Repositories Work Internally

Now let us open the box. We will look at what is inside the catalogue, and how Helm turns “install this chart” into a downloaded, checked package.

What the catalogue contains

The index file of a classic repository is a plain text document. For every chart name it lists every published version, and for each version it records the chart’s description, its chart and application versions, the date it was created, the list of dependencies, one or more download addresses and a digest. The digest is a fingerprint of the archive: a long string computed from the file’s contents, which changes completely if even one byte of the file changes. Helm uses it to check that the downloaded file is the one the catalogue promised.

Catalogue entryWhat it tells HelmWhy it matters
Chart name and versionWhich package this entry describesIdentifies exactly one downloadable archive
Description and keywordsWhat the chart is forPowers searching
Application versionWhich software edition the chart installsHelps users pick the right release
Download addressesWhere to fetch the archiveMay be beside the catalogue or on another host
DigestFingerprint of the archiveDetects corruption and tampering in transit
DependenciesOther charts neededLets Helm fetch them too
Creation dateWhen the version was publishedOrders versions and supports audits
flowchart TD
  S["User asks to install a chart by name and version"] --> A{"Is the repository known and its catalogue cached?"}
  A -->|"No"| R["Add repository and download the catalogue"]
  A -->|"Yes"| B{"Does the catalogue contain that chart name?"}
  R --> B
  B -->|"No"| X1["Error: chart not found"]
  B -->|"Yes"| C{"Does a version match the request or range?"}
  C -->|"No"| X2["Error: no matching version"]
  C -->|"Yes"| D["Download the archive from its address"]
  D --> E{"Does the digest match the catalogue?"}
  E -->|"No"| X3["Error: file changed or corrupted"]
  E -->|"Yes"| F["Unpack, merge settings, render templates"]
  F --> G["Send objects to the cluster and record the release"]
    
Figure 3. The questions Helm asks between “install” and “installed”.

Reading Figure 3

The flow has several checkpoints, each a chance for a clear error. First, Helm needs a cached catalogue for the repository, and downloads it if it does not have one. Second, the chart name must appear in the catalogue. Third, a version must match what the user asked, either exactly or within a range; if not, Helm says no version matches. Fourth, Helm downloads the archive and compares its fingerprint to the catalogue’s digest, refusing files that differ. Only then does it unpack the chart, merge the default settings with the user’s own, turn the templates into ordinary Kubernetes objects and send them to the cluster.

How registry-based storage differs inside

In registry style there is no catalogue file. A chart is stored as an artefact in a registry, addressed by a registry host, a path and a tag that carries the version. When Helm is asked to install, it contacts the registry, authenticates if required, asks for the artefact with that tag, downloads its layers and unpacks them. The registry itself keeps a digest for each artefact, and tags can often be locked so that they never point at anything else. Because there is no index to refresh, there is no add or update step, and versions appear the moment they are pushed. The trade-off is discovery: to list versions you ask the registry for the tags of a given chart path, and to search across many charts you need a discovery site or the registry’s own interface.

This style also inherits everything registries already do well: fine-grained permissions, robot accounts for pipelines, replication between regions, scanning and signing support, and storage that is built for large numbers of artefacts.

Searching happens locally

When you search for a chart in your added repositories, Helm searches the cached catalogues on your own machine, not the servers. That makes searching fast and lets it work offline, and it also means results are only as fresh as your last refresh. Refreshing downloads the newest catalogues again. If a colleague published a new version an hour ago and you have not refreshed, your searches will not show it.

Adding a repository

Helm records a friendly local name and the repository’s web address in its configuration, and downloads the catalogue into the cache. The name is only local; two people may use different names for the same repository.

Refreshing

Helm downloads the catalogue of every added repository again and replaces the cached copies. Nothing changes in your cluster.

Installing or upgrading

Helm consults the cached catalogue, downloads the chosen archive, verifies it, renders it and applies it. The repository is only involved in the download step.

Resolving dependencies

A chart lists the charts it needs and where to find them. Helm downloads those into the chart’s own folder and records the exact versions in a lock file, so that later builds are repeatable.

Everyday analogy

Imagine ordering from a mail-order catalogue you keep at home. You look up an item in your own copy, so searching is quick, but if the publisher printed a new edition last week, your copy will not show it until you request the latest one. The item arrives with a sealed label, and you check that the label matches the catalogue before opening it.

!
Watch out

The digest protects against corruption and accidental changes, but it comes from the same repository as the file. If an attacker controls the repository, they control both. Signing, discussed in Chapter 9, provides an independent check.

6Data Flow and Lifecycle

Let us follow one chart from the day it is written to the day a release using it is removed.

sequenceDiagram
  participant A as Author
  participant P as Pipeline
  participant R as Repository
  participant H as Helm client
  participant C as Cluster
  A->>P: Change chart and raise the version
  P->>P: Check the chart and package it
  P->>R: Upload archive and update catalogue
  H->>R: Refresh catalogue
  R-->>H: New catalogue
  H->>R: Download archive for chosen version
  R-->>H: Archive
  H->>H: Verify digest and render templates
  H->>C: Create or upgrade objects
  C-->>H: Release recorded
  H->>C: Later, roll back or uninstall
    
Figure 4. The life of a chart, from authoring to installation and removal.

Reading Figure 4

The story begins with the author changing the chart and raising its version. A pipeline checks the chart, packages it, uploads the archive and updates the catalogue. Later, a user’s Helm client refreshes the catalogue, sees the new version, downloads the archive, checks the digest and renders the templates. It then creates or upgrades objects in the cluster, which records the release. If something goes wrong, the user can roll back to a previous revision or uninstall the release. Notice that the repository takes part only in the middle steps; it never touches the cluster.

Six stages of a chart’s life

Stage 1

Authored

The chart is written, tested and given a new version number.

Stage 2

Packaged

The chart folder is compressed into an archive, optionally signed.

Stage 3

Published

The archive is uploaded and the catalogue is updated so the new version can be found.

Stage 4

Discovered

Users refresh their catalogues and see the new version.

Stage 5

Installed or upgraded

Helm downloads, verifies and applies the chart, creating a numbered revision of the release.

Stage 6

Retired

Old versions may be deprecated, marked in the catalogue and eventually removed, though removal can break users who pinned them.

What if something goes wrong?

If the repository is unreachable when a user installs, the download fails, and installs from that repository stop, while releases already running in the cluster are unaffected. If a published version is faulty, the fix is to publish a new, higher version, not to change the old one. Changing a published version breaks the promise of repeatability, and causes digest mismatches for anyone who cached the old file. If a version is deleted from the repository, pipelines that pinned it will fail to build, which is why many teams mirror what they depend on.

When a catalogue is out of date

Users see old versions or cannot find a new chart. Refreshing fixes it. Automated pipelines should refresh before searching.

When a version must be withdrawn

Publish a fixed version, mark the bad one as deprecated where the repository allows it, and tell users. Deleting is a last resort.

When the repository moves

Users must change the address they added. Keeping old addresses redirecting for a while eases the move.

Everyday analogy

Think of a publisher who discovers a typo in a printed cookbook. They do not sneak into every kitchen to fix the copies. They print a corrected edition with a new number, and tell readers. The old edition remains on some shelves, clearly labelled as the earlier edition.

i
Tip

Treat every published chart version as immutable. If you need to change anything, raise the version. This one habit prevents a huge class of confusing, hard-to-reproduce problems.

7The Kinds of Repository

There are several ways to host charts. Each has its own personality, strengths and traps.

flowchart TB
  subgraph A["Style A: Classic web repository"]
    A1["Catalogue file plus archives on a web server or bucket"] --> A2["Helm adds it by address and caches the catalogue"]
  end
  subgraph B["Style B: Registry-based storage"]
    B1["Charts stored in a container registry as artefacts"] --> B2["Helm addresses each chart by registry path and version"]
  end
  subgraph C["Style C: Chart-hosting product"]
    C1["A product with an interface, access control and upload features"] --> C2["Speaks the classic style, the registry style, or both"]
  end
  subgraph D["Style D: Local folder or source repository"]
    D1["Chart folder used directly from disk or from version control"] --> D2["No catalogue at all"]
  end
    
Figure 5. Four ways of hosting charts, from a plain web folder to a full product.

Reading Figure 5

Each box shows a different way of hosting. In style A, a catalogue file and the archives sit on any web server or storage bucket, and Helm adds the address and caches the catalogue. In style B, charts are stored in a container registry beside your images, and each chart is addressed by a registry path and a version. In style C, a dedicated product adds a web interface, access control and upload features, and may speak both styles. In style D, there is no repository at all: you point Helm directly at a chart folder on disk or in version control.

Style A: the classic web repository

This is the original and simplest style. The publisher packages charts, places the archives on a web location, and runs a small step that builds or updates the catalogue file. Users add the address and can then search and install. It works with static hosting, which is cheap and reliable. Access control is limited to whatever the web host supports, such as basic credentials or signed addresses.

Strength

Very simple to host

Any static file host works. There is nothing special to install or operate.

Strength

Searchable catalogue

One file lists everything, so searching is quick and offline-friendly.

Limit

Catalogue grows

A huge catalogue is slow to download and refresh.

Limit

Basic access control

You depend on what the web host offers.

Style B: registry-based storage

Modern Helm can store charts in the same kind of registry that holds container images. Each chart name lives at a registry path, and each version is a tag. There is no catalogue file to refresh, so there is no add or update step; you refer to the chart’s full address when you install. Organisations that already run a registry get charts, authentication and permissions with the same system that holds their images. Listing and searching across a registry work differently, because there is no single catalogue.

Strength

Reuses your registry

One system, one login model and one set of permissions for images and charts.

Strength

Immutability options

Many registries can lock tags, protecting published versions from change.

Strength

Signing and scanning support

Registry ecosystems offer signing and vulnerability scanning tools.

Limit

No built-in search across charts

You need to know the chart’s address, or use a discovery service or registry interface.

Style C: chart-hosting products

Some products are built specifically for chart hosting or for general artefact hosting, including charts. They add a web interface, users and teams, access rules, upload features, replication between sites and security scanning. They usually speak the classic style, the registry style, or both, so that different users can use whichever their tooling prefers.

Style D: no repository at all

Helm can install straight from a chart folder or archive on disk, and pipelines often keep a chart in the same source repository as the application. This is fine for a chart used by one project. It stops scaling when many teams need the same chart, because there is no shared numbered catalogue.

Everyday analogy

Think of four ways to share recipes. Pinning them on a village noticeboard with an index card is the classic repository. Storing them in the town’s main library beside all the other books is registry-based storage. Subscribing to a recipe club with membership cards and a librarian is a hosting product. Keeping one recipe in your own kitchen drawer is a local folder. All work, and each suits a different community.

!
Read this twice

This article was written without live web research. Helm’s support for registries, the names of hosting products and the details of the commands have changed across releases, so confirm them in the official documentation for the Helm version you use.

8Side by Side, and Where to Host

A single table cannot decide for you, but it shows the shape of the differences at a glance.

QuestionClassic web repositoryRegistry-based storageHosting productLocal folder or source repository
Setup effortVery lowLow if you already run a registryModerateNone
CatalogueOne index fileNone, addressed by path and tagProvided by the productNone
Refresh step neededYesNoDepends on style usedNo
Access controlWhatever the web host offersThe registry’s permissionsRich, product-specificFile or source repository permissions
SearchingLocal search of cached cataloguesNeeds a discovery service or interfaceProduct interfaceNot applicable
Immutability of versionsBy disciplineOften lockable tagsOften configurableBy source control history
Best fitPublic sharing and small teamsOrganisations with a registry alreadyLarger organisations needing governanceSingle-project charts

Testing a repository before you trust it

A short experiment beats a long debate. From a clean machine, add the repository, refresh, search for a known chart, list its versions and install one into a test cluster. Then try to break things on purpose. Request a version that does not exist and confirm the error is clear. Use an expired or wrong credential and confirm that access is refused. Rename nothing, yet republish the same version in a test copy and watch how caches and digests react. Verify a signed chart with the right key and again with the wrong one. Block the repository’s address and confirm that pipelines fail fast with a readable message. Keep the results in your team’s notes together with the Helm version, and rerun the same experiment after every upgrade of the host or the client. Ten minutes of testing here saves hours of guessing during a real incident.

Places charts commonly live

Free

Static page hosting

A free hosting service attached to a code repository can serve a classic repository at no cost. Popular for open-source projects.

Cloud

Object storage with a web address

A storage bucket serving files is a cheap, durable home for a classic repository, with access rules from your cloud.

Cloud

Managed cloud registries

Major clouds offer registries that accept charts, with the cloud’s own identity and permissions.

Self-run

Dedicated open-source servers

Small servers built just for charts, and general artefact platforms, are common in companies that self-host.

Public

Project-run repositories

Many open-source projects publish official charts in their own repositories or registries. Check the project’s own documentation for the current address.

Discovery

Artifact discovery websites

Search sites index charts from many hosts and point you to where each one lives.

Naming and organising charts

Good names make a repository easy to live with. Choose short, clear chart names that describe the application, not the team that wrote it. Keep one chart per application or per closely related bundle, and split unrelated things apart. Write a useful description and keywords in each chart’s metadata, because they power searching. Decide on a convention for repository names and stick to it, so that everyone adds the same repository under the same friendly name, which keeps documentation and pipelines consistent. Mark charts that are experimental or deprecated clearly, and explain in the description where users should go instead. A little discipline here keeps a catalogue readable when it holds hundreds of charts.

Public versus private

Public repositories are open to everyone, which suits open-source software and shared examples. Private repositories restrict access to a company or team, which suits internal applications and charts containing organisation-specific defaults. Many companies use both: they consume public charts from projects, often through a mirror they control, and publish their own charts to a private repository. Private hosts typically ask for credentials, which the Helm command can store or receive from a pipeline.

Choose the classic style when

You want the simplest possible hosting, you share charts publicly, or your tooling expects a catalogue file.

Choose registry-based storage when

You already run a registry, you want one permission model for images and charts, and your users can use full chart addresses.

Choose a hosting product when

You need a user interface, teams, replication, scanning and governance for many charts and many publishers.

Everyday analogy

Selling handmade goods, you might start with a simple market stall, move to a shelf in an existing shop, or open a fully staffed store. The stall is cheapest, the shelf reuses someone else’s shop, and the store gives you every service at the price of running it. Repositories grow the same way with your needs.

9Security of Helm Repositories

A chart is a set of instructions that will run with real permissions in your cluster. Trusting a repository means trusting the instructions it hands you.

What can go wrong

Risk

Malicious or careless charts

A chart can request powerful permissions, run privileged containers or open network access. Installing it grants those requests.

Risk

Tampered packages

An attacker who controls the repository or the network path could replace an archive with a changed one.

Risk

Version drift

Unpinned versions mean an install today and an install next month may deploy different things.

Risk

Vanishing dependencies

A repository that disappears or deletes a version can break every build that relied on it.

Risk

Leaked credentials

Repository passwords stored in files or logs give outsiders access to private charts.

Risk

Secrets in values

Passwords supplied as settings can end up in release records and pipeline logs.

Layers of protection

LayerWhat it protects againstHow to apply it
Encrypted connectionsEavesdropping and tampering on the networkUse secure web addresses only and verify server certificates
Digest checkCorruption and accidental changeHelm does this automatically against the catalogue
Signing and verificationPackages altered or published by the wrong partySign charts, publish the public key, verify on install
Version pinningUnexpected changes between installsName exact versions and keep dependency lock files
MirroringVanishing or changed upstream chartsCopy approved charts to a repository you control
Access controlUnauthorised reading or publishingRequire credentials, use least-privilege accounts for publishing
Chart review and scanningDangerous requests inside chartsRender and inspect, run policy and security checks in pipelines
Cluster-side policyObjects that break your rulesAdmission policies that reject privileged or unsafe objects

Who is allowed to publish?

Reading charts and publishing charts are very different powers. A person who can publish to a repository can put instructions in front of every consumer who trusts it, including automated pipelines that install without a human looking. Treat publish rights as a sensitive permission. Limit them to a small set of pipelines and a few named people, require review before anything is published, log every upload, and alert on unexpected changes to the catalogue. Consider separate repositories for stable and experimental charts, so that a trial upload can never reach production consumers by accident. Consumers should know exactly which repositories are approved, and pipelines should refuse to install from anywhere else.

Signing charts

A provenance file is a small signature stored beside a chart archive. The publisher signs the package with a private key, and users verify it with the matching public key. This proves two things: the package was signed by the holder of that key, and it has not changed since. Unlike the digest in the catalogue, the signature does not depend on trusting the repository host, so it defends against a compromised or malicious host. Signing only helps if users actually verify, and if they trust the right public keys. Registry ecosystems also offer their own signing approaches.

Trust the chart, then check the images

Verifying a chart tells you the recipe is genuine. It does not tell you the recipe is wise. A chart can point at container images from anywhere. A careful pipeline renders the chart into plain objects, inspects them for images, permissions and settings, scans the images, and only then allows installation. Many teams also enforce rules in the cluster itself, so that even an approved chart cannot create a privileged container by accident.

Everyday analogy

Buying medicine from a pharmacy involves several checks: a sealed package, a batch number, a pharmacist who knows the supplier, and a doctor who decides whether it suits you. The seal is the digest, the pharmacist’s stamp is the signature, and the doctor is your review and policy. Skipping any check leaves a gap.

Handling repository credentials

Private repositories need credentials, and credentials are secrets. Give each person or pipeline its own account, so that access can be revoked individually and every download is attributable. Prefer short-lived tokens issued through your company’s login system over long-lived passwords. Give pipelines that only install charts read-only access, and give the far smaller set of publishing pipelines write access. Keep credentials in a proper secrets system, and never in chart folders, values files, shell history or chat messages. Helm stores logins in a local configuration file on the machine where they were entered, so protect build machines, and clean up after temporary jobs. When someone leaves the team, remove their account, and rotate any shared credential they knew.

Hardening checklist

For consumers

Add only repositories you trust. Use secure addresses. Pin versions and keep lock files. Verify signatures where offered. Mirror what production depends on. Render and review charts before installing. Never pass real secrets as plain settings.

For publishers

Sign charts and publish the public key. Never change a published version. Restrict who can upload. Scan charts and images in the pipeline. Keep credentials in a proper secrets system. Keep old versions available for users who pinned them.

For platform teams

Offer an approved internal repository or registry. Block installs from unknown sources in pipelines. Enforce cluster policies. Monitor for charts and images that fall outside the approved set.

!
Read this twice

Adding a public repository and installing whatever it offers is like running a stranger’s script with administrator rights. Read what a chart will create before it reaches a real cluster.

10Choosing the Right Approach

There is no single best repository, only the best fit for your team, your tools and your risk. A few questions get you most of the way.

flowchart TD
  A["Where should my charts live?"] --> B{"Is the chart used by only one project?"}
  B -->|"Yes"| C["Keep it beside the application source"]
  B -->|"No, many teams share it"| D{"Do I already run a container registry?"}
  D -->|"Yes"| E["Registry-based storage"]
  D -->|"No"| F{"Do I need a web interface, teams and governance?"}
  F -->|"Yes"| G["Chart-hosting product"]
  F -->|"No"| H["Classic web repository on static hosting"]
    
Figure 6. A simple decision path for choosing where charts live.

Reading Figure 6

Begin with the top question: is the chart used by only one project? If yes, keeping it beside the application’s source is simplest, and no repository is needed. If many teams share it, ask whether you already run a container registry. If yes, registry-based storage reuses what you have, including permissions. If not, ask whether you need a web interface, teams and governance. If yes, a chart-hosting product fits. If not, a classic repository on static hosting is the cheapest, simplest answer.

The questions behind the chart

Ask

Who consumes the charts?

Public users, other teams or one pipeline? Public sharing favours the classic style. Internal use favours whatever your organisation already runs.

Ask

How private must they be?

Private charts need reliable access control. Check what your host offers.

Ask

What tooling do we use?

Continuous delivery tools and dashboards differ in how well they support each style. Check before committing.

Ask

How many charts and versions?

Large catalogues favour registry-style storage or products over one huge index file.

Ask

What are our supply-chain rules?

Signing, scanning and mirroring needs steer you towards registries and products.

Ask

What can we operate?

A static host needs little care. A product needs upgrades, backups and monitoring.

An open-source project sharing charts

Static page hosting with a classic repository is free and understood by everyone. Signing the charts helps users trust them.

A company with a registry already

Store charts in the same registry, reuse its permissions, and enable tag immutability and scanning.

A large enterprise with governance rules

A hosting product with teams, approvals, replication between sites and audit trails, plus a mirror of approved public charts.

A single team with one chart

Keep the chart in the application’s source repository and package it in the pipeline. Add a repository only when a second team needs it.

Everyday analogy

Choosing where to store recipes is like choosing where to keep tools. A single tool for one job stays in the drawer next to it. Tools shared by the street go into a shared shed. A large workshop with many tradespeople needs a managed tool store with a register.

i
Tip

You can change hosts later. Charts are just archives, so moving them means uploading them somewhere new and telling users the new address. Start simple and grow when you need to.

11Performance and Availability

A repository is on the critical path of every installation and every pipeline that uses it. Its speed and uptime shape your delivery.

Where the time goes

Cost

Catalogue download

A large index file takes noticeable time to download on every refresh, in every pipeline run that refreshes.

Cost

Archive download

Charts are small compared with images, but hundreds of installs from a slow host add up.

Cost

Dependency resolution

Charts with many dependencies trigger many downloads from possibly several hosts.

Cost

Rendering and validation

Large charts with heavy templates take longer to render, especially in tight pipelines.

Cost

Authentication round trips

Token-based logins add a little delay to each connection to a private registry.

Cost

Distance

A repository far from your build machines is slower than one nearby.

Ways to go faster and stay safer

Cache catalogues and archives in your pipelines, and refresh them only when needed. Mirror the public charts you rely on into a repository near your builds. Keep catalogues small by splitting unrelated charts into separate repositories, or by moving to registry-style storage where there is no big index. Put a content delivery network or caching layer in front of busy public repositories. Vendor critical dependencies into your own chart folders when you need builds that never touch the outside world.

ConcernSymptomTypical remedy
Huge catalogue fileSlow refresh, slow pipelinesSplit repositories, or use registry-style storage
Upstream repository outageBuilds fail at the download stepMirror upstream charts and cache in pipelines
Deleted upstream versionPinned builds stop workingMirror, or vendor dependencies into your own chart
Slow distant hostLong install times in far-away regionsReplicate or cache near consumers
Rate limits on public hostsSporadic failures under heavy pipeline useUse a mirror with your own credentials
Expired certificatesSudden failures with certificate errorsMonitor and renew certificates on schedule

Availability: what depends on the repository

Once a release is running, the repository is not needed for the application to keep working. The pods, services and configuration live in the cluster. What depends on the repository is the act of installing, upgrading and rebuilding. If the repository is down, you cannot deploy new versions or spin up new environments from scratch, which can be serious during an incident. Treat the repository as part of your delivery infrastructure and give it a matching level of reliability, backups and monitoring.

Running a mirror

A mirror is a repository you control that holds copies of the public charts you depend on. To run one, list the charts and versions your systems actually use, download the archives, scan and review them, and upload them to your own repository or registry under names your teams recognise. Point pipelines at the mirror instead of the public source. When a team needs a new chart or a new version, they request it, someone reviews it, and it is added to the mirror. This adds a small step to adoption and gives you a permanent, private copy, a place to enforce security rules, protection from upstream deletions and renames, and faster downloads from a nearby host. Automate the copying and the scanning so that the mirror is a convenience rather than a chore.

Everyday analogy

A restaurant can keep serving meals even if the cookbook shop is closed for a week. But if the chef needs a new recipe for tomorrow’s banquet, the closure matters a lot. The shop’s uptime matters most exactly when you need something new.

!
Watch out

Do not let an emergency rollback depend on a public repository that you do not control. Keep the charts for your running releases in a place you own, so that recovery does not depend on someone else’s uptime.

12Advantages, Disadvantages and Trade-offs

Every choice buys something and costs something. Here is an honest ledger for using Helm repositories.

Advantage

One place for shared recipes

Teams find, version and reuse charts instead of copying files.

Advantage

Repeatable installs

A name and version identify one package, so environments match.

Advantage

Simple hosting options

Static hosting or an existing registry is enough to get started.

Advantage

Ecosystem

Thousands of ready-made charts save enormous effort on common software.

Disadvantage

Supply-chain exposure

Third-party charts and repositories are dependencies you must vet.

Disadvantage

Weak built-in access control

Classic repositories rely on the host for permissions.

Disadvantage

Two styles to understand

Classic and registry-based storage behave differently for searching and refreshing.

Disadvantage

Immutability by discipline

Nothing in the classic style stops a publisher from changing a published version.

Trade-offs in plain words

The first trade-off is simplicity against governance. A static classic repository is the simplest thing that works, but offers little control over who publishes or reads. A hosting product adds control and audit, at the price of running and paying for it.

The second is convenience against safety. Pulling charts straight from a public repository is quick. Mirroring, pinning and reviewing them is slower, and it protects you from upstream surprises. Most teams begin quick and add safety as their systems matter more.

The third is freshness against stability. Version ranges bring in fixes automatically, and they also bring in changes you did not test. Exact pins are stable and need someone to update them deliberately, which is why many teams pair pinning with automated update proposals that go through review.

The fourth is catalogue against registry. A single catalogue file makes discovery easy and grows unwieldy. Registry-style storage scales and integrates with your existing permissions, and makes browsing less convenient.

Everyday analogy

Borrowing from a friendly neighbour’s shelf is quick and free, but you can’t be sure the book will still be there next month. Buying your own copy costs more and is always on your shelf. Serious cooks keep their own copies of the recipes they depend on.

13Monitoring and Troubleshooting

When a chart cannot be found or downloaded, the message usually names the stage that failed. A calm routine finds the cause quickly.

Symptoms and where to look

What you seeLikely meaningWhere to look first
Repository not found or catalogue cannot be downloadedWrong address, network problem or the host is downThe address, network access, the host’s status
Chart not foundStale catalogue, wrong name or wrong repository nameRefresh the catalogue, check the chart name and the repository it belongs to
No matching versionThe requested version or range does not existList the available versions, check version ranges and pre-release rules
Unauthorised or forbiddenMissing or expired credentials, or insufficient permissionsLogin state, token expiry, account permissions
Certificate errorsUntrusted, expired or mismatched certificateCertificate validity, trusted authorities, address spelling
Digest mismatchThe archive changed after publication, or was corruptedWhether the version was republished, caches and proxies
Dependency cannot be resolvedThe dependency’s repository is not added or unreachableDependency section of the chart, added repositories, lock file
Signature verification failsWrong key, missing signature file or a changed packagePublic key used, presence of the provenance file

A calm troubleshooting routine

First, check the address. A single wrong character in the repository address is the most common cause of failure. Second, check reachability from the same machine that failed, since pipeline machines often sit behind proxies or firewalls that laptops do not. Third, refresh the catalogue and list what versions Helm now sees. Fourth, check credentials for private hosts, including expiry. Fifth, check certificates. Sixth, compare the requested version or range with the versions actually listed, remembering that pre-release versions are usually hidden unless requested. Seventh, check the chart’s dependencies and their repositories. Eighth, look at the host itself: is it up, is disk space available, are rate limits being hit?

Layer 1

Address and network

Correct address, reachable from the failing machine, no blocking proxy.

Layer 2

Identity

Valid credentials with permission to read, or to publish.

Layer 3

Catalogue

Fresh cached catalogue that lists the chart and version.

Layer 4

Version

The requested version or range exists and matches the pre-release rules.

Layer 5

Integrity

Digest and signature match what the publisher intended.

Layer 6

Dependencies

Every required chart is reachable from its listed repository.

A second worked example: the private repository that stopped working

A pipeline that installed charts from a private repository begins failing with an unauthorised error. The address and network are fine, so the team turns to identity. The pipeline uses a token issued three months ago, and tokens expire after ninety days. Nobody had noticed because the token was created by a colleague who has since changed teams. The fix is a fresh token, stored in the secrets system and issued to a dedicated pipeline account, with an alert set for seven days before expiry. The team also writes down who owns the pipeline account. The lesson is that many repository outages are really credential lifecycles that nobody owned.

What to monitor all the time

Track the repository’s availability and response time, certificate expiry dates, storage capacity, failed authentication attempts, and pipeline failures at the download step. For publishers, track whether the catalogue is updated after each publish and whether uploads succeed. Alert on certificate expiry weeks in advance, because a lapsed certificate stops every installer at once. Synthetic checks that add the repository and fetch a small chart from a pipeline machine catch problems before real deployments do.

A worked example

A pipeline that installed a chart yesterday now fails with “chart not found”. Nothing in the pipeline changed. The team checks the address: correct. Reachability: fine. They refresh the catalogue and list versions, and find the chart is listed under a new name, because the project renamed it and published the new name in a new repository. The old repository still exists, with the old chart frozen. Updating the pipeline to the new repository and name fixes the failure, and the team adds a pin and a mirror to avoid future surprises.

Everyday analogy

When an order from a mail-order catalogue fails, a good customer service agent asks in order: is the address right, is the catalogue current, does this item number exist, is the payment valid, is the parcel damaged? Guessing at the parcel before checking the address wastes time.

i
Tip

Always try the failing step from the failing machine. Many repository problems are really network or credential problems that only exist inside a pipeline.

14Design Patterns and Anti-patterns

A pattern is a proven way of solving a repeated problem. An anti-pattern is a tempting habit that keeps causing pain.

Patterns worth adopting

Pattern

Immutable versions

Never change a published version. Fix problems by publishing a higher one.

Pattern

An internal mirror

Copy the public charts you use into a repository you control, and install from there.

Pattern

Pin and lock

Name exact versions for charts and keep dependency lock files under review.

Pattern

Automated publishing

A pipeline checks, packages, signs and publishes on every approved change, so publishing is never a manual step.

Pattern

Library charts for shared logic

Put common template pieces in a reusable chart that other charts depend on, so every team’s chart behaves consistently.

Pattern

Separate repositories by audience

Keep public, internal and experimental charts apart, with different access and different rules.

Anti-patterns to avoid

Anti-pattern

Overwriting a published version

Breaks repeatability and causes digest mismatches for anyone who cached the old file.

Anti-pattern

Installing the latest by default

Whatever is newest today is deployed tomorrow, untested, into production.

Anti-pattern

Depending directly on a public repository in production builds

An upstream outage or deletion halts your deployments.

Anti-pattern

Real secrets in values files

Passwords committed beside charts or passed as plain settings end up in history and release records.

Anti-pattern

One giant chart for everything

A single chart that deploys the whole company is impossible to version, review or roll back sensibly.

Anti-pattern

Unreviewed third-party charts

Installing without reading what will be created hands unknown instructions cluster permissions.

DECISION 01 · Where should company charts live? Accepted
Context

A company has thirty teams, each writing charts kept in application repositories. Platform engineers want shared, versioned charts, signing, scanning and one permission model. The company already runs a container registry with strong access control.

Options considered

A classic repository on static hosting. A dedicated chart-hosting product. Registry-based storage in the existing registry.

Decision

Use registry-based storage in the existing registry, with locked tags, scanning and signing in the publishing pipeline. Mirror approved public charts into the same registry. Keep a single static classic repository only for a small set of legacy consumers.

Consequences

Teams share one login model for images and charts, and published versions cannot be changed. Discovery relies on an internal catalogue page maintained by the platform team, because there is no single index file. Legacy consumers are migrated over time.

Everyday analogy

A good publisher never quietly rewrites a printed book and keeps the same edition number. A good bookshop stocks its own copies of the books it depends on. A good chef reads a recipe through before starting. These habits are unglamorous, and they are the difference between a reliable kitchen and a chaotic one.

15Best Practices and Common Mistakes

This chapter gathers the advice into checklists you can keep beside your desk.

Best practices

Consuming charts

Add only trusted repositories. Use secure addresses. Pin exact versions and keep lock files. Verify signatures where offered. Render and review a chart before installing. Mirror what production depends on. Never pass real secrets as plain settings.

Publishing charts

Follow semantic versioning honestly: breaking changes deserve a major number. Never change a published version. Write clear descriptions and keep change notes. Sign your charts. Keep old versions available. Publish through an automated pipeline with restricted credentials.

Operating repositories

Back up the repository. Monitor availability, capacity and certificate expiry. Control who can publish. Keep the catalogue tidy and mark deprecated versions. Document the address, the login method and the support contact.

Pipelines

Cache downloads. Refresh catalogues before searching. Fail clearly when a chart cannot be fetched. Run policy and security checks on rendered output before applying it.

Common mistakes

MistakeWhy it hurtsBetter approach
Forgetting to refresh the catalogueNew versions and charts appear missingRefresh before searching, especially in pipelines
Republishing the same versionCaches disagree and digests failAlways raise the version
Confusing chart version with application versionWrong package requested or publishedRemember each has its own meaning
Using version ranges in productionUntested changes slip inPin exact versions and update deliberately
Storing repository passwords in shared filesCredentials leakUse a secrets system and short-lived tokens
Ignoring certificate expirySudden fleet-wide failuresMonitor and renew ahead of time
Trusting the digest aloneA compromised host can change both file and digestSign charts and verify signatures
No backup of the repositoryLoss of published versions breaks pinned buildsBack up and test restores
Installing without reading the outputSurprises in permissions and imagesRender, review and apply policy checks

Managing dependencies well

Charts often depend on other charts, such as a database or a cache. Each dependency names a chart, a version or range, and the repository where it lives. Helm downloads dependencies into the chart’s own folder and records exact versions in a lock file. Treat the lock file like any other important file: commit it, review changes to it, and rebuild from it in pipelines so every build resolves the same versions. Prefer to keep dependency repositories inside your organisation, mirrored from upstream, so that a single external outage does not stop every build. And keep dependency trees shallow; a chart that depends on five charts that each depend on five more is hard to reason about and hard to secure.

A publishing checklist

Before publishing a new chart version, walk through a short list. Raise the version according to semantic versioning. Update the application version if the software edition changed. Lint the chart and render it against several sets of values. Run policy and security checks on the rendered output. Update the change notes. Package and sign. Upload the archive. Update the catalogue or push to the registry. Verify by adding the repository from a clean machine and installing the new version into a test cluster. Announce the release to users. Ten minutes on this list prevents most of the problems described in this article.

i
Review habit

Whenever you review a change to a chart repository, ask three things: is the version raised, can consumers still reproduce their old installs, and who is allowed to publish this?

16Real-World Usage Stories

These generic stories, based on common patterns rather than any specific company, show how the ideas play out.

The chart that changed under everyone’s feet

A team republished a fix under the same version number. Pipelines that had cached the earlier archive suddenly disagreed with the fresh catalogue and failed with digest errors, while machines with no cache installed the new file. Two environments ran subtly different releases under the same version. The team adopted immutable versions, locked tags in their registry, and a rule that a fix always gets a new number.

The upstream repository that moved

A popular project moved its charts to a new location and renamed some of them. Pipelines that installed straight from the old address started failing on a Monday morning. The team that had mirrored and pinned its dependencies was unaffected. Everyone else learned an expensive lesson about depending on somebody else’s address.

The catalogue that took a minute to download

A company put every chart from every team into one classic repository. After a few years, the index file grew so large that every pipeline run spent a minute refreshing it. Splitting it into a few repositories by team, and moving the busiest charts to registry-style storage, cut the delay to seconds.

The credentials in the chat

A developer pasted the repository password into a team chat so a colleague could add the private repository. Weeks later, the password was still in the chat history, readable by dozens of people. The team moved to per-person, short-lived tokens issued through the company’s login system, and rotated the exposed password.

The chart that asked for too much

A third-party chart, installed without review, created a container running with full privileges and a broad cluster role. A routine review after a security scan caught it. The team began rendering every third-party chart in a pipeline, checking the output against policy, and blocking risky requests before they reached any cluster.

Three worked scenarios: thinking like a designer

Scenario one: a small team with one application

Three developers, one application, one chart. Keeping the chart beside the application source and packaging it in the pipeline is enough. No repository is needed until a second team wants the same chart. Adding a full hosting product now would be effort spent on a problem the team does not yet have.

Scenario two: an open-source project sharing a chart

The project wants anyone in the world to install its software easily. A classic repository on free static hosting fits, with signed charts, a clear version history and documentation of the address. The project also lists itself on a discovery website so users can find it by searching.

Scenario three: a regulated company with strict supply-chain rules

Auditors demand proof of who published what, and no dependency on outside hosts at deployment time. The company stores its charts in an internal registry with locked tags, signs everything, scans images and charts in the pipeline, mirrors approved public charts, and blocks installs from any other source. Deployments never touch the public internet.

A short mental checklist for a new repository

Before creating a repository, pause and walk through a short list. State who will consume the charts and how private they must be. Decide the style: classic, registry or product. Decide who may publish and how credentials will be issued. Decide how versions are numbered and that they are immutable. Decide how charts are signed and verified. Decide how public dependencies are mirrored. Decide how you will back up and monitor the repository. Decide how users discover charts. Write it all on one page. Ten minutes on this list prevents most of the problems in this article.

The best chart repository is the one where a name and a version always mean exactly the same thing, for everyone, forever.

17Frequently Asked Questions

Quick answers to the questions beginners ask most often.

Q1What is a Helm repository in one sentence?
A place that stores packaged Helm charts and publishes a catalogue, or registry entries, so that Helm can find and download any chart by name and version.
Q2Do I need a repository to use Helm?
No. Helm can install from a local chart folder or archive. Repositories become useful when several people or projects share charts, or when you consume charts published by others.
Q3What is the difference between a chart, a release and a repository?
A chart is the package, a release is one installed copy of a chart in a cluster, and a repository is where charts are stored and shared.
Q4What is inside a repository?
In the classic style, packaged chart archives and one index file listing every chart and version. In the registry style, chart artefacts stored in a registry, addressed by path and version tag.
Q5Why can I not find a chart I know was published?
Most often your cached catalogue is stale. Refresh it. Other causes are a wrong chart or repository name, or that the chart lives in a different repository.
Q6What is the difference between chart version and application version?
The chart version identifies the packaged recipe and is what the repository indexes. The application version describes the software the chart installs and is informational.
Q7Should I use version ranges or exact versions?
Use exact versions in production for repeatable installs, and update them deliberately, ideally through reviewed automated proposals. Ranges suit experiments where automatic updates are welcome.
Q8Can I store charts in the same registry as container images?
Yes, modern Helm supports registry-based storage. Confirm that your registry and your Helm version support it, and check how your delivery tools address such charts.
Q9How do I make sure a chart has not been tampered with?
Helm checks the digest against the catalogue, and signature verification provides an independent check that the publisher’s key signed the package. Use both where you can, and install over encrypted connections.
Q10Is it safe to install any chart from a public repository?
No. A chart can create powerful objects. Review what it will create, check the images, and apply policy checks before installing on a real cluster.
Q11What happens to running applications if the repository goes down?
They keep running. The repository is needed only when installing, upgrading or rebuilding. An outage can, however, block deployments and rollbacks that need to download charts.
Q12Should I mirror public charts?
For production, yes. A mirror protects you from outages, moves, renames and deleted versions upstream, and gives you a place to scan and approve charts.
Q13How do I share a private chart repository?
Host it somewhere that supports access control, and give users credentials, preferably short-lived and tied to their identity. Document the address and login method for your teams.
Q14What is a discovery website, and is it a repository?
It is a search service that indexes charts from many hosts and points to where each one lives. It is not the host itself.
Q15Can I delete a published chart version?
Technically yes on most hosts, but it breaks anyone who pinned that version. Prefer marking it deprecated and publishing a fixed version.
Q16How should I handle dependencies between charts?
List each dependency with its version and repository, let Helm download them into the chart, and commit the lock file. Prefer dependencies from repositories you control or mirror.
Q17Why does my pipeline fail with a certificate error only on the build server?
The build server may lack the certificate authority your repository uses, or may sit behind a proxy that changes certificates. Check trusted authorities and proxy settings on that machine.
Q18Where should I start if I want to publish my first chart?
Package it with a clear version, host it on the simplest thing that fits, such as static hosting or your existing registry, add signing, and test installing from a clean machine before announcing it.

This post was written without live web research. Please verify version-sensitive details, such as registry support, command names and the current addresses of public repositories, against the official documentation for the Helm version you use.

18Summary and Key Takeaways

Let us close the loop, returning to the cookbook shop from the start of this article.

Just as a good cookbook shop keeps numbered editions, a clear catalogue and reliable stock, a Helm repository keeps numbered chart versions, a catalogue that Helm can read and packages that never change once published. Helm consults the catalogue, downloads the exact package you asked for, checks it, and installs it into your cluster, and the repository itself never touches the cluster.

You met the problem of sharing recipes by hand, the building blocks of charts, catalogues and versions, and the architecture that connects authors, repositories, the Helm client and the cluster. You followed a chart’s life, compared classic and registry-style hosting, and learned about security, performance, trade-offs, troubleshooting and the mistakes that trap teams most often.

Version drift and things to verify

The Helm ecosystem changes steadily. Registry support arrived after the original repository style, command details and defaults have shifted between releases, popular public repositories have moved, been renamed or been retired, and hosting products have come and gone. Because this article was written without live web research, treat version-specific statements as a starting point. Before relying on a feature in production, read the official documentation for the Helm version you use, try the behaviour in a test cluster, confirm the current address of any public repository, and record the versions in your team’s notes so upgrades prompt a re-check.

A small glossary to keep nearby

Term

Chart

A Helm package describing everything an application needs on Kubernetes.

Term

Release

One installed instance of a chart in a cluster.

Term

Repository

A place that stores charts and lets Helm find and download them.

Term

Index file

The catalogue of a classic repository, listing charts, versions and digests.

Term

Digest

A fingerprint of a file that changes if the file changes at all.

Term

Provenance file

A signature stored beside a chart, used to verify publisher and integrity.

Term

Semantic versioning

A three-part numbering scheme where major, minor and patch numbers signal the size of a change.

Term

Mirror

A copy of upstream charts kept in a repository you control.

Key takeaways

Takeaway 1

A repository is a passive shelf

It stores charts and a catalogue. The Helm client does the work and the repository never touches the cluster.

Takeaway 2

Versions are promises

A published name and version must always mean the same package. Never change one.

Takeaway 3

Two styles, one tool

Classic repositories use a catalogue file. Registry-based storage uses paths and tags. Choose by what you already run.

Takeaway 4

Trust needs layers

Secure connections, digests, signatures, pinning, mirrors and review work together.

Takeaway 5

Own what production depends on

Mirror upstream charts so outages and renames elsewhere cannot stop your deployments.

Takeaway 6

Troubleshoot in layers

Address, identity, catalogue, version, integrity and dependencies, in that order.

i
Your next step

List the repositories your pipelines use today. For each one, note who owns it, whether you mirror it, and whether your versions are pinned. That small review shows you exactly where your delivery depends on someone else.