Application Gateway for ContainersのIstio連携がGAに:Azure Networking更新の影響と確認ポイント

2026年5月28日のAzure Networking更新で、Application Gateway for ContainersのIstioサービスメッシュ連携が一般提供(GA)になりました。結論から言うと、AKSなどのKubernetes上でIstioサービスメッシュを使っている環境では、外部からメッシュ内サービスへ入る南北トラフィックを、Application Gateway for Containers経由でより扱いやすく、安全に構成しやすくなります。

特に重要なのは、Application Gateway for ContainersとIstioメッシュ内サービス間のmTLS接続や証明書ライフサイクル管理を、ALB Controller Service Mesh Extensionで自動化できる点です。これまでIngress側でmTLSを個別に構成していた環境では、証明書ローテーションや設定重複の運用負荷を下げられる可能性があります。一方で、Gateway APIの利用が前提で、Ingress APIやIstio Ambient modeは対象外です。導入前に、Istioのバージョン、namespaceラベル、Gateway/HTTPRouteの設計を必ず確認しましょう。Azure Updatesではこの機能がApplication Gatewayの一般提供機能として掲載されており、Azureの「Launched」は実稼働対応として提供されるステータスです。(Microsoft Azure)

目次

Azure Networkingの更新で何が変わったのか

今回の更新は、Application Gateway for ContainersをIstioサービスメッシュの入口として使いやすくするものです。

Application Gateway for Containersは、Kubernetesクラスターで動作するワークロード向けのレイヤー7負荷分散と動的トラフィック管理を担うAzureのサービスです。AKSのIngress/ Gateway設計で使われ、HTTP/HTTPSルーティング、mTLS、gRPC、WAF、WebSocketなどの機能をサポートします。(Microsoft Learn)

Istioのようなサービスメッシュは、主にサービス間の東西トラフィックを扱い、セキュリティ目的でmTLSを使うことが多い仕組みです。外部からメッシュ内サービスへ入る南北トラフィックでは、入口となるゲートウェイの構成が必要になります。Microsoft Learnでは、Application Gateway for Containersがサービスメッシュ拡張機能を提供し、証明書ライフサイクル管理の自動化と構成複雑性の軽減を目的としていると説明されています。(Microsoft Learn)

変更点これまで起きやすかった課題GA後に期待できる効果
Istioサービスメッシュ連携がGAプレビュー機能としての採用判断が難しい本番導入の検討対象にしやすい
mTLS接続の自動化Ingress側でmTLS設定が重複しやすいApplication Gateway for Containersとメッシュ内サービス間の保護を標準化しやすい
証明書ライフサイクル管理の自動化証明書ローテーション時の手作業や設定漏れが発生しやすい運用負荷と人的ミスを減らしやすい
ALB Controller Service Mesh Extensionを利用コントローラー、証明書、Istio設定の責務が分散しやすい拡張機能によりIstio連携の構成を整理しやすい
Gateway APIが前提Ingress API中心の既存構成ではそのまま使えないGateway APIへの移行計画が必要

対象になる環境と、すぐに影響を受けにくい環境

この更新の対象は、すべてのAzure利用者ではありません。影響が大きいのは、AKSまたはKubernetes上でApplication Gateway for ContainersとIstioを組み合わせている、または組み合わせる予定があるチームです。

現在の構成影響度確認すべきこと
Application Gateway for Containersを使っていない低すぐに設定変更は不要。今後AKSの入口設計を見直す際の選択肢として確認
Application Gateway for Containersは使っているがIstioは使っていない低〜中サービスメッシュ導入予定がなければ急ぎの対応は不要
Istioサービスメッシュを使っている中外部公開経路がIstio Ingress Gatewayなのか、Application Gateway for Containersなのかを整理
Application Gateway for ContainersとIstioを併用している高ALB Controller Service Mesh Extension、Gateway API、mTLS設定を確認
Ingress API中心で構成している高この連携ではGateway APIが必要。移行方針を検討
Istio Ambient modeを使っている、または検討している高今回の連携はsidecarベースのIstioを前提としており、Ambient modeはサポート対象外

Microsoft Learnでは、ALB Controller Service Mesh Extensionを使うにはGateway APIでIngress意図を定義する必要があり、Ingress APIはサポートされないと明記されています。また、この統合はIstioのsidecarベースのサービスメッシュを前提とし、Ambient modeはサポートされません。(Microsoft Learn)

