こんにちは。
GMOアドマーケティングの@zakisanbaimanです。
GMOアドマーケティングのDMPサービスであるMinervaはGKEを利用しているのですが、Googleから以下のメールが届きました。
Kubernetes v1.26 以降にて GKE クラスタに引き続きアクセスするためには、gke-gcloud-auth-plugin という新しいバイナリを Kubectl(および Kubernetes カスタム クライアント)とともにインストールする必要がございます
どうやら1.25以前で利用していた認証方法が利用不可になり、代わりに新しいプラグインを利用して欲しいとのことのようです。
なぜ認証方法が変わるのか?
背景を知ることは作業の精度を上げるためにも重要です。
KubernetesはOSSであり、OSSをそのまま使ったりサービスプロバイダー(GCPのGKE、AWSのEKSなど)を通して利用する方法があります。
kubectlコマンド内に各サービスプロバイダー固有のコードが埋め込まれており、それがプラグイン形式に変わることによってユーザが利用している各サービスプロバイダー用プラグインのインストールが必要になるということです。
プラグインベースになることによって、新たなサービスプロバイダーが参入しやすくなり、Kubernetesがより盛り上がりそうですね!
環境
GKE 1.26
CentOS 7.9
GKE1.26で警告を確認
まず新しいプラグインである「gke-gcloud-auth-plugin」をインストールせずにkubectlコマンドを叩いてみて、警告が出ることを確認します。
1 2 3 4 5 6 7 8 |
▼GKE用のプラグインがインストールされてないことを確認 $ gke-gcloud-auth-plugin --version -bash: gke-gcloud-auth-plugin: コマンドが見つかりません ▼kubectlコマンド実行 $ kubectl get pods Pod一覧が正常に表示される |
警告が出るはずなのですが、一向に出ません。
少し気持ち悪いですが、インストール作業を進めていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
▼インストール $ sudo yum install google-cloud-sdk-gke-gcloud-auth-plugin ▼GKE用プラグインがインストールされていることを確認 $ gke-gcloud-auth-plugin --version Kubernetes v1.26.2-alpha+038d2342e9672c4772e9ee48a3f1dd9438156eba ▼kubectl構成を更新 $ gcloud container clusters get-credentials CLUSTER_NAME \ --region=COMPUTE_REGION Fetching cluster endpoint and auth data. kubeconfig entry generated for CLUSTER_NAME. ▼構成が以下の様になればOK $ kubectl get namespaces NAME STATUS AGE default Active 105m kube-node-lease Active 105m kube-public Active 105m kube-system Active 105m ▼kubectlコマンド実行 $ kubectl get pods Pod一覧が正常に表示される |
まとめ
プラグインインストール前には警告が出て、インストール後は警告が出ないことが期待する挙動だったため、少し腑に落ちない結果となりましたが、一旦作業としては完了です。
kubectlコマンドを実行しているサーバや端末は至る所にあるので、それぞれで対応しないといけないのが少し大変そうです。
最後までお読み頂きありがとうございました!
参考
GCP公式ブログ「Here’s what to know about changes to kubectl authentication coming in GKE v1.26」