HTTP プロキシを使用する

このドキュメントでは、HTTP/HTTPS プロキシ経由で GKE on Azure からトラフィックを転送する方法について説明します。クラスタ作成時にプロキシ構成を指定します。

概要

GKE on Azure は、次の理由で、プロキシを介してアウトバウンド インターネット トラフィックを転送できます。

  • Connect を介して Google Cloud にクラスタを登録するため
  • Connect エージェントを実行するため
  • Container Registry からイメージをダウンロードするため

制限事項

  • httpProxy フィールドと httpsProxy フィールドでは、https:// で始まる URL がサポートされません。http:// を使用する必要があります。ポート 443 へのリクエストでは HTTPS を使用します。
  • httpProxyhttpsProxynoProxy の値を設定する必要があります。
  • クラスタのプロキシ構成(リソース グループ ID とシークレット ID)は不変です。これらの値を更新するには、新しいクラスタとノードプールを作成する必要があります。
  • noProxy フィールドにドメイン、IP、CIDR を追加することが必要な場合があります。クラスタのコントロール プレーン サブネット CIDR を追加することをおすすめします(Pod アドレス CIDR と Service アドレス CIDR はデフォルトで追加されます)。

前提条件

このセクションでは、プロキシを使用する前に適用する必要がある前提条件について説明します。

Azure Key Vault の構成

GKE on Azure は、Azure Key Vault にプロキシ構成情報を保存します。GKE on Azure でプロキシを構成するには、Key Vault でシークレットを作成する権限が必要です。Key Vault は、クラスタの VNet からアクセスできる必要があります。

プロキシの許可リスト

GKE on Azure で Google Cloud サービスに接続するには、プロキシ サーバーで特定の Google ドメインと Microsoft ドメインへのトラフィックを許可する必要があります。

.azure.com
.gcr.io
cloudresourcemanager.googleapis.com
container.googleapis.com
gkeconnect.googleapis.com
gkehub.googleapis.com
oauth2.googleapis.com
securetoken.googleapis.com
storage.googleapis.com
sts.googleapis.com
www.googleapis.com
servicecontrol.googleapis.com
logging.googleapis.com
monitoring.googleapis.com
opsconfigmonitoring.googleapis.com
GCP_LOCATION-gkemulticloud.googleapis.com

GCP_LOCATION は、GKE Enterprise クラスタが存在する Google Cloud リージョンに置き換えます。us-west1 または別のサポート対象リージョンを指定します。

サブネットのネットワーク セキュリティ グループの要件

ネットワーク セキュリティ グループ(NSG)を使用してサブネットへのトラフィックを管理している場合は、NSG ルールで次の宛先への送信 TCP トラフィックを許可する必要があります。

  • AzureCloud: TCP、ポート 80 と 443

NSG でサービスタグを使用する方法については、Azure サービスタグをご覧ください。

プロキシ構成ファイルを作成する

プロキシ構成は、Azure Key Vault シークレットに JSON 文字列として保存されます。この構成は、ファイルとして az コマンドライン ツールに渡すことができます。このセクションでは、そのファイルを作成する方法について説明します。

次の表で、このファイルの内容について説明します。

フィールド 説明 必須
httpProxy プロキシ サーバーの URL。この値には、ホスト名 / IP アドレスと、必要に応じてポート、ユーザー名、パスワードを含める必要があります。 "http://user:password@10.184.37.42:80"
"10.184.37.42"
はい
httpsProxy 暗号化された HTTPS トラフィックのプロキシ URL。httpsProxy の値が空の場合、httpProxy URL が使用されます。 "http://10.101.16.31:80" はい
noProxy プロキシから除外する URL のカンマ区切りのリスト。それぞれの値は、IP アドレス、CIDR 範囲、ドメイン名、またはアスタリスク文字(*)です。先頭のドット(例: 「.google.com」)で指定されているドメインは、サブドメインが必要であることを示しています。単一のアスタリスク(*)は、すべてのプロキシ構成を無視します。 "1.2.3.4,10.0.0.0/16,example.com,.site.com" はい
  1. 構成ファイルを作成するには、httpProxy キー、noProxy キー、およびオプションの httpsProxy キーの値を含む JSON ファイルを作成します。

    {
      "httpProxy": "AUTHENTICATION_URL",
      "httpsProxy": "AUTHENTICATION_URL",
      "noProxy": "NO_PROXY_ADDRESSES"
    }
    

    次のように置き換えます。

    • AUTHENTICATION_URL: プロキシのユーザー名とパスワードを含むエンコードされた URL
    • NO_PROXY_ADDRESSES: CIDR ブロックと URL のカンマ区切りのリスト(例: 10.0.0.0/16,http://example.com

    次のセクションで使用するためにファイルを保存します。

  2. az コマンドライン ツールを使用して、この JSON データを含むシークレットを、Azure Key Vault にシークレットとして作成します。

    az keyvault secret set --name SECRET_NAME \
    --vault-name KEY_VAULT_NAME \
    --file PROXY_CONFIGURATION_FILE
    

    次のように置き換えます。

    • SECRET_NAME: 新しいシークレットの名前
    • KEY_VAULT_NAME: Key Vault の名前
    • PROXY_CONFIGURATION_FILE: プロキシ構成ファイルのパス。

      出力にはシークレットの名前とコンテンツが含まれます。これで、クラスタを作成するときにこのシークレットを参照できるようになりました。

プロキシを使用するクラスタを作成する

アウトバウンド接続に HTTP プロキシを使用するように GKE on Azure を構成するには、次の手順を行います。

クラスタとノードプールを作成するの手順に沿って、--proxy-resource-group-id フラグと --proxy-secret-id フラグを渡します。

gcloud container azure clusters create CLUSTER_NAME \
  --proxy-resource-group-id=PROXY_RESOURCE_GROUP_ID \
  --proxy-secret-id=PROXY_SECRET_ID
    ...

次のように置き換えます。

  • CLUSTER_NAME: クラスタの名前
  • PROXY_RESOURCE_GROUP_ID: クラスタをホストするリソース グループ
  • PROXY_SECRET_ID: プロキシ構成を含むシークレットの ID(例: https://VAULT_NAME.vault.azure.net/secrets/SECRET_NAME/SECRET_VERSION

次のステップ