プロキシの背後でインストールする

このページでは、Google Distributed Cloud のプロキシとファイアウォール ルールを設定する方法について説明します。

プロキシ サーバーを構成する

ブートストラップに使用するマシンとクラスタノードがプロキシ サーバー経由でインターネットにアクセスしている場合は、次の操作を行う必要があります。

  • クラスタノードでパッケージ マネージャー用のプロキシを構成する
  • クラスタ構成ファイルにプロキシの詳細を構成する。

前提条件

プロキシ サーバーで、次のアドレスへの接続を許可する必要があります。

アドレス 目的
*.gcr.io Container Registry からイメージを pull します。
accounts.google.com OpenID の認可リクエストを処理し、トークン検証用の公開鍵を検出します。
binaryauthorization.googleapis.com Binary Authorization を使用する場合に必要。コンテナ イメージを実行するクラスタからのリクエストを認可(または拒否)します。
cloudresourcemanager.googleapis.com クラスタが接続されている Google Cloud プロジェクトに関するメタデータを解決します。
compute.googleapis.com Cloud Logging と Cloud Monitoring のリソースのリージョンを確認します。
connectgateway.googleapis.com 問題を診断するために、クラスタへの読み取り専用アクセス権を Cloud カスタマーケアに付与する機能を有効にします。
dl.google.com Google Cloud SDK をダウンロードしてインストールします。
gkeconnect.googleapis.com Google Cloud からのリクエストの受信に使用するチャネルを確立し、レスポンスを発行します。クラスタが Google Cloud リージョンを使用してフリートに登録された場合は、許可リストに REGION-gkeconnect.googleapis.com を登録する必要があります(例: us-central1-gkeconnect.googleapis.com)。リージョンを指定しなかった場合、クラスタはグローバル Connect サービス インスタンスを使用し、許可リストに gkeconnect.googleapis.com を登録します。クラスタのフリート メンバーシップの場所を探す必要がある場合は、gcloud container fleet memberships list を実行します。詳細については、gkeConnect.location をご覧ください。
gkehub.googleapis.com Google Cloud に接続するクラスタに対応する Google Cloud 側のフリート メンバーシップ リソースを作成します。
gkeonprem.googleapis.com ベアメタルと VMware インフラストラクチャでクラスタのライフサイクルを作成、管理します。
gkeonprem.mtls.googleapis.com ベアメタルと VMware インフラストラクチャでクラスタのライフサイクルを作成、管理します。このバージョンの API は、mTLS で自動的に使用されます。
iam.googleapis.com Google Cloud への認証と API 呼び出しに使用できるサービス アカウントを作成します。
iamcredentials.googleapis.com 監査ログのアドミッション コントロールとテレメトリー レポートを提供します。
kubernetesmetadata.googleapis.com クラスタは、この API をエンドポイントとして使用して Kubernetes メタデータを Google Cloud に送信します。このメタデータは、クラスタのモニタリング、デバッグ、復元に不可欠です。
logging.googleapis.com ログエントリを書き込み、Cloud Logging 構成を管理します。
monitoring.googleapis.com Cloud Monitoring のデータと構成を管理します。
oauth2.googleapis.com OAuth トークン交換によってアカウントへのアクセスを認証します。
opsconfigmonitoring.googleapis.com Pod、Deployment、Node などの Kubernetes リソースのメタデータを収集して、指標クエリを拡充します。
releases.hashicorp.com 省略可。管理ワークステーションの Terraform クライアントを使用して、terraform apply などのコマンドを実行します。
securetoken.googleapis.com Workload Identity 認可の更新トークンを取得します。
servicecontrol.googleapis.com 監査ログエントリを Cloud Audit Logs に書き込みます。
serviceusage.googleapis.com サービスと API を有効にして検証します。
stackdriver.googleapis.com Google Cloud Observability メタデータ(Stackdriver アカウントなど)を管理します。
storage.googleapis.com Container Registry オブジェクトなどのオブジェクト ストレージとバケットを管理します。
sts.googleapis.com Google やサードパーティの認証情報を、Google Cloud リソースへの有効期間が短いアクセス トークンと交換することができます。
www.googleapis.com 受信した Google Cloud サービス リクエストからサービス トークンを認証します。

