はじめに
GKE Private Clusterの構成は、以下の3パターン構成ありますが、マニュアルを読んでもイメージしづらいため整理してみました。
-
- No client access to the public endpoint
-
- Limited access to the public endpoint
-
- Unrestricted access to the public endpoint
GKE Private Clusterとは
Private Clusterは、ワーカーノードにPublic IPが付与されていないGKE Clusterです。Master nodeで起動しているAPI serverに対してkubectlを実行するエンドポイントの設定方法によって3つの種類が構成可能です。
Google Kubernetes Engine(GKE)で限定公開クラスタを作成する方法について説明します。限定公開クラスタでは、ノードに RFC 1918 の内部 IP アドレスのみがあるため、ワークロードが公共のインターネットから隔離されるようになります。限定公開クラスタの仕組みについて詳しくは、限定公開クラスタをご覧ください
前提となる用語の説明
Private Node: Public IPがアタッチされていないWorker Node。
Public Endpoint: GCP Managed VPC上で起動しているMaster Nodeにアクセスするためインターネットに公開されたエンドポイント。
Private Endpoint: GCP Managed VPC上で起動しているMasterNodeにVPC Peeringを使って接続するためのエンドポイント。インターネットを経由しない。
Master Authorized Network: Public Endpointへのアクセスが許可されたネットワーク。
Public Cluster
Private Clusterを有効しないでGKE Clusterを作成すると、Public Clusterになります。
Public Clusterは、Worker NodeにPublic IPが付与されています。また、Master NodeへのアクセスはPublic Endpoint経由になります。
1.No client access to the public endpoint
Woker NodeにPublic IPが付与されおらず、Master NodeにアクセスするためのPublic Endpointもない構成です。Worker node(Kubeletなど)からMaster Node(API Server)の通信は、VPC Peeringを経由して行います。kubectlなどの処理も、VPC Peeringを経由してPrivate Endpointに対してアクセスします。
kubectlは、Worker NodeがホストされたVPC内にGCEインスタンスを起動するとアクセス可能となります。
2.Limited access to the public endpoint
Woker NodeにPublic IPが付与されていないが、Master NodeにアクセスするためのPublic Endpointは提供された構成です。ただし、Master NodeのPublic Endpointにアクセス可能なネットワークを制限します。許可されたネットワークは、マスター認証済みネットワークと呼びます。
VPC内のGCEインスタンスを立ててkubectl叩いてもMaster Nodeにはアクセスできない。
3.Unrestricted access to the public endpoint
Woker NodeにPublic IPが付与されていないが、Master NodeにアクセスするためのPublic Endpointは提供された構成です。Master NodeのPublic Endpointにアクセス可能なネットワークを制限しません。
VPC内のGCEインスタンスを立ててkubectl叩いてもMaster Nodeにはアクセスできない。
表で整理してみる
Cluster作成時のgcloudコマンドのオプションの違いとしては以下になります。