次の方法で共有


Azure Kubernetes Service (AKS) での HTTP プロキシのサポート

この記事では、送信インターネット アクセスに HTTP プロキシを使用するように Azure Kubernetes Service (AKS) クラスターを構成する方法について説明します。

マネージド仮想ネットワークまたはカスタム仮想ネットワークにデプロイされた AKS クラスターには、適切に機能するために必要な特定の送信依存関係があり、HTTP プロキシ経由でインターネット アクセスをルーティングする必要がある環境で問題が発生しました。 ノードには、インターネット サービスにアクセスするために必要な構成、環境変数、および証明書をブートストラップする方法がありませんでした。

HTTP プロキシ機能により、AKS クラスターに HTTP プロキシのサポートが追加され、プロキシに依存する環境で AKS に必要なネットワーク トラフィックをセキュリティで保護するために使用できる簡単なインターフェイスが公開されます。 この機能により、AKS ノードとポッドの両方が HTTP プロキシを使用するように構成されます。 また、この機能により、クラスターのブートストラップの一環として、信頼された証明機関をノードにインストールすることもできます。 より複雑ソリューションでは、ネットワーク全体でセキュリティで保護された通信を確立するために、信頼チェーンを作成することが必要になる場合があります。

制限と考慮事項

次のシナリオはサポートされて いません

  • ノード プールごとに異なるプロキシ構成
  • ユーザーとパスワードの認証
  • API サーバー通信用のカスタム証明機関 (CA)
  • Windows ノード プールを含む AKS クラスター
  • 仮想マシン可用性セット (VMAS) を使用したノード プール
  • noProxy のドメイン サフィックスにアタッチされたワイルドカードとして * を使用する

httpProxyhttpsProxytrustedCa には、既定では値がありません。 ポッドには、次の環境変数が挿入されます。

  • HTTP_PROXY
  • http_proxy
  • HTTPS_PROXY
  • https_proxy
  • NO_PROXY
  • no_proxy

プロキシ環境変数の挿入を無効にするには、"kubernetes.azure.com/no-http-proxy-vars":"true" を使用してポッドに注釈を付ける必要があります。

開始する前に

az aks create コマンドを使用し、構成を JSON ファイルとして渡すことで、クラスターの作成時に HTTP プロキシを使用して AKS クラスターを構成できます。

  1. ファイルを作成し、httpProxyhttpsProxynoProxy の値を指定します。 ご自分の環境で必要な場合は、trustedCa の値を指定します。

構成ファイルのスキーマは次のようになります。

{
  "httpProxy": "string",
  "httpsProxy": "string",
  "noProxy": [
    "string"
  ],
  "trustedCa": "string"
}

各パラメーターの要件を確認します。

  • httpProxy: クラスターの外部で HTTP 接続を作成するために使用するプロキシ URL。 URL スキームは http である必要があります。
  • httpsProxy: クラスターの外部で HTTPS 接続を作成するために使用するプロキシ URL。 指定しない場合、httpProxy が HTTP と HTTPS の両方の接続に使用されます。
  • noProxy: プロキシを除外する宛先ドメイン名、ドメイン、IP アドレス、または他のネットワーク CIDR の一覧。
  • trustedCa: base64 encoded 代替 CA 証明書の内容を含む文字列。 現在は、PEM 形式のみがサポートされています。

重要

Kubernetes システムの一部である Go ベースのコンポーネントとの互換性のために、証明書では、非推奨の共通名証明書ではなく、 がサポートされているSubject Alternative Names(SANs)

環境変数 http_proxyhttps_proxyno_proxy に準拠する方法は、アプリケーションによって異なります。 Curl と Python では no_proxy で CIDR がサポートされていませんが、Ruby ではサポートされています。

入力例:

{
  "httpProxy": "http://myproxy.server.com:8080/", 
  "httpsProxy": "https://myproxy.server.com:8080/", 
  "noProxy": [
    "localhost",
    "127.0.0.1"
  ],
  "trustedCA": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUgvVENDQmVXZ0F3SUJB...b3Rpbk15RGszaWFyCkYxMFlscWNPbWVYMXVGbUtiZGkvWG9yR2xrQ29NRjNURHg4cm1wOURCaUIvCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0="
}
  1. az aks create コマンドを使用して、作成したファイルに--http-proxy-config パラメーターを設定してクラスターを作成します。
az aks create \
    --name $clusterName \
    --resource-group $resourceGroup \
    --http-proxy-config aks-proxy-config.json \
    --generate-ssh-keys

クラスターは、ノードに構成されている HTTP プロキシを使用して初期化する必要があります。

HTTP プロキシ構成を有効または更新するようにクラスターを更新する

Note

新しいプロキシに切り替える場合、更新を成功させるには、新しいプロキシが既に存在している必要があります。 アップグレードが完了すると、古いプロキシを削除できます。

az aks update コマンドを使用して、既存のクラスターで HTTP プロキシ構成を有効または更新できます。 --http-proxy-config パラメーターは、必要に応じて、httpProxyhttpsProxynoProxy、およびtrustedCaの値が更新された新しい JSON ファイルに設定する必要があります。 更新プログラムは、新しい httpProxyhttpsProxy、または noProxy 値を持つポッドに新しい環境変数を挿入します。

注意事項

az aks update コマンドを使用してクラスターのプロキシ構成を更新すると、AKS によってクラスター内のすべてのノード プールが自動的に再イメージ化されます。 ポッド中断バジェット (PDB)を使用して、再イメージ化中に重要なポッドの中断を防ぐことができます。

たとえば、aks-proxy-config-2.json という名前の新しい CA 証明書の base64 でエンコードされた文字列を含む新しいファイルを作成したとします。 次のコマンドを使用して、クラスターのプロキシ構成を更新できます。

az aks update --name $clusterName --resource-group $resourceGroup --http-proxy-config aks-proxy-config-2.json

アドオン構成の監視

監視アドオンを使用する HTTP プロキシでは、次の構成がサポートされます。

  • 認証なしの送信プロキシ
  • ユーザー名とパスワードの認証を使用した送信プロキシ
  • Log Analytics エンドポイント用の信頼された証明書を使用した送信プロキシ

次の構成はサポートされていません。

  • 信頼された証明書でプロキシを使用する場合のカスタム メトリックと推奨アラート機能

次のステップ

AKS クラスターのネットワーク要件に関する詳細については、「AKS でクラスター ノードに対するエグレス トラフィックを制御する」を参照してください。