これらの URL に加えて、プロキシ サーバーは、オペレーティング システムのパッケージ マネージャーが必要とするパッケージのミラーリングも許可する必要があります。パッケージ マネージャーの構成を更新すると、より確定的なリストを使用でき、管理が容易になります。

クラスタノードでパッケージ マネージャー用のプロキシを構成する

Google Distributed Cloud は、Ubuntu では APT パッケージ管理システムを使用し、Red Hat Enterprise Linux では DNF パッケージ管理システムを使用します。OS Package Manager のプロキシ構成が正しいことを確認してください。

プロキシ構成の詳細については、OS ディストリビューションのドキュメントをご覧ください。次の例は、プロキシを構成する 1 つの方法を示しています。

APT

以下のコマンドは、APT のプロキシを構成する方法を示しています。

sudo touch /etc/apt/apt.conf.d/proxy.conf

echo 'Acquire::http::Proxy "http://USERNAME:PASSWORD@DOMAIN";' \
    >> /etc/apt/apt.conf.d/proxy.conf

echo 'Acquire::https::Proxy "http://USERNAME:PASSWORD@DOMAIN";' \
    >> /etc/apt/apt.conf.d/proxy.conf

USERNAME:PASSWORD@DOMAIN は、構成に固有の詳細に置き換えます。たとえば、プロキシでログインが不要な場合は、DOMAINUSERNAME:PASSWORD@ を含めないでください。

DNF

このコマンドは、DNF のプロキシを構成する方法を示しています。

echo "proxy=http://USERNAME:PASSWORD@DOMAIN" >> /etc/dnf/dnf.conf

USERNAME:PASSWORD@DOMAIN は、構成に固有の詳細に置き換えます。たとえば、プロキシでログインが不要な場合は、DOMAINUSERNAME:PASSWORD@ を含めないでください。

クラスタ構成ファイルにプロキシの詳細を構成する

クラスタの構成ファイルで次の値を設定して、プロキシを使用するようにクラスタを構成します。

proxy.url

