このページでは、ベアメタル版 Anthos クラスタのプロキシとファイアウォール ルールを設定する方法について説明します。
プロキシ サーバーを構成する
ブートストラップに使用するマシンとクラスタノードがプロキシ サーバー経由でインターネットにアクセスしている場合は、次の操作を行う必要があります。
- クラスタノードでパッケージ マネージャー用のプロキシを構成する
- クラスタ構成ファイルにプロキシの詳細を構成する。
前提条件
プロキシ サーバーで、次のアドレスへの接続を許可する必要があります。
住所 | 目的 |
---|---|
*.gcr.io |
Container Registry からイメージを pull します。 |
accounts.google.com |
OpenID の認可リクエストを処理し、トークン検証用の公開鍵を検出します。 |
cloudresourcemanager.googleapis.com |
クラスタが接続されている Google Cloud プロジェクトに関するメタデータを解決します。 |
compute.googleapis.com |
Cloud Logging と Cloud Monitoring のリソースのリージョンを確認します。 |
dl.fedoraproject.org |
Red Hat Enterprise Linux(RHEL)ディストリビューションを使用する場合に、Extra Packages for Enterprise Linux(EPEL)をインストールします。 |
download.docker.com |
Docker リポジトリを追加します。これは、プロキシの背後で管理ワークステーションを実行する場合に必要です。Docker がコンテナ ランタイムに使用される場合、プロキシの背後で実行されるノードマシンに必要です。 |
gkeconnect.googleapis.com |
Google Cloud からのリクエストの受信に使用するチャネルを確立し、レスポンスを発行します。 |
gkehub.googleapis.com |
Google Cloud に接続するクラスタに対応する Google Cloud 側のフリート メンバーシップ リソースを作成します。 |
iam.googleapis.com |
Google Cloud への認証と API 呼び出しに使用できるサービス アカウントを作成します。 |
iamcredentials.googleapis.com |
監査ログのアドミッション コントロールとテレメトリー レポートを提供します。 |
logging.googleapis.com |
ログエントリを書き込み、Cloud Logging 構成を管理します。 |
monitoring.googleapis.com |
Cloud Monitoring のデータと構成を管理します。 |
packages.cloud.google.com |
Google Cloud パッケージ ミラーからパッケージをダウンロードします。 |
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 の場合、ベアメタル版 Anthos クラスタは 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 プロキシを手動で構成します。
ファイアウォール ルール
以降のセクションで説明するファイアウォール ルールを設定して、ベアメタル版 Anthos クラスタに必要なトラフィックを許可します。
ベアメタル版 Anthos クラスタの必須のポート要件については、ポートの使用をご覧ください。
クラスタノードの 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 | ベアメタル版 Anthos クラスタが、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 の概要をご覧ください。 |
残りのコンポーネントのファイアウォール ルール
次の表に記載するルールは、前のセクションで記載されていない他のコンポーネントすべてに適用されます。
移行元 |
送信元ポート |
終了日 |
ポート |
プロトコル |
説明 |
---|---|---|---|---|---|
クライアントとアプリケーション エンドユーザー | 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 | プリフライト チェック(検証)。 |