🦇
plutoをGitLab CIに組み込んで非推奨のk8s apiVersionを検出する
はじめに
k8sのバージョンが上がるとAPIが再編成されたりアップグレードされたりします。
新しいAPIが出ると古いAPIは非推奨になり最終的には削除されます。
なので、k8sのバージョンアップ時はDeprecated API Migration Guideなどを見て非推奨のapiVersionが使われていないか確認して時には修正する必要があります。
例
CronJob の batch/v1beta1 -> batch/v1
pluto
plutoはFairwinds Ops, Inc のOSSで非推奨のKubernetes apiVersionを見つけてくれるツールです
GitLab CI
helmfileを使っているならhelmfile templateをplutoに標準入力として渡せば良いだけです。
--target-versionsにはアップグレード先のk8sのversionを指定します。
pluto:
image: quay.io/fairwinds/pluto:master
variables:
K8S_VERSION: "1.25.0"
when: manual
before_script:
- wget -q https://get.helm.sh/helm-v3.11.2-linux-amd64.tar.gz -O - | tar xz
- export PATH="${PATH}:$(realpath linux-amd64)"
- wget -q https://github.com/helmfile/helmfile/releases/download/v0.152.0/helmfile_0.152.0_linux_amd64.tar.gz -O - | tar xz
script:
- find . -name helmfile.yaml | xargs -i ./helmfile -f {} template | /pluto detect --target-versions k8s=v${K8S_VERSION} -
NAME KIND VERSION REPLACEMENT REMOVED DEPRECATED
sample CronJob batch/v1beta1 batch/v1 true true
plutoは当然ですがapiVersionしか眼中にないので、apiVersionだけの形式をsedで作って流しても検査してくれます。
cat chart/templates/*yaml | grep apiVersion | sed '1,$i ---' | /pluto detect --target-versions k8s=v${K8S_VERSION} -
Discussion