nっぽいkustomizeバージョン管理ツールを書いた

Node.jsのバージョン管理ツールであるnっぽい、Kustomizeバージョン管理ツールを書いてみました。

github.com

元々kustomizeをインストールするためのサポートスクリプトがあって、これは指定したバージョンをインストールすることも可能なんだけど、複数バージョンをいい感じに扱うのはできなかったです。

kubectl.docs.kubernetes.io

そして、複数バージョンのkustomizeが使いたくなるケースが増えてきたので、nを参考にしつつ最低限のコマンドだけ書くかーと思い立ちました。 Argo CDで使うKustomizeのバージョンを固定化しているケースなどでは、ローカルで複数バージョンのkustomizeを動かしたいケースもそれなりにあるので、 こうしたツールが欲しいと探していたけど、パッと見つからなかったですし。

インストール

基本的にREADMEに書いてある通りで、kzのスクリプトファイルをダウンロードして実行権限を付与してパスが通るところに配置すればOK。

curl -L https://raw.githubusercontent.com/corrupt952/kz/main/bin/kz -o kz
chmod u+x kz
mv kz /path/to/bin

後は環境変数を設定するのがオススメ。 nのようにデフォルトだと、/usr/localにインストールしようとするので、それが嫌なら$HOME/.cacheとかにインストールすると良いです。

export KZ_PREFIX=$HOME/.cache/kz
export PATH=$KZ_PREFIX/bin:$PATH

使い方

kustomizeのインストール

nのような操作感でKustomizeをインストールできます。 インストール後には、$KZ_PREFIX/binに指定したバージョンのバイナリへのシンボリックリンクを配置します。 正直なところ、次で説明するuseと差別化はできていないですね。

kz i v3.9.3

kustomize version
# {kustomize/v3.9.3  2021-02-07T17:02:13Z  }

バージョンの切り替え

指定したバージョンのkustomizeへのシンボリックリンクを、$KZ_PREFIX/binに指定したバージョンのバイナリへのシンボリックリンクを配置します。 指定したバージョンがインストールされていなかったらインストールするようにもしています。

kz use v3.9.3

kustomize version
# {kustomize/v3.9.3  2021-02-07T17:02:13Z  }

指定したバージョンでの実行

$KZ_PREFIX/binにパスを通したり、切り替えをしなくても指定したバージョンのkustomizeで、 コマンドを実行するexecも追加してみました。

kz exec v3.9.3 vesrion --short
# {kustomize/v3.9.3  2021-02-07T17:02:13Z  }

kz exec v4.4.0 vesrion --short
# {kustomize/v4.4.0  2021-09-27T16:24:12Z  }

複数バージョンのkustomize間でビルドしたマニフェストを比較したい時に重宝しています。

さいごに

それぞれのバージョンのkustomizeコンテナでやれっていう話かもしれないけど、ローカルで動かせるバイナリに関してはローカルで動かしたほうが速いので許してください 🙇 あと、似たようなツールでいい感じのがあれば教えて下さい!