AKS の Static Egress Gateway は、AKS ワークロードからの送信トラフィックに対して固定のソース IP アドレスを構成する合理化されたソリューションを提供します。 この機能を使用すると、専用の "ゲートウェイ ノード プール" を経由するようエグレス トラフィックをルーティングできます。 Static Egress Gateway を使用すると、送信 IP アドレスを効率的に管理および制御でき、AKS ワークロードは、定義済みの IP を使って外部システムと安全性と整合性を保って通信できるようになります。
この記事では、AKS クラスターに Static Egress Gateway ノード プールを設定する手順について説明します。これにより、Kubernetes ワークロードからの送信トラフィック用に指定されたソース IP アドレスを構成できます。
重要
AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は、運用環境での使用を意図していません。 詳細については、次のサポート記事を参照してください。
制限と考慮事項
Static Egress Gateway は、Azure CNI ポッド サブネットを持つクラスターではサポートされていません。
Kubernetes ネットワーク ポリシーは、ゲートウェイ ノード プールを経由してクラスターから送信されるトラフィックには適用されません。
- これは、クラスター トラフィック コントロールには影響しません。ゲートウェイ ノード プールにルーティングされる注釈付きポッドからのエグレス トラフィックのみが影響を受けるためです。
ゲートウェイ ノード プールは汎用ワークロード用ではありません。エグレス トラフィックにのみ使用する必要があります。
Windows ノード プールは、ゲートウェイ ノード プールとして使用できません。
hostNetwork ポッドは、ゲートウェイ ノード プールを使用するために注釈付けすることはできません。
ポッドは、ゲートウェイ ノード プールが
StaticGatewayConfiguration
リソースと同じ名前空間にある場合にのみ使用できます。
開始する前に
- Azure CLI を使用する場合は、
aks-preview
拡張機能が必要です。 「aks-preview
Azure CLI 拡張機能をインストールする」を参照してください。
aks-preview
Azure CLI 拡張機能をインストールする
aks-preview
コマンドを使用してaz extension add
拡張機能をインストールします。az extension add --name aks-preview
az extension update
コマンドを使って拡張機能の最新バージョンに更新します。az extension update --name aks-preview
StaticEgressGatewayPreview
機能フラグを登録する
StaticEgressGatewayPreview
コマンドを使用して、az feature register
機能フラグを登録します。az feature register --namespace "Microsoft.ContainerService" --name "StaticEgressGatewayPreview"
状態が [登録済み] と表示されるまでに数分かかります。
az feature show
コマンドを使用して、登録の状態を確認します。az feature show --namespace "Microsoft.ContainerService" --name "StaticEgressGatewayPreview"
状態が Registered と表示されたら、 コマンドを使用して
az provider register
リソース プロバイダーの登録を最新の情報に更新します。az provider register --namespace Microsoft.ContainerService
Static Egress Gateway を使用して AKS クラスターを作成または更新する
ゲートウェイ ノード プールを作成して管理する前に、AKS クラスターに対して Static Egress Gateway 機能を有効にする必要があります。 これは、新しいクラスターを作成するときか、または az aks update
を使用して既存のクラスターを更新して実行できます。
az aks create -n <cluster-name> -g <resource-group> --enable-static-egress-gateway
Gateway Node プールを作成する
機能を有効にしたら、専用ゲートウェイ ノード プールを作成します。 このノード プールは、指定されたパブリック IP プレフィックスを介してエグレス トラフィックを処理します。
--gateway-prefix-size
は、ゲートウェイ ノード プール ノードに適用されるパブリック IP プレフィックスのサイズです。 指定できる範囲は 28
-31
です。
az aks nodepool add --cluster-name <cluster-name> \
--name <nodepool-name> \
--resource-group <resource-group> \
--mode gateway \
--node-count <number-of-nodes> \
--gateway-prefix-size <prefix-size>
注
- ノードの数は、選択したプレフィックス サイズで許可される容量内に収まる必要があります。 たとえば、/30 プレフィックスでは最大 4 つのノードがサポートされ、高可用性を実現するには少なくとも 2 つのノードが必要です。 ノード数は動的に調整できないため、プレフィックス サイズによって設定される固定の制限に従ってノードを計画してください。
-
--vm-size
パラメーターを使用して、ゲートウェイ ノード プールで使用する VM の SKU を定義できます。 適切なパフォーマンスやコスト バランスを確保するために、固有のニーズを把握し、それに応じて計画する必要があります。
Gateway Node プールのスケーリング (省略可能)
必要に応じて、プレフィックス サイズで定義される制限内でゲートウェイ ノード プールのサイズを変更できますが、自動スケーリングはサポートされていません。
az aks nodepool scale --cluster-name <cluster-name> -n <nodepool-name> --node-count <desired-node-count>
Static Gateway 構成を作成する
StaticGatewayConfiguration
カスタム リソースを作成して、ゲートウェイ構成を定義します。 この構成では、使用するノード プールとパブリック IP プレフィックスを指定します。
apiVersion: egressgateway.kubernetes.azure.com/v1alpha1
kind: StaticGatewayConfiguration
metadata:
name: <gateway-config-name>
namespace: <namespace>
spec:
gatewayNodepoolName: <nodepool-name>
excludeCidrs: # Optional
- 10.0.0.0/8
- 172.16.0.0/12
- 169.254.169.254/32
publicIpPrefixId: /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Network/publicIPPrefixes/<prefix-name> # Optional
ヒント
publicIpPrefixId
を設定しない場合は、パブリック IP プレフィックスが自動的に作成されます。
kubectl describe StaticGatewayConfiguration <gateway-config-name> -n <namespace>
を実行すると、状態に "エグレス IP プレフィックス" が表示されます。 これは、新しく作成されたパブリック IP プレフィックスです。
publicIpPrefixId
引数でリソース ID を指定することで、既存のパブリック IP プレフィックスを使用することもできます。 この場合、AKS クラスターの ID に "ネットワーク共同作成者" ロールを付与する必要があります。
ゲートウェイ構成を使用するようにポッドに注釈を付ける
特定のポッドからのトラフィックをゲートウェイ ノード プールを経由するようにルーティングするには、デプロイ構成でポッド テンプレートに注釈を付けます。
apiVersion: apps/v1
kind: Deployment
metadata:
name: <deployment-name>
namespace: <namespace>
spec:
template:
metadata:
annotations:
kubernetes.azure.com/static-gateway-configuration: <gateway-config-name>
注
各ノード上の CNI プラグインにより、選択されたゲートウェイ ノードプールを介してトラフィックをルーティングするようにポッドが自動的に構成されます。
ゲートウェイ構成の監視と管理
デプロイが完了したら、AKS クラスターを使用してゲートウェイ構成の状態を監視できます。
StaticGatewayConfiguration
リソースの状態セクションが、割り当てられた IP や WireGuard 構成などの詳細で更新されます。
Gateway Node プールの削除 (省略可能)
ゲートウェイ ノード プールを削除するには、削除する前に、関連付けられているすべての構成が適切に処理されていることを確認します。
az aks nodepool delete --cluster-name <cluster-name> -n <nodepool-name>
Static Egress Gateway 機能を無効にする (省略可能)
Static Egress Gateway が不要になった場合は、機能を無効にして演算子をアンインストールできます。 まず、すべてのゲートウェイ ノード プールが削除されていることを確認します。
az aks update -n <cluster-name> -g <resource-group> --disable-static-egress-gateway
以上の手順に従うことで、AKS クラスターで Static Egress Gateway 構成を効率的に設定および管理し、ワークロードからの制御された一貫性のあるエグレス トラフィックを実現できます。
次のステップ
Azure Kubernetes Service