https://github.com/konstructio/helm-mirror
Helm plugin used to mirror repositories
https://github.com/konstructio/helm-mirror
Last synced: 12 months ago
JSON representation
Helm plugin used to mirror repositories
- Host: GitHub
- URL: https://github.com/konstructio/helm-mirror
- Owner: konstructio
- License: apache-2.0
- Created: 2024-07-24T17:45:38.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-08T19:18:27.000Z (over 1 year ago)
- Last Synced: 2025-06-09T20:09:40.640Z (about 1 year ago)
- Language: Go
- Homepage:
- Size: 811 KB
- Stars: 5
- Watchers: 5
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# helm-mirror Plugin
[](https://github.com/konstructio/helm-mirror/releases/latest)
[](https://github.com/konstructio/helm-mirror/releases)
A fork of the [`helm-mirror` plugin from openSUSE](https://github.com/openSUSE/helm-mirror). This plugin allows you to mirror Helm Charts from a repository into a local folder.
## Install
Using Helm plugin manager (> 2.3.x)
```bash
helm plugin install https://github.com/konstructio/helm-mirror --version main
```
Using a Go environment:
```bash
go install github.com/konstructio/helm-mirror@latest
```
Or download the binary from the [releases page](https://github.com/konstructio/helm-mirror/releases), unpack it, and use the `bin/mirror` binary directly.
## Usage
Mirror Helm Charts from an index file into a local folder.
For example:
```bash
helm-mirror https://charts.example.com/ /path/to/downloaded/charts
```
This will download the index file and the latest version of the charts into the folder indicated.
The index file is a YAML that contains a list of charts in this format. Example:
```yaml
apiVersion: v1
entries:
chart:
- apiVersion: 1.0.0
created: 2018-08-08T00:00:00.00000000Z
description: A Helm chart for your application
digest: 3aa68d6cb66c14c1fcffc6dc6d0ad8a65b90b90c10f9f04125dc6fcaf8ef1b20
name: chart
urls:
- https://kubernetes-charts.example.com/chart-1.0.0.tgz
chart2:
- apiVersion: 1.0.0
created: 2018-08-08T00:00:00.00000000Z
description: A Helm chart for your application
digest: 7ae62d60b61c14c1fcffc6dc670e72e62b91b91c10f9f04125dc67cef2ef0b21
name: chart
urls:
- https://kubernetes-charts.example.com/chart2-1.0.0.tgz
```
This will download these charts:
- `https://kubernetes-charts.example.com/chart-1.0.0.tgz`
- `https://kubernetes-charts.example.com/chart2-1.0.0.tgz`
Into your destination folder.
Usage:
```
helm-mirror [Repo URL] [Destination Folder] [flags]
helm-mirror [command]
```
Available Commands:
help Help about any command
inspect-images Extract all the images of the Helm Charts.
version Show version of the helm-mirror plugin
Flags:
```
-a, --all-versions gets all the versions of the charts in the chart repository
--ca-file string verify certificates of HTTPS-enabled servers using this CA bundle
--cert-file string identify HTTPS client using this SSL certificate file
--chart-name string name of the chart that gets mirrored
--chart-version string specific version of the chart that is going to be mirrored
-h, --help help for mirror
-i, --ignore-errors ignores errors while downloading or processing charts
--key-file string identify HTTPS client using this SSL key file
--new-root-url https://mirror.local.lan/charts New root url of the chart repository (eg: https://mirror.local.lan/charts)
--password string chart repository password
--username string chart repository username
-v, --verbose verbose output
```
### Getting all charts
```bash
helm-mirror https://example.com/charts /path/to/charts --all-charts
```
This will download all the charts and all the available versions
of the charts.
### Getting one specific chart
```bash
helm-mirror https://example.com/charts /path/to/charts --chart-name nginx
```
This will download the latest version of the chart `nginx`.
### Getting one specific chart with a specific version
```bash
helm-mirror https://example.com/charts /path/to/charts --chart-name nginx --chart-version 2.14.3
```
This will download version `2.14.3` of the chart `nginx`.
Use `helm-mirror [command] --help` for more information about a command.
## Commands
### `inspect-images`
Extract all the container images listed in each Helm Chart or the Helm Charts in the folder provided. This command dumps the images on `stdout` by default, for more options check `output flag`. Example:
- `helm-mirror inspect-images /tmp/helm`
- `helm-mirror inspect-images /tmp/helm/app.tgz`
The folder or `.tgz` file has to be a full path.
#### Usage
```bash
mirror inspect-images [folder|tgzfile] [flags]
```
#### Flags
* `-h`, `--help` help for inspect-images
* `-i`, `--ignore-errors` ignores errors whiles processing charts. (Exit Code: 2)
* `-o`, `--output string` choose an output for the list of images. (default "stdout")
Available output options:
* `file`: outputs all images to a file
* `json`: outputs all images to a file in JSON format
* `skopeo`: outputs all images to a file in YAML format: to be used as source file with the 'skopeo sync' command. For more information refer skopeo([1]).
* `stdout`: prints all images to standard output
* `yaml`: outputs all images to a file in YAML format
```bash
helm-mirror inspect-images /tmp/helm --output stdout
helm-mirror inspect-images /tmp/helm -o stdout
helm-mirror inspect-images /tmp/helm -o file=filename
helm-mirror inspect-images /tmp/helm -o json=filename.json
helm-mirror inspect-images /tmp/helm -o yaml=filename.yaml
helm-mirror inspect-images /tmp/helm -o skopeo=filename.yaml
```
#### Global Flags
* `-v`, `--verbose`: verbose output
### `version`
Displays the current version of `mirror`.
[1]: https://github.com/containers/skopeo/blob/release-1.1/docs/skopeo-sync.1.md