プロキシ URL を指定する文字列。ブートストラップとノードマシンは、このプロキシを使用してインターネットにアクセスします。プロキシの URL 文字列は、そのスキーマで始まる必要があります(例: http://https://)。

proxy.noProxy

プロキシ サーバーを経由しない IP アドレス、ホスト名、ドメイン名のリスト。

ほとんどの場合、このリストに項目を追加する必要はありません。

noProxy のユースケース:

  • 同じプライベート ネットワークにあるプライベート パッケージ ミラーの使用(アクセスにプロキシを必要としない)

  • 同じプライベート ネットワークにあるプライベート レジストリ ミラーの使用(アクセスにプロキシを必要としない)

次に、クラスタ構成ファイルのプロキシ設定の例を示します。

  proxy:
     url: http://USERNAME:PASSWORD@DOMAIN
     noProxy:
     - example1.com
     - example2.com

GKE Identity Service のプロキシ構成

Google Distributed Cloud クラスタで認証に GKE Identity Service を使用する場合は、プロキシの背後で GKE Identity Service が機能するように、次の追加手順が必要です。

  1. クラスタ構成ファイルで、GKE Identity Service の設定の OIDC authentication セクションにプロキシの詳細を設定します。

      authentication:
        oidc:
          proxy: http://USERNAME:PASSWORD@DOMAIN
    
  2. OIDC プロバイダの認証 URL への接続を許可するように、プロキシ サーバーの構成を更新します。

クラスタ内でプロキシがどのように使用されるか

目安としては、bmctl コマンドとその生成プロセスでは、環境変数 HTTPS_PROXYNO_PROXY(定義されている場合)のプロキシ構成が使用されます。それ以外の場合、bmctl はクラスタ構成ファイルのプロキシ構成を使用します。管理ワークステーション、クラスタノード マシン、ブートストラップ クラスタで実行されるその他のコマンドでは、クラスタ構成ファイルのプロキシ構成が使用されます。

各ノードの OS パッケージ マネージャーは、プロキシ設定の独自の構成ファイルを使用します。

ブートストラップ マシンでプロキシ構成をオーバーライドする

クラスタ構成ファイルのプロキシ設定をオーバーライドすることで、ノードマシンで使用されているプロキシとは異なるプロキシの背後で管理ワークステーションを実行できます。プロキシ設定をオーバーライドするには、ブートストラップ マシンで次の環境変数を設定します。

export HTTPS_PROXY=http://USERNAME:PASSWORD@DOMAIN

USERNAME:PASSWORD@DOMAIN は、構成に固有の詳細に置き換えます。

export NO_PROXY=example1.com,example2.com

example1.com,example2.com は、プロキシ サーバーを経由しない IP アドレス、ホスト名、ドメイン名に置き換えます。

副作用

root として実行すると、bmctl はブートストラップ マシンの Docker プロキシ構成を更新します。bmctl を root として実行しない場合は、Docker プロキシを手動で構成します

ファイアウォール ルール

以降のセクションで説明するファイアウォール ルールを設定して、Google Distributed Cloud に必要なトラフィックを許可します。

Google Distributed Cloud の前提条件となるポート要件については、ポートの使用状況をご覧ください。

クラスタノードの IP アドレスのファイアウォール ルール

次の表に、クラスタで使用できる IP アドレスのファイアウォール ルールを示します。

送信元

送信元ポート

送信先

ポート

プロトコル

説明

クラスタノード 1024~65535 cloudresourcemanager.googleapis.com
gkeconnect.googleapis.com
gkehub.googleapis.com
443 TCP / HTTPS フリート登録にはアクセス権が必要です。
Cloud Logging Collector。クラスタノードで実行されます。 1024~65535 oauth2.googleapis.com
logging.googleapis.com
stackdriver.googleapis.com
servicecontrol.googleapis.com
storage.googleapis.com
www.googleapis.com
443 TCP / HTTPS
Cloud Metadata Collector。クラスタノードで実行されます。 1024~65535 opsconfigmonitoring.googleapis.com 443 TCP / HTTPS
Cloud Monitoring Collector。クラスタノードで実行されます。 1024~65535 oauth2.googleapis.com
monitoring.googleapis.com
stackdriver.googleapis.com
servicecontrol.googleapis.com
443 TCP / HTTPS
クラスタノード 1024~65535 オンプレミスのローカル Docker レジストリ レジストリにより異なる TCP / HTTPS Google Distributed Cloud が gcr.io ではなく、ローカルの非公開 Docker レジストリを使用するように構成されている場合は必須です。
クラスタノード 1024~65535 gcr.io
oauth2.googleapis.com
storage.googleapis.com
管理クラスタで有効になっているサービスに必要な *.googleapis.com 形式の Google API URL。
443 TCP / HTTPS 公開 Docker レジストリからイメージをダウンロードします。非公開 Docker レジストリを使用する場合は不要です。
Connect Agent。クラスタノードで実行されます。 1024~65535 cloudresourcemanager.googleapis.com
gkeconnect.googleapis.com
gkehub.googleapis.com
www.googleapis.com
iam.googleapis.com
iamcredentials.googleapis.com
oauth2.googleapis.com
securetoken.googleapis.com
sts.googleapis.com
accounts.google.com
443 TCP / HTTPS Connect Agent が管理するトラフィックの詳細については、Connect Agent の概要をご覧ください。
クラスタノード 1024~65535 gkeonprem.googleapis.com
gkeonprem.mtls.googleapis.com
443 TCP / HTTPS ベアメタルと VMware インフラストラクチャでクラスタのライフサイクルを作成、管理します。

残りのコンポーネントのファイアウォール ルール

次の表のルールは、前のセクションで記載されていない他のコンポーネントすべてに適用されます。

送信元

送信元ポート

送信先

ポート

プロトコル

説明

クライアントとアプリケーション エンドユーザー すべて Istio Ingress の VIP 80、443 TCP ユーザー クラスタの Ingress サービスへのエンドユーザー トラフィック。
管理ワークステーション 32768~60999 gcr.io
cloudresourcemanager.googleapis.com
oauth2.googleapis.com
storage.googleapis.com
このクラスタで有効になっているサービスに必要な任意の *.googleapis.com URL。
443 TCP / HTTPS 公開 Docker レジストリから Docker イメージをダウンロードします。
管理ワークステーション 32768~60999 gcr.io
cloudresourcemanager.googleapis.com
iam.googleapis.com
oauth2.googleapis.com
serviceusage.googleapis.com
storage.googleapis.com
管理クラスタやユーザー クラスタで有効なサービスに必要な任意の *.googleapis.com URL。
443 TCP / HTTPS プリフライト チェック(検証)。