管理者が最初に確認すべきポイント

管理者は、いきなりHelm chartを入れるのではなく、まず既存環境が前提条件を満たしているかを確認しましょう。特に重要なのは、Istioの方式、Gateway APIの利用状況、ALB Controllerの導入状態です。

確認項目判断基準確認例
IstioのバージョンIstio v1.24以上かistioctl version、AKS add-onのrevision確認
Istioの方式sidecarベースかAmbient modeの場合は対象外
ALB ControllerApplication Gateway for Containersを管理できる状態かkubectl get pods -n azure-alb-system
API方式Gateway APIで設計できているかGateway、HTTPRouteリソースの有無
namespaceラベルIstio injection用ラベルが正しいかOSS IstioとAKS Istio add-onでラベルが異なる
mTLS方針メッシュ参加サービスでmTLSを強制するかPeerAuthenticationの設計
本番影響既存Ingress経路と重複しないかDNS、証明書、フロントエンドIP、ヘルスチェックを確認

Application Gateway for ContainersのIstio連携は、Istio v1.24以上をサポートします。さらに、ALB Controller Service Mesh ExtensionをIstioより先に入れた場合は、Istio導入後に拡張機能のDeploymentを再起動する必要があります。(Microsoft Learn)

ALB Controller Service Mesh Extensionの役割

今回の中心になるのが、ALB Controller Service Mesh Extensionです。

この拡張機能は、ALB Controllerとは別のHelm chartで導入します。Microsoft Learnでは、拡張機能は2つのPodで構成され、active/standby構成によりノード障害時の回復性を確保しつつ、Application Gateway for ContainersとIstio間の証明書ライフサイクル管理、メッシュ参加サービスへのmTLS構成を暗黙的に扱うと説明されています。(Microsoft Learn)

実務上は、次のように役割を分けて考えると理解しやすくなります。

コンポーネント主な役割
Application Gateway for Containers外部からのHTTP/HTTPSトラフィックを受け、Kubernetes内のバックエンドへルーティング
ALB ControllerKubernetesのGateway APIリソースを監視し、Azure側のApplication Gateway for Containersリソースへ反映
ALB Controller Service Mesh ExtensionIstioメッシュとの連携、mTLS構成、証明書ライフサイクル管理を支援
Istio sidecarサービス間通信の制御、mTLS、可観測性、トラフィック制御を担当
Gateway / HTTPRoute入口、リスナー、ルーティング先を宣言的に定義

この構成では、Application Gateway for Containersを「メッシュの外側にある入口」、Istioを「メッシュ内部の通信制御」として分離できます。これにより、外部公開の制御をAzure Networking側に寄せつつ、サービス間通信のセキュリティや可観測性はIstioに任せる設計が取りやすくなります。

開発者が確認すべき設定

開発者やプラットフォームエンジニアが注意すべきなのは、アプリケーションコードよりもKubernetesリソースの設計です。今回の機能は、アプリに直接SDKを組み込むものではありません。Gateway API、HTTPRoute、namespaceラベル、IstioのPeerAuthenticationが主な確認対象です。

namespaceラベルの違いに注意する

Istioのsidecar injectionを有効化するラベルは、利用しているIstioの種類によって異なります。

オープンソースIstioでは、一般的に次のようなラベルを使います。

apiVersion: v1
kind: Namespace
metadata:
  name: app-prod
  labels:
    istio-injection: enabled

一方、AKSのIstio add-onでは、インストールされたIstio revisionに対応するistio.io/revラベルを使います。Microsoft Learnの例では、asm-1-27のようなrevisionが示されています。(Microsoft Learn)

apiVersion: v1
kind: Namespace
metadata:
  name: app-prod
  labels:
    istio.io/rev: asm-1-27

ここを間違えると、Podにsidecarが注入されず、mTLS前提の通信が成立しない可能性があります。特に、開発環境ではオープンソースIstio、本番環境ではAKS Istio add-onというように環境差がある場合は、マニフェストをそのまま流用しないでください。

mTLSを強制する範囲を明確にする

メッシュ内サービスでmTLSを強制する場合、IstioのPeerAuthenticationを使います。Microsoft Learnの例では、対象namespaceでmode: STRICTを指定しています。(Microsoft Learn)

apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
  namespace: app-prod
spec:
  mtls:
    mode: STRICT

