この記事では、送信インターネット アクセスに HTTP プロキシを使用するように Azure Kubernetes Service (AKS) クラスターを構成する方法について説明します。
マネージド仮想ネットワークまたはカスタム仮想ネットワークにデプロイされた AKS クラスターには、適切に機能するために必要な特定の送信依存関係があり、HTTP プロキシ経由でインターネット アクセスをルーティングする必要がある環境で問題が発生しました。 ノードには、インターネット サービスにアクセスするために必要な構成、環境変数、および証明書をブートストラップする方法がありませんでした。
HTTP プロキシ機能により、AKS クラスターに HTTP プロキシのサポートが追加され、プロキシに依存する環境で AKS に必要なネットワーク トラフィックをセキュリティで保護するために使用できる簡単なインターフェイスが公開されます。 この機能により、AKS ノードとポッドの両方が HTTP プロキシを使用するように構成されます。 また、この機能により、クラスターのブートストラップの一環として、信頼された証明機関をノードにインストールすることもできます。 より複雑ソリューションでは、ネットワーク全体でセキュリティで保護された通信を確立するために、信頼チェーンを作成することが必要になる場合があります。
制限と考慮事項
次のシナリオはサポートされて いません。
- ノード プールごとに異なるプロキシ構成
- ユーザーとパスワードの認証
- API サーバー通信用のカスタム証明機関 (CA)
- Windows ノード プールを含む AKS クラスター
- 仮想マシン可用性セット (VMAS) を使用したノード プール
- noProxy のドメイン サフィックスにアタッチされたワイルドカードとして * を使用する
httpProxy
、httpsProxy
、trustedCa
には、既定では値がありません。 ポッドには、次の環境変数が挿入されます。
HTTP_PROXY
http_proxy
HTTPS_PROXY
https_proxy
NO_PROXY
no_proxy
プロキシ環境変数の挿入を無効にするには、"kubernetes.azure.com/no-http-proxy-vars":"true"
を使用してポッドに注釈を付ける必要があります。
開始する前に
- 最新バージョンの Azure CLI が必要です。
az --version
を実行してバージョンを見つけ、az upgrade
を実行してバージョンをアップグレードします。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。 - 利用可能な AKS クラスターのアップグレードを確認して、最新バージョンの AKS が実行されていることを確認します。 アップグレードする必要がある場合は、「AKS クラスターのアップグレード」を参照してください。
- Azure CLI を使用して HTTP プロキシを構成する
- Azure Resource Manager (ARM) テンプレートを使用して HTTP プロキシを構成する
- 外部サービスの Istio Add-On HTTP プロキシ
az aks create
コマンドを使用し、構成を JSON ファイルとして渡すことで、クラスターの作成時に HTTP プロキシを使用して AKS クラスターを構成できます。
- ファイルを作成し、
httpProxy
、httpsProxy
、noProxy
の値を指定します。 ご自分の環境で必要な場合は、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_proxy
、https_proxy
、no_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="
}
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
パラメーターは、必要に応じて、httpProxy
、httpsProxy
、noProxy
、およびtrustedCa
の値が更新された新しい JSON ファイルに設定する必要があります。 更新プログラムは、新しい httpProxy
、httpsProxy
、または 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 でクラスター ノードに対するエグレス トラフィックを制御する」を参照してください。
Azure Kubernetes Service