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

このページでは、GKE on Bare Metal のプロキシルールとファイアウォール ルールの設定方法について説明します。

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

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

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

前提条件

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

住所 目的
*.gcr.io Container Registry からイメージを pull します。
accounts.google.com OpenID の認可リクエストを処理し、トークン検証用の公開鍵を検出します。
cloudresourcemanager.googleapis.com クラスタが接続されている Google Cloud プロジェクトに関するメタデータを解決します。
compute.googleapis.com Cloud Logging と Cloud Monitoring のリソースのリージョンを確認します。
connectgateway.googleapis.com 問題を診断するために、クラスタへの読み取り専用アクセス権を Cloud カスタマーケアに付与する機能を有効にします。
gkeconnect.googleapis.com Google Cloud からのリクエストの受信に使用するチャネルを確立し、レスポンスを発行します。
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 監査ログのアドミッション コントロールとテレメトリー レポートを提供します。
logging.googleapis.com ログエントリを書き込み、Cloud Logging 構成を管理します。
monitoring.googleapis.com Cloud Monitoring のデータと構成を管理します。
oauth2.googleapis.com OAuth トークン交換によってアカウントへのアクセスを認証します。
opsconfigmonitoring.googleapis.com Pod、Deployment、Node などの Kubernetes リソースのメタデータを収集して、指標クエリを拡充します。
securetoken.googleapis.com Workload Identity 承認の更新トークンを取得します。
servicecontrol.googleapis.com 監査ログエントリを Cloud Audit Logs に書き込みます。
serviceusage.googleapis.com サービスと API を有効にして検証します。
stackdriver.googleapis.com Google Cloud のオペレーション スイートのメタデータ(Stackdriver アカウントなど)を管理します。
storage.googleapis.com Container Registry オブジェクトなどのオブジェクト ストレージとバケットを管理します。
sts.googleapis.com Google やサードパーティの認証情報を、Google Cloud リソースへの有効期間が短いアクセス トークンと交換することができます。
www.googleapis.com 受信した Google Cloud サービス リクエストからサービス トークンを認証します。

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

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

Ubuntu の場合、GKE on Bare Metal は APT パッケージ マネージャーを使用します。CentOS と Red Hat 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 は、構成に固有の詳細に置き換えます。

DNF

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

echo "proxy=http://[username:password@]domain" >> /etc/dnf/dnf.conf

[username:password@]domain は、構成に固有の詳細に置き換えます。

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

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

proxy.url

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

proxy.noProxy

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

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

noProxy のユースケース

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

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

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

  proxy:
     url: http://[username:password@]domain
     noProxy:
     - example1.com
     - example2.com

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

目安としては、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 プロキシを手動で構成します

ファイアウォール ルール

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

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

クラスタノードの 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 GKE on Bare Metal が 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 インフラストラクチャでクラスタのライフサイクルを作成、管理します。

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

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

移行元

送信元ポート

終了日

ポート

プロトコル

説明

クライアントとアプリケーション エンドユーザー All 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 レジストリからイメージをダウンロードする。
管理ワークステーション 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 プリフライト チェック(検証)。