helm repo index .
してGitHub Pagesで公開している自作Helmチャートの更新運用時に、既存パッケージ(旧バージョン)のタイムスタンプが更新されてしまう事象が発生したので対処メモ。
- QuickFix
- 単純にhelm repo index .すると既存パッケージのタイムスタンプが更新されてしまう
- なぜこうなるのか?
- helm repo index --mergeでバージョンアップ分を追加する
- まとめ - Helm repo indexしたパッケージ更新で既存のtimestampを書き換えないようにする
QuickFix
./bump-index.sh <new_package.tgz>
として、退避・index --merge
する。
bump-index.sh
if [ -z "$1" ] then echo "ERROR: File not specified" exit 1 fi set -e mkdir tmp cp $1 tmp/ helm repo index --merge index.yaml tmp mv tmp/index.yaml index.yaml rm -rf tmp git diff
単純にhelm repo index .
すると既存パッケージのタイムスタンプが更新されてしまう
バージョンアップしたパッケージを追加し、
$ tree charts charts └── stable ├── bump-index.sh ├── elastalert-0.1.0.tgz ├── elastalert-0.1.1.tgz ├── index.yaml ├── praeco-0.1.0.tgz ├── praeco-0.1.1.tgz ├── praeco-0.1.2.tgz <-- added └── refresh-index.sh
helm repo index .
すると、
git diff --- praeco: - apiVersion: v1 appVersion: 0.2.1-dev - created: "2020-02-24T18:02:55.253788+09:00" + created: "2020-03-19T00:13:14.429971+09:00" + description: Praeco Helm chart for Kubernetes + digest: xxx + name: praeco + urls: + - praeco-0.1.2.tgz + version: 0.1.2 + - apiVersion: v1 + appVersion: 0.2.1-dev + created: "2020-03-19T01:23:42.482821+09:00" description: Praeco Helm chart for Kubernetes digest: xxx name: praeco @@ -40,7 +40,7 @@ entries: version: 0.1.2 - apiVersion: v1 appVersion: 1.0.1 - created: "2020-02-24T18:02:55.260446+09:00" + created: "2020-03-19T01:23:42.482821+09:00" description: Praeco Helm chart for Kubernetes digest: xxx name: praeco @@ -49,11 +49,11 @@ entries: version: 0.1.1 - apiVersion: v1 appVersion: 1.0.1 - created: "2020-02-24T18:02:55.258274+09:00" + created: "2020-03-19T01:23:42.479318+09:00" description: A Helm chart for Kubernetes digest: xxx name: praeco urls: - praeco-0.1.0.tgz version: 0.1.0
古いバージョンのcreated (timestamp)もアップデートされ、差分となってしまう。
なぜこうなるのか?
こちらで回答されている通り、そもそもhelm repo index
は新規生成のためのコマンドなので、差分管理的には動かない。
helm repo index --merge
でバージョンアップ分を追加する
上記Issueに記載の通り、以下の流れで作業実施することで、期待通り新バージョンのパッケージをindex.yaml
に追加できる。
私はシンプルにするために、charts/stable
の配下でtmpフォルダを作成して、そこで新規index.yaml
を生成(既存index.yaml
マージ)、既存index.yaml
上書きするようにしている。
cd charts/stable mkdir tmp cp <new_package.tgz> tmp/ helm repo index --merge index.yaml tmp mv tmp/index.yaml index.yaml rm -rf tmp
QuickFixとして冒頭に記載の通り、これをbump-index.sh
として、
if [ -z "$1" ] then echo "ERROR: File not specified" exit 1 fi set -e mkdir tmp cp $1 tmp/ helm repo index --merge index.yaml tmp mv tmp/index.yaml index.yaml rm -rf tmp git diff
./bump-index.sh <new_package.tgz>
で更新完了となる。あとはGit Commit, Pushで公開する。
まとめ - Helm repo indexしたパッケージ更新で既存のtimestampを書き換えないようにする
退避 + helm repo index --merge
で既存パッケージのタイムスタンプを更新することなく、新バージョンのパッケージを追加することができる。