@ -10,9 +10,9 @@ A _chart repository_ is an HTTP server that houses one or more packaged charts.
Because a chart repository can be any HTTP server that can serve YAML and tar files and can answer GET requests, you have a plethora of options when it comes down to hosting your own chart repository. For example, you can use a Google Cloud Storage(GCS) bucket, Amazon S3 bucket, or even create your own web server.
### The chart repository structure
A chart repository consists of packaged charts and a special file called `index.yaml` which contains an index of all of the charts in the repository. A chart repository has a flat structure. Given a repository URL, you should be able to download a chart via a GET request to `URL/chartname-version.tgz`.
A chart repository consists of packaged charts and a special file called `index.yaml` which contains an index of all of the charts in the repository. A chart repository has a flat structure. Given a repository URL, you should be able to download a chart via a GET request to `URL/chartname-version.tgz`.
For example, if a repository lives at the URL: `http://helm-charts.com`, the `alpine-0.1.0` chart would live at `http://helm-charts.com/alpine-0.1.0.tgz`. The index file would also live in the same chart repository at `http://helm-charts.com/index.yaml`.
For example, if a repository lives at the URL: `https://helm-charts.com`, the `alpine-0.1.0` chart would live at `https://helm-charts.com/alpine-0.1.0.tgz`. The index file would also live in the same chart repository at `https://helm-charts.com/index.yaml`.
#### The index file
The index file is a yaml file called `index.yaml`. It contains some metadata about the package as well as a dump of the Chart.yaml file of a packaged chart. A valid chart repository must have an index file. The index file contains information about each chart in the chart repository. The `helm repo index` command will generate an index file based on a given local directory that contains packaged charts.
@ -21,7 +21,7 @@ This is an example of an index file:
@ -59,7 +59,7 @@ Congratulations, now you have an empty GCS bucket ready to serve charts!
## Store charts in your chart repository
Now that you have a chart repository, let's upload a chart and an index file to the repository.
Charts in a chart repository must be packaged (`helm package chart-name/`) and versioned correctly (following [SemVer 2](http://semver.org/) guidelines).
Charts in a chart repository must be packaged (`helm package chart-name/`) and versioned correctly (following [SemVer 2](https://semver.org/) guidelines).
These next steps compose an example workflow, but you are welcome to use whatever workflow you fancy for storing and updating charts in your chart repository.
Outside of your directory, run the `helm repo index [DIR] [URL]` command. This command takes the path of the local directory that you just created and the URL of your remote chart repository and composes an index.yaml file inside the given directory path.
```console
$ helm repo index fantastic-charts http://storage.googleapis.com/fantastic-charts
$ helm repo index fantastic-charts https://storage.googleapis.com/fantastic-charts
```
Now, you can upload the chart and the index file to your chart repository using a sync tool or manually. If you're using Google Cloud Storage, check out this [example workflow](chart_repository_sync_example.md) using the gsutil client.
@ -87,14 +87,14 @@ When you've created another chart, move the new packaged chart into the fantasti
## Share your charts with others
When you're ready to share your charts, simply let someone know what the url of your repository is.
*Note: A public GCS bucket can be accessed via simple http at this address `http://storage.googleapis.com/bucket-name`.*
*Note: A public GCS bucket can be accessed via simple http at this address `https://storage.googleapis.com/bucket-name`.*
From there, they will add the repository to their helm client via the `helm repo add [NAME] [URL]` command with any name they would like to use to reference the repository.
Use helm to generate an updated index.yaml file by passing in the directory path and the url of the remote repository to the `helm repo index` command like this:
```console
$ helm repo index fantastic-charts/ http://storage.googleapis.com/fantastic-charts
$ helm repo index fantastic-charts/ https://storage.googleapis.com/fantastic-charts
```
This will generate an updated index.yaml file and place in the `fantastic-charts/` directory.