GKEのルートCA有効期限の調査

kubectlなどkubernetesクラスタとの通信は、クラスタごとのルートCAで署名されており、GKEのルートCAは5年で期限が切れるため手動更新が必要です。
Google Kubernetes Engineは全体的にマネージドサービスであるため、5年に1度の手動更新の存在は気づきにくいポイントです。

更新作業は、 クラスタ認証情報のローテーションの説明に従って、gcloud container clusters updateコマンドで実行します。
--start-credential-rotation--complete-credential-rotationの2段階に分かれており、それぞれでノードプールのアップグレードを伴うダウンタイムが発生します。

ルートCAの有効期限

クラスタ認証情報のローテーションは、かなり大がかりなアップグレードなのですが、現状、その有効期限を手軽に確認する手段がありません。
Action requiredのシステムメールで直前に通知されます。

自ら確認したい場合には、ルートCAを直接解析することで確認できました。
GKEのクラウドコンソールの各クラスタ詳細画面に「クラスタの証明書を表示」というリンクがあり、ルートCAを表示できます。

証明書の情報を表示するには、以下のようにopensslコマンドでデコードします。

$ echo "ルートCA" | openssl x509 -text -noout

なお、ルートCA文字列は"BEGIN CERTIFICATE"と"END CERTIFICATE"も含みます。

ルートCAの有効期限が切れてしまうと操作不能になるため、可能なタイミングで差し替えを実施しなくてはなりません。

中馬崇尋
Chuma Takahiro