🧪

AKS で AGIC アドオンを有効化する手順と注意点【Azure CNI Overlay編】

に公開

はじめに

プレビュー機能ではありますが、近頃、Azure CNI Overlay を使用する AKS でも、AGIC の利用がサポートされるようになりました。
そこで、実際に AKS で AGIC アドオンを有効化してみましたが、公式ドキュメントに記載の手順だけでは有効化できなかったため、有効化手順についてご紹介させていただきます。

プレビュー機能の注意点

プレビュー機能は、今後動作が変更される場合や、機能自体が廃止される可能性があるため、運用環境での利用は推奨されていません。
当該機能がプレビュー機能として提供されているか、あるいは一般提供 (GA) されたかについては、以下のリンクよりご確認いただけます。

なお、当該機能が一般提供 (GA) された場合は、AKS のロードマップ上で、「Public Preview」から「Generally Available」に移動されますので、そこで判断ができます。

https://github.com/orgs/Azure/projects/685/views/1
https://github.com/Azure/AKS/issues/4681

用語解説

Azure CNI Overlayとは、従来の kubenet に置き換わる AKS の Pod のネットワークモデルです。kubenet は 2028 年に廃止が予定されています。

グリーンフィールドデプロイとは、新しく環境を作成すること。
ブラウンフィールドデプロイとは、既存のリソースを活用して環境を作成すること。

前提条件

  • 動作確認日時: 2025/06/24
  • 動作確認した環境: Kubernetes バージョン 1.31.8 の AKS クラスター
  • コマンド実行環境: Azure Cloud Shell

必要な準備

  1. AKS を起動する。
  2. Azure CLI を最新バージョンにしておく。
Azure CLI のバージョンを更新するコマンド
az upgrade

AGIC アドオンの有効化手順について 【Azure CNI Overlay編】

  1. Azure CLI で機能フラグ 「AppGatewayWithOverlayPreview」 を有効化します。
az feature register --namespace "Microsoft.ContainerService" --name AppGatewayWithOverlayPreview
  1. Azure CNI Overlay を使用する AKS を作成します。
az aks create -n "AKS の名称" -g "リソースグループの名称" --network-plugin azure --network-plugin-mode overlay --generate-ssh-keys
  1. 既存の AKS で、AKS カスタムヘッダーを使用して、AGIC アドオンを有効化します。
AGIC アドオンの有効化時に、Application Gateway を作成する場合
az aks enable-addons -n "AKS の名称" -g "リソースグループの名称" \
-a ingress-appgw \
--appgw-name "作成する AppGW の名称" \
--appgw-subnet-cidr "AppGW のデプロイ先のサブネットの IP アドレス範囲" \
--aks-custom-headers AKSHTTPCustomFeatures=Microsoft.ContainerService/AppGatewayWithOverlayPreview
既存の Application Gateway を指定する場合
az aks enable-addons -n "AKS の名称" -g "リソースグループの名称" \
-a ingress-appgw \
--appgw-name "既存の AppGW の名称" \
--appgw-subnet-id "AppGW のデプロイ先のサブネットのリソース ID" \
--aks-custom-headers AKSHTTPCustomFeatures=Microsoft.ContainerService/AppGatewayWithOverlayPreview
  1. AKS で AGIC アドオンが有効化されていることを確認する。
az aks show -n "AKS の名称" -g "リソースグループの名称"

addonProfiles > ingressApplicationGateway > "enabled": true" となっていれば、問題なし。

  "addonProfiles": {
    "ingressApplicationGateway": {
      "config": {
        "applicationGatewayName": "***",
        "effectiveApplicationGatewayId": "***",
        "subnetId": "***"
      },
      "enabled": true, #こちらの部分で確認が可能です。

よくあるトラブルと対処方法

  • 事象: グリーンフィールドデプロイ時 (AKS の作成時) に、AGIC アドオンを有効化できない。
出力されているエラー
(BadRequest) Parameter aksHTTPCustomFeatures is not allowed.
Code: BadRequest
Message: Parameter aksHTTPCustomFeatures is not allowed.
  • 原因: 動作確認しましたが、グリーンフィールドデプロイ時は、Azure CNI Overlay を使用する AKS では、AGIC アドオンを有効化できないようです。
  • 対処方法: ブラウンフィールドデプロイにて AGIC アドオンを有効化する。
    つまり、上述の手順どおり、AKS を作成した後、az aks enable-addons コマンドで AGIC アドオンを有効化します。
動作確認したコマンド
AKS の作成時に、Application Gateway を作成するパターン
az aks create -n "AKS の名称" -g "リソースグループの名称" \
--network-plugin azure \
--network-plugin-mode overlay \
-a ingress-appgw \
--appgw-name "作成する AppGW の名称" \
--appgw-subnet-cidr "AppGW のデプロイ先のサブネットの IP アドレス範囲" \
--aks-custom-headers AKSHTTPCustomFeatures=Microsoft.ContainerService/AppGatewayWithOverlayPreview \
--generate-ssh-keys
AKS の作成時に、既存の Application Gateway を指定するパターン
az aks create -n "AKS の名称" -g "リソースグループの名称" \
--network-plugin azure \
--network-plugin-mode overlay \
-a ingress-appgw \
--appgw-name "既存の AppGW の名称" \
--appgw-subnet-id "AppGW のデプロイ先のサブネットのリソース ID" \
--aks-custom-headers AKSHTTPCustomFeatures=Microsoft.ContainerService/AppGatewayWithOverlayPreview \
--generate-ssh-keys

IaC を利用する場合の注意点

以下の GitHub Issues によると、AKS カスタムヘッダーを使用して有効化された機能は、ARM テンプレートや Bicep などの IaC を使用して有効化できません。
そのため、Azure CLI を使用して、AGIC アドオンを有効化する必要があります。

https://github.com/Azure/AKS/issues/3940

その他の参考リンク

https://learn.microsoft.com/ja-jp/azure/application-gateway/tutorial-ingress-controller-add-on-new
https://learn.microsoft.com/ja-jp/azure/application-gateway/tutorial-ingress-controller-add-on-existing

まとめ

この記事では、Azure CNI Overlay を使用する AKS で AGIC アドオンを有効化する方法について、ご紹介いたしました。

おわりに

もし、少しでもこの記事がお役に立てましたら、ぜひ "いいね" をお願いします。
また、今後も、AKS 関連の記事を書いていきますので、Zenn と X のフォローをどうぞよろしくお願いいたします。

Discussion