このページでは、GDCV for Bare Metal のプロキシとファイアウォール ルールを設定する方法について説明します。
プロキシ サーバーを構成する
ブートストラップに使用するマシンとクラスタノードがプロキシ サーバー経由でインターネットにアクセスしている場合は、次の操作を行う必要があります。
- クラスタノードでパッケージ マネージャー用のプロキシを構成する
- クラスタ構成ファイルにプロキシの詳細を構成する。
前提条件
プロキシ サーバーで、次のアドレスへの接続を許可する必要があります。
住所 | 目的 |
---|---|
*.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 カスタマーケアに付与する機能を有効にします。 |
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 Observability メタデータ(Stackdriver アカウントなど)を管理します。 |
storage.googleapis.com |
Container Registry オブジェクトなどのオブジェクト ストレージとバケットを管理します。 |
sts.googleapis.com |
Google やサードパーティの認証情報を、Google Cloud リソースへの有効期間が短いアクセス トークンと交換することができます。 |
www.googleapis.com |
受信した Google Cloud サービス リクエストからサービス トークンを認証します。 |
これらの URL に加えて、プロキシ サーバーは、オペレーティング システムのパッケージ マネージャーが必要とするパッケージのミラーリングも許可する必要があります。パッケージ マネージャーの構成を更新すると、より確定的なリストを使用でき、管理が容易になります。
クラスタノードでパッケージ マネージャー用のプロキシを構成する
GDCV for Bare Metal は、Ubuntu では 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_PROXY
と NO_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 プロキシを手動で構成します。
ファイアウォール ルール
以降のセクションで説明するファイアウォール ルールを設定して、GDCV for 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 | プリフライト チェック(検証)。 |