注意点は、mTLSを強制する範囲です。namespace全体に適用すると、そのnamespace内のサービスはmTLS前提になります。まだsidecar化できていないPod、外部監視ツール、古いジョブが同じnamespaceにいると通信失敗の原因になります。

本番導入では、まず次の順番で確認すると安全です。

| 順序 | 確認内容 | 失敗しやすいポイント |
| -: | ———————– | ———————————– |
| 1 | 対象namespaceを分ける | 既存Podを巻き込んでmTLS必須化してしまう |
| 2 | sidecar injectionを有効化 | ラベル違いでsidecarが入らない |
| 3 | テスト用HTTPRouteで疎通確認 | Gatewayは正常でもHTTPRouteがAcceptedにならない |
| 4 | PeerAuthenticationを適用 | STRICT化後に一部Podだけ通信できなくなる |
| 5 | 本番DNSや証明書を切り替え | 旧Ingress経路と新経路が並行して混乱する |

Gateway APIへの移行が必要なケース

既存環境でKubernetes Ingress APIを中心に運用している場合、今回のIstio連携をそのまま有効化できるとは限りません。ALB Controller Service Mesh ExtensionではGateway APIが必要で、Ingress APIはサポートされないためです。(Microsoft Learn)

移行時は、IngressをHTTPRouteへ機械的に置き換えるだけでは不十分です。次の観点で設計を見直しましょう。

Ingress APIで見ていた項目Gateway APIで整理する項目
host/pathベースのルーティングGatewayのlistenerとHTTPRouteのrules
TLS終端Gateway listenerのHTTPS設定
backend serviceHTTPRouteのbackendRefs
namespaceをまたぐ参照allowedRoutesやReferenceGrant
入口の所有者インフラ管理者がGateway、アプリチームがHTTPRouteを管理する分担

Gateway APIの利点は、インフラ側の入口定義とアプリ側のルーティング定義を分離しやすいことです。たとえば、プラットフォームチームがGatewayを管理し、各アプリチームが自分のnamespace内でHTTPRouteを管理する設計にすると、権限分離と変更レビューがしやすくなります。

導入手順の全体像

実際の導入では、Microsoft Learnの手順に沿って進めるのが基本です。大きな流れは、ALB Controllerの準備、Service Mesh Extensionの導入、Istio側のnamespace/mTLS設定、Gateway/HTTPRouteの作成、状態確認です。公式手順でも、Istioサービスメッシュへトラフィックをルーティングするために、namespace定義、mTLS有効化、Gateway、HTTPRouteの作成が示されています。(Microsoft Learn)

ステップ作業内容管理者・開発者の注意点
1Application Gateway for ContainersとALB Controllerを用意add-onかHelmか、管理方式を決める
2ALB Controller Service Mesh Extensionを導入ALB Controllerとは別のHelm chartで導入
3拡張機能Podを確認alb-controller-istio-extensionのPodがReadyか確認
4Istio対象namespaceを定義OSS IstioかAKS add-onかでラベルを変える
5mTLS方針を設定PeerAuthenticationでSTRICT化する範囲を限定
6Gatewayを作成ALB managedかBYOかでannotationやfrontend指定が変わる
7HTTPRouteを作成backend service名、port、namespace参照を確認
8状態を確認Accepted、Programmed、ResolvedRefsを見る
9疎通と監視を確認HTTPステータス、Istio telemetry、ログ、証明書ローテーション時の挙動を確認

確認コマンドの例は次のとおりです。

kubectl get pods -n azure-alb-system
kubectl get gateway -A
kubectl get httproute -A
kubectl get peerauthentication -A

Gateway作成後は、Gatewayのstatusにアドレスが割り当てられ、AcceptedやProgrammedがTrueになっていることを確認します。HTTPRoute作成後も、ルートがAcceptedでApplication Gateway for Containers側がProgrammedになっていることを確認する流れが公式手順で示されています。(Microsoft Learn)

ALB managedとBYOのどちらを選ぶべきか

Application Gateway for Containersには、ALB ControllerにAzureリソースのライフサイクルを管理させる方式と、Azure側のリソースを事前に用意してKubernetesから参照するBYO方式があります。Microsoft Learnでは、ALB Controller管理方式とBring your own(BYO)デプロイの2つが説明されています。(Microsoft Learn)

選択肢向いているケース注意点
ALB managed検証環境、Kubernetes側で完結したい環境、プラットフォームチームが標準化したい環境Azure側のfrontend名が自動生成になる場合がある
BYO本番環境、命名規則やAzureリソース管理を厳密にしたい環境、既存の運用ルールに合わせたい環境AzureリソースとKubernetesリソースの対応管理が必要

