All Projects → chartmuseum → Helm Push

chartmuseum / Helm Push

Licence: apache-2.0
Helm plugin to push chart package to ChartMuseum

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Helm Push

Charts
The IBM/charts repository provides helm charts for IBM and Third Party middleware.
Stars: ✭ 254 (-25.95%)
Mutual labels:  helm
Helm Projectile
Helm UI for Projectile
Stars: ✭ 285 (-16.91%)
Mutual labels:  helm
Home Cluster
My home Kubernetes (k3s) cluster managed by GitOps (Flux2)
Stars: ✭ 303 (-11.66%)
Mutual labels:  helm
Kotsadm
Kotsadm has been merged into the KOTS repo
Stars: ✭ 263 (-23.32%)
Mutual labels:  helm
Kube Charts Mirror
kubernetes helm 国内镜像,每三天更新一次
Stars: ✭ 282 (-17.78%)
Mutual labels:  helm
Helm Charts
A curated set of Helm charts brought to you by codecentric
Stars: ✭ 295 (-13.99%)
Mutual labels:  helm
Chart Releaser
Hosting Helm Charts via GitHub Pages and Releases
Stars: ✭ 253 (-26.24%)
Mutual labels:  helm
Helm Monitor
Monitor K8S Helm release, rollback on metrics behavior (Prometheus, Elasticsearch, Sentry)
Stars: ✭ 332 (-3.21%)
Mutual labels:  helm
Kubenow
Deploy Kubernetes. Now!
Stars: ✭ 285 (-16.91%)
Mutual labels:  helm
Ingressmonitorcontroller
A Kubernetes controller to watch ingresses and create liveness alerts for your apps/microservices in UptimeRobot, StatusCake, Pingdom, etc. – [✩Star] if you're using it!
Stars: ✭ 306 (-10.79%)
Mutual labels:  helm
K8s Tew
Kubernetes - The Easier Way
Stars: ✭ 269 (-21.57%)
Mutual labels:  helm
Charts
Bitnami Helm Charts
Stars: ✭ 4,439 (+1194.17%)
Mutual labels:  helm
K8s For Docker Desktop
为Docker Desktop for Mac/Windows开启Kubernetes和Istio。
Stars: ✭ 3,863 (+1026.24%)
Mutual labels:  helm
Helm Tiller
Helm v2 Tiller plugin aka Tillerless Helm
Stars: ✭ 260 (-24.2%)
Mutual labels:  helm
Helm Doc Zh Cn
Try to translate the helm official docs to Chinese. Helm官方文档中文翻译。如果大家觉得这个项目还可以,麻烦打一下右上角的Star按钮,谢谢。此网址查看更方便,欢迎大家提bug,
Stars: ✭ 319 (-7%)
Mutual labels:  helm
Helm Unittest
BDD styled unit test framework for Kubernetes Helm charts as a Helm plugin.
Stars: ✭ 256 (-25.36%)
Mutual labels:  helm
Helm
Emacs incremental completion and selection narrowing framework
Stars: ✭ 3,109 (+806.41%)
Mutual labels:  helm
Landscaper
Deprecated. Takes a set of Helm Chart references with values (a desired state), and realizes this in a Kubernetes cluster
Stars: ✭ 342 (-0.29%)
Mutual labels:  helm
Kubedog
Library to watch and follow kubernetes resources in CI/CD deploy pipelines
Stars: ✭ 326 (-4.96%)
Mutual labels:  helm
K3sup
bootstrap Kubernetes with k3s over SSH < 1 min 🚀
Stars: ✭ 4,012 (+1069.68%)
Mutual labels:  helm

helm push plugin

GitHub Actions status

Helm plugin to push chart package to ChartMuseum

Install

Based on the version in plugin.yaml, release binary will be downloaded from GitHub:

$ helm plugin install https://github.com/chartmuseum/helm-push.git
Downloading and installing helm-push v0.9.0 ...
https://github.com/chartmuseum/helm-push/releases/download/v0.9.0/helm-push_0.9.0_darwin_amd64.tar.gz
Installed plugin: push

Usage

Start by adding a ChartMuseum-backed repo via Helm CLI (if not already added)

$ helm repo add chartmuseum http://localhost:8080

For all available plugin options, please run

$ helm push --help

Pushing a directory

Point to a directory containing a valid Chart.yaml and the chart will be packaged and uploaded:

$ cat mychart/Chart.yaml
name: mychart
version: 0.3.2
$ helm push mychart/ chartmuseum
Pushing mychart-0.3.2.tgz to chartmuseum...
Done.

Pushing with a custom version

The --version flag can be provided, which will push the package with a custom version.

Here is an example using the last git commit id as the version:

$ helm push mychart/ --version="$(git log -1 --pretty=format:%h)" chartmuseum
Pushing mychart-5abbbf28.tgz to chartmuseum...
Done.

