GKEのIPレンジ・ルートCA有効期限

Google Kubernetes Engineは、Pod/ServiceのIPをVPCのサブネット範囲で動的に設定しています(古いクラスタでVPCネイティブでない場合をのぞく)。

PodとServiceに割り当てられるIP範囲はgcloudコマンドのクラスタ情報で確認できます。

# podのIP範囲
$ gcloud container clusters describe <cluster-name> --zone <zone-of-cluster-name> | grep podIpv4Cidr
    podIpv4CidrBlock: 10.20.0.0/14

# serviceのIP範囲
$ gcloud container clusters describe <cluster-name> --zone <zone-of-cluster-name> | grep servicesIpv4Cidr
    servicesIpv4CidrBlock: 10.100.0.0/20

Cloudコンソールのクラスタ情報にも同じ情報が掲載されています。

podのIPは、DBMSなどにホストベースのアクセス制御を実装する場合に必要です。

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の有効期限が切れてしまうと操作不能になるため、可能なタイミングで差し替えを実施しなくてはなりません。

⁋ 2022/06/10↻ 2026/10/13