公式手順では、ALB ControllerがAzure Resource Manager上にApplication Gateway for Containersリソースを作成する場合、frontendリソース名はfe-<8文字のランダム文字列>の形式になると説明されています。frontend名を制御したい場合はBYOデプロイ戦略を検討します。(Microsoft Learn)

本番環境では、DNS、証明書、監視、IaC、監査ログの都合でリソース名が重要になることがあります。その場合、最初からBYOを選んだ方が後の移行コストを抑えられます。

既存環境から移行する際の注意点

既にIstio Ingress Gatewayや別のIngress Controllerで外部公開している場合、Application Gateway for Containersへの切り替えは「入口の置き換え」になります。アプリケーションのコンテナは変えなくても、DNS、TLS、mTLS、ヘルスチェック、ルーティング条件が変わるため、段階的に進めるべきです。

特に失敗しやすいのは次の5つです。

失敗しやすいポイント起きる問題対策
Ingress APIのまま進めるService Mesh Extensionが前提を満たさないGateway APIへ移行する
namespaceラベルを間違えるsidecarが注入されずmTLS通信が失敗するOSS IstioとAKS add-onのラベル差分を確認
mTLS STRICT化を急ぐ一部Podやジョブが通信不能になる対象namespaceを分け、段階的に有効化
旧Ingressと新GatewayのDNSが混在どちらに通信しているか分からなくなる検証用ホスト名を用意してから本番切替
証明書ローテーションの確認を省く本番運用後に期限切れや更新失敗に気づく短期検証用証明書で更新挙動を確認

移行時は、まず検証用ホスト名でApplication Gateway for Containers経由のルートを作り、メッシュ内サービスへのmTLS通信が成立することを確認します。その後、トラフィックの一部だけを新経路へ向ける、またはメンテナンス時間帯にDNSを切り替えるなど、切り戻し可能な形で進めるのが現実的です。

セキュリティ面で見るべきポイント

今回のGAは「mTLSが使えるようになった」というだけではありません。実務では、誰が入口を管理し、どこでTLSを終端し、どの区間をmTLSで保護するかを整理することが重要です。

おすすめは、通信経路を次のように分解して確認することです。

区間主な確認点
クライアント → Application Gateway for ContainersHTTPS、証明書、WAF、許可するホスト名
Application Gateway for Containers → Istioメッシュ内サービスService Mesh ExtensionによるmTLS、対象namespace、Backend設定
サービス間通信IstioのmTLS、AuthorizationPolicy、Telemetry
運用者アクセスGateway/HTTPRouteを変更できるRBAC、Azure側の権限
監査・監視Application Gateway for Containersのログ、Istio telemetry、アラート

mTLSを導入しても、すべてのセキュリティ課題が自動で解決するわけではありません。たとえば、HTTPRouteを誰でも変更できる状態では、意図しないbackendへトラフィックを流せてしまう可能性があります。Kubernetes RBACで、Gatewayを触れるチームとHTTPRouteを触れるチームを分ける設計が有効です。

開発・運用チーム別のアクション

最後に、チームごとに次に取るべき行動を整理します。

役割すぐ確認すること次のアクション
Azure管理者Application Gateway for Containersの利用有無、リージョン、ALB管理方式BYOかALB managedかを決め、IaC管理方針を整理
AKS管理者Istioの方式、version、ALB Controllerの状態Service Mesh Extension導入の検証環境を用意
アプリ開発者Service、port、HTTPRouteのbackendRefsIngress定義をHTTPRouteへ移行できるか確認
セキュリティ担当mTLS範囲、証明書、WAF、権限分離namespace単位のmTLS強制範囲とRBACをレビュー
SRE/運用担当監視、ログ、切り戻し手順Accepted/Programmed状態、5xx、レイテンシを監視対象に追加

今回の「Application Gateway for Containers – Service Mesh integration with Istio」のGAは、Istioメッシュを使うAKS環境にとって、外部公開とmTLS運用を整理する良いタイミングです。まずは既存のIngress経路、Istio方式、namespaceラベル、Gateway API対応状況を棚卸ししてください。そのうえで、検証環境にALB Controller Service Mesh Extensionを入れ、Gateway/HTTPRouteとmTLSの動作を確認するのが最初の一歩です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次