If you want to enable something like --version="latest", which you intend to push regularly, you will need to run your ChartMuseum server with ALLOW_OVERWRITE=true.

Push .tgz package

This workflow does not require the use of helm package, but pushing .tgzs is still suppported:

$ helm push mychart-0.3.2.tgz chartmuseum
Pushing mychart-0.3.2.tgz to chartmuseum...
Done.

Force push

If your ChartMuseum install is configured with ALLOW_OVERWRITE=true, chart versions will be automatically overwritten upon re-upload.

Otherwise, unless your install is configured with DISABLE_FORCE_OVERWRITE=true (ChartMuseum > v0.7.1), you can use the --force/-f option to to force an upload:

$ helm push --force mychart-0.3.2.tgz chartmuseum
Pushing mychart-0.3.2.tgz to chartmuseum...
Done.

Pushing directly to URL

If the second argument provided resembles a URL, you are not required to add the repo prior to push:

$ helm push mychart-0.3.2.tgz http://localhost:8080
Pushing mychart-0.3.2.tgz to http://localhost:8080...
Done.

Context Path

If you are running ChartMuseum behind a proxy that adds a route prefix, for example:

https://my.chart.repo.com/helm/v1/index.yaml -> http://chartmuseum-svc/index.yaml

You can use the --context-path= option or HELM_REPO_CONTEXT_PATH env var in order for the plugin to construct the upload URL correctly:

helm repo add chartmuseum https://my.chart.repo.com/helm/v1
helm push --context-path=/helm/v1 mychart-0.3.2.tgz chartmuseum

Alternatively, you can add serverInfo.contextPath to your index.yaml:

apiVersion: v1
entries:{}
generated: "2018-08-09T11:08:21-05:00"
serverInfo:
  contextPath: /helm/v1

In ChartMuseum server (>0.7.1) this will automatically be added to index.yaml if the --context-path option is provided.

Authentication

Basic Auth

If you have added your repo with the --username/--password flags (Helm 2.9+), or have added your repo with the basic auth username/password in the URL (e.g. https://myuser:[email protected]), no further setup is required.

The plugin will use the auth info located in ~/.helm/repository/repositories.yaml (for Helm 2) or ~/.config/helm/repositories.yaml (for Helm 3) in order to authenticate.

If you are running ChartMuseum with AUTH_ANONYMOUS_GET=true, and have added your repo without authentication, the plugin recognizes the following environment variables for basic auth on push operations:

$ export HELM_REPO_USERNAME="myuser"
$ export HELM_REPO_PASSWORD="mypass"

With this setup, you can enable people to use your repo for installing charts etc. without allowing them to upload to it.

Token

ChartMuseum token-auth is currently in progress. Pleasee see auth-server-example for more info.

Although ChartMuseum server does not define or accept a token format (yet), if you are running it behind a proxy that accepts access tokens, you can provide the following env var:

$ export HELM_REPO_ACCESS_TOKEN="<token>"

This will result in all basic auth options above being ignored, and the plugin will send the token in the header:

Authorization: Bearer <token>

If you require a custom header to be used for passing the token, you can the following env var:

$ export HELM_REPO_AUTH_HEADER="<myheader>"

This will then be used in place of Authorization: Bearer:

<myheader>: <token>

Token config file (~/.cfconfig)

For users of Managed Helm Repositories (Codefresh), the plugin is able to auto-detect your API key from ~/.cfconfig. This file is managed by Codefresh CLI.

If detected, this API key will be used for token-based auth, overriding basic auth options described above.

The format of this file is the following:

contexts:
  default:
    name: default
    token: <token>
current-context: default

TLS Client Cert Auth

ChartMuseum server does not yet have options to setup TLS client cert authentication (please see chartmuseum#79).

If you are running ChartMuseum behind a frontend that does, the following options are available:

--ca-file string    Verify certificates of HTTPS-enabled servers using this CA bundle [$HELM_REPO_CA_FILE]
--cert-file string  Identify HTTPS client using this SSL certificate file [$HELM_REPO_CERT_FILE]
--key-file string   Identify HTTPS client using this SSL key file [$HELM_REPO_KEY_FILE]
--insecure          Connect to server with an insecure way by skipping certificate verification [$HELM_REPO_INSECURE]

Custom Downloader

This plugin also defines the cm:// protocol that you may specify when adding a repo:

$ helm repo add chartmuseum cm://my.chart.repo.com

The only real difference with this vs. simply using http/https, is that the environment variables above are recognized by the plugin and used to set the Authorization header appropriately. As in, if you do not add your repo in this way, you are unable to use token-based auth for GET requests (downloading index.yaml, chart .tgzs, etc).

By default, cm:// translates to https://. If you must use http://, you can set the following env var:

$ export HELM_REPO_USE_HTTP="true"
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].