Kubernetes

client.authentication.k8s.io/v1alpha1からv1beta1へアップデート

記事内に商品プロモーションを含む場合があります

Mac の OS アップデート(Monterey)に伴い、kubectl コマンド実行時に下記の警告が出るようになりました。

Kubeconfig user entry is using deprecated API version client.authentication.k8s.io/v1alpha1. Run ‘aws eks update-kubeconfig’ to update.

AWS の EKS クラスタとの兼ね合いでしょうが、kubectl や aws cli のバージョンなどを確認しておきましょうか。

今回は、EKS を操作するための各種ツールの確認と kube-config の調整をしてみましたので紹介します。

kubectlのバージョン

kubectl のバージョンは以下の通り 1.22。

JSON っぽい感じで出力されますが、JSON ではないので jq コマンドでも整形できないのか・・・。

EKS クラスタは 1.20 なので、バージョン差の警告が出てる・・・。

まあ、ここは EKS クラスタのバージョンアップをするまで放置しておこう。

WARNING: version difference between client (1.22) and server (1.20) exceeds the supported minor version skew of +/-1

aws-cliのバージョン

AWS CLI も古いバージョンを放置しておくとハマることがあるので要注意。

eksctlのバージョン

eksctl も定期的にアップデートしておくと、EKS 触る時に安心感があります。

せっかくなので最新にしておきますか。

おやっ、バージョンアップには成功したっぽいけど別のエラーが・・・。

eksctl のコマンドも実行できなくなっています。

softwareupdate をしろってことなのかな?

あー、余計なことするんじゃなかったなぁ。

そして、OS 再起動するという罠・・・。

softwareupdate ってそういうことだったのか。

developer tool みたいな、シェルのツールキットか何かかと思ってた。

これだけで eksctl が解決するわけではなかったので、出力された内容の通り以下を実行。

そして、地獄のコマンドラインツールのダウンロードが始まります。

最初、残り 300 時間とか表示されたので焦った・・・。

kubectl実行時にclient.authentication.k8s.io/v1alpha1からv1beta1へのアップデートを促される

ただ、25 分以上のダウンロード待ちも長い。

そして、インストールもどれだけ時間掛かるんだよ・・・。

kubectl実行時にclient.authentication.k8s.io/v1alpha1からv1beta1へのアップデートを促される

今度は xcode ですか。

これ、仕事始めにやってしまったら地獄ですね。

kubectl実行時にclient.authentication.k8s.io/v1alpha1からv1beta1へのアップデートを促される

インストールが残り約 1 分から全然終わらないのですけど・・・。

そして eksctl コマンドが復活しないままなので、brew で install することに。

あれっ、バージョンの後ろに dev とか日時とかが付いてますね。

なんだこれは。

アップデートしてみても、これが最新のようなのでこのままにしておきますか。

update-kubeconfig

かなり道草を食いましたが、とっとと update-kubeconfig しちゃいましょう。

ちなみに、コンテキストにエイリアスを設定している場合、そのまま update-kubeconfig すると別の設定が追記されてしまいます。

そこで、~/.kube/config を vi で直接編集してもいいかなって思ったのですが、どうやらエイリアスのオプションがあるようです。

これで v1beta1 に書き換わりました。

直接 config ファイルを編集する場合は、下記の apiVersion の部分が該当箇所になります。

まとめ

kubectl のコマンド実行時に client.authentication.k8s.io/v1alpha1 についての警告が表示される問題を解決しました。

v1alpha1 から v1beta1 に変わったということは、今後も v1 への移行が発生しそうですね。

kubernetes のプラグインはこの手の API バージョンが多いので、バージョンの追従が大変な部分もあります。

今回はバージョンの書き換えだけで済んだのでラッキーでしたが、定義などにも変更が入る場合は厄介。

ただ、update-kubeconfig が使えるケースなら自動で全部やってくれそうですね。