GKE on AWS のセキュリティ グループ

このトピックでは、GKE on AWS に必要な AWS セキュリティ グループ(SG)について説明します。

管理サービスをインストールするか、既存の AWS VPC を使用すると、anthos-gke によってセキュリティ グループが作成されます。追加のセキュリティ グループ ID のリストを使用して、AWSCluster CRD と AWSNodePool CRD を構成できます。

次の図は、GKE on AWS がセキュリティ グループを使用して Google Cloud サービスと AWS サービスに接続する方法の概要を示しています。

GKE on AWS コンポーネントから Google Cloud サービスおよび AWS サービスへのポートと接続の図。

管理サービスのセキュリティ グループ

管理サービスのセキュリティ グループを使用すると、HTTPS で管理サービス API にアクセスできます。踏み台インスタンスが構成されている場合は、踏み台インスタンスのセキュリティ グループからのインバウンドが許可されます。

GKE on AWS 環境を既存の AWS VPC 内に作成する場合は、次の接続を許可するセキュリティ グループが必要です。

タイプ プロトコル ポート アドレス 説明
インバウンド TCP 443 VPC CIDR AWS VPC からの HTTPS を許可します。
インバウンド TCP 22 踏み台インスタンスの SG 踏み台インスタンスからの SSH トンネリングを許可します(専用 VPC にのみ含まれます)。
アウトバウンド TCP 80 0.0.0.0/0 送信 HTTP を許可します。
アウトバウンド TCP 443 0.0.0.0/0 送信 HTTPS を許可します。

送信ドメインへのアクセス

管理サービスには、次のドメインへのアウトバウンド アクセスが必要です。

  • gkeconnect.googleapis.com
  • gkehub.googleapis.com
  • oauth2.googleapis.com
  • storage.googleapis.com
  • www.googleapis.com
  • gcr.io
  • k8s.gcr.io
  • EC2-REGION.ec2.archive.ubuntu.com

EC2-REGION は、GKE on AWS が実行されている AWS EC2 リージョンに置き換えます。例: us-west-1.ec2.archive.ubuntu.com/

Prometheus と Kiali で Cloud Service Mesh を使用している場合は、次のドメインからのアウトバウンド アクセスを許可します。

  • docker.io
  • quay.io

踏み台インスタンスのセキュリティ グループ(省略可)

グループによって許可された踏み台インスタンスのセキュリティ グループ接続を使用して、GKE on AWS の管理サービスとユーザー クラスタに接続します。このグループはオプションであり、anthos-gke を使用して専用の VPC に GKE on AWS インストール環境を作成する場合にのみ含まれます。

タイプ プロトコル ポート アドレス 説明
インバウンド TCP 22 AWSManagementService 構成の bastionAllowedSSHCIDRBlocks からの CIDR ブロック 踏み台インスタンスへの SSH 接続を許可します。
アウトバウンド TCP 22 0.0.0.0/0 送信 SSH を許可します。
アウトバウンド TCP 80 0.0.0.0/0 送信 HTTP を許可します。
アウトバウンド TCP 443 0.0.0.0/0 送信 HTTPS を許可します。

コントロール プレーンのセキュリティ グループ

コントロール プレーンのセキュリティ グループでは、コントロール プレーン ノードと管理サービス間の接続、コントロール プレーン ノードとノードプール間の接続が許可されます。

コントロール プレーンは、AWS ネットワーク ロードバランサ(NLB)の背後にある 3 つの EC2 インスタンスで構成されます。これらのインスタンスは、他のノード、ノードプール ノード、NLB の etcd インスタンスからの接続を受け入れます。GKE on AWS コンポーネントを更新するために、すべてのアウトバウンド HTTP / HTTPS トラフィックが許可されます。

セキュリティ グループ ID は、AWSCluster 定義で指定します。

タイプ プロトコル ポート アドレス 説明
インバウンド TCP 2380 この SG コントロール プレーンの etcd レプリケーションを許可します。
インバウンド TCP 2381 この SG コントロール プレーンの etcd イベント レプリケーションを許可します。
インバウンド TCP 443 ノードプール SG ノードプール ノードからの HTTPS を許可します。
インバウンド TCP 443 AWS VPC CIDR 範囲 ロードバランサと管理サービスからの HTTPS を許可します。
インバウンド TCP 11872 AWS VPC CIDR 範囲 ロードバランサを HTTP ヘルスチェックします。
アウトバウンド TCP 22 ノードプール SG ノードプールへの SSH トンネリングを許可します(クラスタ v1.20 以下の場合)。
インバウンド TCP 8132 ノードプール SG ノードプールからの Konnectivity 接続を許可します(クラスタ v1.21 以降の場合)。
アウトバウンド TCP 80 0.0.0.0/0 送信 HTTP を許可します。
アウトバウンド TCP 443 0.0.0.0/0 アウトバウンド HTTPS を許可します。
アウトバウンド TCP 2380 この SG コントロール プレーンの etcd レプリケーションを許可します。
アウトバウンド TCP 2381 この SG コントロール プレーンの etcd イベント レプリケーションを許可します。
アウトバウンド TCP 10250 ノードプール SG コントロール プレーンから Kubelet への接続を許可します。

ノードプールのセキュリティ グループ

ノードプールのセキュリティ グループでは、コントロール プレーンと他のノードからの接続が許可されます。セキュリティ グループ ID は AWSNodePool 定義で指定します。

タイプ プロトコル ポート アドレス 説明
インバウンド TCP すべて この SG Pod 間の通信を許可します。
インバウンド TCP 22 コントロール プレーン SG コントロール プレーンからの SSH トンネリングを許可します(クラスタ v1.20 以下の場合)。
アウトバウンド TCP 8132 コントロール プレーン SG コントロール プレーンへの Konnectivity 接続を許可します(クラスタ v1.21 以降の場合)。
インバウンド TCP 443 コントロール プレーン SG コントロール プレーンから Kubelet への接続を許可します。
インバウンド TCP 10250 コントロール プレーン SG コントロール プレーンから Kubelet への接続を許可します。
アウトバウンド TCP すべて この SG Pod 間の通信を許可します。
アウトバウンド TCP 80 0.0.0.0/0 送信 HTTP を許可します。
アウトバウンド TCP 443 0.0.0.0/0 送信 HTTPS を許可します。