このトピックでは、AWS 上の Anthos クラスタ(GKE on AWS)管理サービスからトラフィックをルーティングし、HTTP/HTTPS プロキシ経由で接続する方法について説明します。
AWS 上の Anthos クラスタでは、次の理由でインターネットへのアクセスを必要とします。
- 管理サービスでは、Connect を使用してユーザー クラスタを登録します。
- ユーザー クラスタでは Connect エージェントが実行されます。
- すべての管理サービスとユーザー クラスタ ノードで、Container Registry からイメージがダウンロードされます。
このトラフィックは、HTTP/HTTPS プロキシ経由でルーティングできます。AWS 1.8 の Anthos クラスタでは、管理サービスとクラスタごとに個々のプロキシ設定を構成できます。プロキシ設定の変更方法の詳細については、クラスタ プロキシ設定の変更をご覧ください。
anthos-gke.yaml
で参照される JSON ファイルでプロキシ設定を宣言します。
前提条件
プロキシを使用するように AWS 上の Anthos クラスタを構成する前に、AWS VPC エンドポイントを有効にして、プロキシのセキュリティ グループを定義し、特定の Google Cloud サービスへの送信接続を許可する必要があります。
HTTP プロキシを使用するには、ユーザー クラスタで Kubernetes 1.17 以降が実行されている必要があります。
VPC エンドポイントを有効にする
プロキシを構成する前に、AWS 上の Anthos クラスタのインストール環境用に VPC エンドポイントを作成する必要があります。VPC エンドポイントを使用すると、プライベート サブネット内のリソースから、公衆インターネット アクセスなしで AWS サービスにアクセスできます。
次の表に、AWS 上の Anthos クラスタで VPC エンドポイントを必要とする AWS サービスと、エンドポイントのタイプ、エンドポイントに対するアクセス権が必要な AWS 上の各 Anthos クラスタ コンポーネントのセキュリティ グループを示します。
サービス | エンドポイントのタイプ | セキュリティ グループ |
---|---|---|
自動スケーリング | インターフェース | 管理プレーン、コントロール プレーン、ノードプール |
EC2 | インターフェース | 管理プレーン、コントロール プレーン、ノードプール |
負荷分散 | インターフェース | 管理プレーン、コントロール プレーン、ノードプール |
鍵管理サービス | インターフェース | 管理プレーン、コントロール プレーン、ノードプール |
S3 | ゲートウェイ | 管理プレーン、コントロール プレーン、ノードプール |
セキュリティ トークン サービス(STS) | インターフェース | 管理プレーン、コントロール プレーン、ノードプール |
エンドポイントは AWS VPC Console から作成できます。VPC エンドポイントの作成時に設定するオプションは VPC 構成によって異なります。
セキュリティ グループを定義する
AWS 上の Anthos クラスタのコンポーネントは、プロキシ サーバーに接続できる必要があります。プロキシ サーバーへの送信接続を可能にする AWS セキュリティ グループを探すか新たに作成します。セキュリティ グループは、管理プレーン、コントロール プレーン、ノードプールのセキュリティ グループからプロキシのアドレスとポートへの送信アクセスを許可します。このセキュリティ グループの ID(sg-12345678
など)を保存します。
型 | プロトコル | 送信元ポート | 送信先ポート | アドレス |
---|---|---|---|---|
下り(外向き) | TCP | プロキシポート | プロキシポート | プロキシ セキュリティ グループ |
Google Cloud サービスへの送信接続を許可する
AWS 上の Anthos クラスタで Google Cloud サービスに接続するには、プロキシ サーバーで次のドメインへのトラフィックを許可する必要があります。
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 は、AWS 上の Anthos クラスタのインストールが実行される AWS EC2 リージョンに置き換えます。例: us-west-1.ec2.archive.ubuntu.com/
Prometheus と Kiali で Anthos Service Mesh を使用している場合は、次のドメインからの送信接続を許可します。
docker.io
quay.io
プロキシ構成の JSON ファイルの作成
プロキシ構成の JSON ファイルには、キー名が httpProxy
、httpsProxy
、noProxy
の 3 つの Key-Value ペアが含まれる 1 つのオブジェクトが含まれています。サーバーに適用する前に、ユーザー名とパスワードが AWS KMS 鍵を使用してエンベロープ暗号化されます。
{
"httpProxy": "HTTP_PROXY",
"httpsProxy": "HTTPS_PROXY",
"noProxy": "NO_PROXY"
}
以下のように置き換えます。
- HTTP_PROXY を、HTTP リクエストをルーティングするプロキシ サーバー アドレスに置き換えます。
- HTTPS_PROXY を、HTTPS リクエストをルーティングするプロキシ サーバーに置き換えます。
- NO_PROXY を、プロキシが使用されない IP、CIDR 範囲、ドメインのリスト(省略可)に置き換えます。
詳細については、構成リファレンスをご覧ください。
たとえば、次の構成では 10.0.0.254
でプロキシを使用し、多数のサイトを除外します。
{
"httpProxy": "http://user:password@10.0.0.254:80",
"httpsProxy": "http://user:password@10.0.0.254:443",
"noProxy": "localhost,127.0.0.1,169.254.169.254,10.0.0.0/16,example.com"
}
anthos-gke.yaml へのプロキシの追加
次の手順に沿って操作し AWSManagementService を構成します。
AWS 上の Anthos クラスタ構成のディレクトリに移動します。このディレクトリは、管理サービスをインストールしたときに作成したものです。
cd anthos-aws
テキスト エディタで
anthos-gke.yaml
を開きます。次の例のようにspec.proxy
の値を追加します。apiVersion: multicloud.cluster.gke.io/v1 kind: AWSManagementService metadata: name: management spec: version: aws-1.14.1-gke.0 proxy: PROXY_JSON_FILE securityGroupIDs: - SECURITY_GROUP_ID ...
以下のように置き換えます。
- PROXY_JSON_FILE は、プロキシの JSON 構成の相対パスに置き換えます。
- SECURITY_GROUP_ID は、プロキシ サーバーへのアクセス権を持つセキュリティ グループの ID に置き換えます。
ファイルを保存します。
anthos-gke aws management init
を実行して、追加構成のanthos-gke.status.yaml
ファイルを生成します。init
コマンドは、anthos-gke.yaml
ファイル内のAWSManagementService
オブジェクトも検証します。anthos-gke aws management init
anthos-gke aws management apply
を実行して AWS の管理サービスを更新します。anthos-gke aws management apply
次に、ユーザー クラスタを作成します。
AWSCluster
とAWSNodePool
のspec.controlPlane.securityGroupIDs
とspec.securityGroupIDs
に、それぞれプロキシのセキュリティ グループを含めます。これで、クラスタはプロキシにアクセスできます。
構成リファレンス
項目 | 説明 | 例 | 必須 |
---|---|---|---|
httpProxy |
プロキシ サーバーの URL。この値には、ホスト名 / IP アドレスと、必要に応じてポート、ユーザー名、パスワードを含める必要があります。 | "http://user:password@10.184.37.42:80" |
○ |
httpsProxy |
暗号化された HTTPS トラフィックのプロキシ URL。httpsProxy が指定されていない場合は、httpProxy URL が使用されます。 |
"http://user:password@10.101.16.31:80" |
× |
noProxy |
プロキシから除外する URL のカンマ区切りのリスト。それぞれの値は、IP アドレス、CIDR 範囲、ドメイン名、またはアスタリスク文字(* )です。先頭のドット(例: 「.google.com」)で指定されているドメインは、サブドメインが必要であることを示しています。アスタリスク * 1 文字だけのものは、プロキシが不要なことを示します。 |
"1.2.3.4,10.0.0.0/16,example.com,.site.com" |
× |
次のステップ
AWS 上の Anthos クラスタのインストール方法の詳細については、以下をご覧ください。
専用の AWS VPC を作成する必要がある場合は、マネージド サービスのインストールをご覧ください。
既存の AWS VPC がある場合は、既存のインフラストラクチャとの統合をご覧ください。
クラスタのプロキシ設定の変更については、以下をご覧ください。