Chart Repositoryの公開されていないHelm Chartに稀によく遭遇するので、そういったChartをローカルリポジトリに取り込むためのhelm-importプラグインを作りました。
GitHub - k-kinzal/helm-import: Import Helm Chart where only public code into local repository.
とりあえずtgzもしくはGitHubリポジトリで公開されているChartをローカルリポジトリに取り込むことができます。
$ helm import https://github.com/helm/charts/tree/master/stable/acs-engine-autoscaler
$ helm serve &
$ helm search local
NAME CHART VERSION APP VERSION DESCRIPTION
local/acs-engine-autoscaler 2.2.2 2.1.1 DEPRECATED Scales worker nodes within agent pool
まぁリリースのときに自前でgit clone
すれば良い話ではあるのですが、例えばhelmfileでChartを管理するときに毎回処理を書くのが面倒臭いのでそういうときにちょうど良いです。
releases:
- name: acs-engine-autoscaler
namespace: acs-engine-autoscaler
chart: "{{ exec "helm" (list "home") | trim }}/repository/local/acs-engine-autoscaler-2.2.2.tgz"
values:
- values/values.yaml.gotmpl
hooks:
- events:
- prepare
command: helm
args:
- import
- https://github.com/helm/charts/tree/master/stable/acs-engine-autoscale
helmfileで使うときはこんな感じ。
本当はhelm serve
を使いたかったのですがhelmfileの問題なのかうまく動作しないのでtgzを直指定しています。(もしくはhelmfileの実行前にhelm serve
使うとシンプルになります)
過去に取り込んだChartを永続化する場合CIサーバーとかで$HELM_HOME/repository/local
を永続化すれば溜め込んでいくことができると思います。
余談ですが、これは元々atlantisとかalb-ingress-controllerのChartを取り込むために作成しました。
が、気がついたらどちらも公式のhelm/chartに取り込まれてて作る必要なかった!!!という感じでとても悔しい気持ちです。
公式に入ってChart Repository経由で扱えるのは良いことなんですけどね!本当に便利になるので良いことなんですけどね!!!