AKS & Container Networking参照資料確認: 2026-09-11

Application Gateway for Containers

Application Gateway for ContainersをAKS外のAzure-managed L7 data planeとALB Controller/Kubernetes Gateway APIのcontrol planeに分離して設計する。

この記事の目次

Application Gateway for Containersを理解するための前提

AKS networkingは変化が速いため、旧方式とcurrent recommendationを区別して記載しています。実装直前には下記Microsoft Learnのcurrent constraints / region / version supportを再確認してください。

Application Gateway for ContainersはKubernetes workload向けmanaged Layer 7 load balancing / ingress serviceで、Azureがcluster外のunderlying data planeを運用する。 HTTP、HTTPS、gRPCに加えcurrent offeringではAI inference trafficにも対応する。protocol/feature要件はcurrent support matrixで確認する。

ALB ControllerはKubernetesのGateway API / Ingress API configurationをApplication Gateway for Containersのload balancing rulesへ変換する。 platform teamはshared ingress infrastructureを提供し、application teamはKubernetes-native route resourceでtraffic intentを定義する責任分界が取りやすい。

Gateway APIはGatewayClass/Gateway/HTTPRoute等でinfrastructure ownerとroute ownerを分離しやすく、長期的なAKS ingress designの中心になっている。 ingress成功だけでなくbackend endpoint health、TLS/SNI/host/path、source identity、NetworkPolicy、private backend reachabilityをpacket pathで確認する。

通信経路と責任境界

調査原則: Kubernetes objectが正しいことはAzure data pathの正常性を保証せず、Azure resourceがHealthyであることもpod-to-pod/pod-to-serviceの成功を保証しません。source・destination・protocol・port・時刻を固定して両layerを照合します。

アドレスと識別情報の考え方

Address / identityWhere it lives運用上の意味
Frontendclient-facing IP/FQDN/TLS identityDNS/certificate/host/SNIと紐付ける。
Gateway/RouteKubernetes-native intentplatform-owned Gatewayとapp-owned Routeの権限分界を定義。
Servicestable backend abstractionselector/port/EndpointSliceがactual backendを決める。
Pod endpointactual application destinationreadiness/NetworkPolicy/backend TLSをend-to-endで確認。
重要: IPアドレスそのものとworkload/service identityを混同しません。autoscale・reschedule・SNAT・load balancingでaddressは変化するため、Kubernetes metadataとAzure resource identityを合わせて記録します。

設計判断

判断軸確認する問い設計として固定すること
API modelIngress APIかGateway APIか新規設計はGateway APIを優先しrole-oriented ownershipを活用。
Exposurepublic/private ingressかfrontend/network association/DNS/certificateをenvironmentごとに分離。
TLStermination/re-encryption/backend TLS requirementcertificate ownership/rotationとhostname validationを設計。
Shared platform複数namespace/teamで共有するかGateway ownershipとHTTPRoute attachment policyを定義。
MigrationAGIC/NGINX等から移行するかparallel endpoint + DNS cutoverでrollback可能にする。

実装・移行の順序

  1. client→host/path→Gateway/Ingress→Service→Podのdesired routeを表にする。
  2. ALB Controller identity/RBACとAzure resource ownershipをplatform boundaryとして確定する。
  3. non-prod routeを1本作り、status conditionとAzure data plane反映を確認する。
  4. TLS、host/path matching、backend health、negative routeを検証する。
  5. NetworkPolicy/NSG/UDRがAGfC data planeからbackendへの通信を阻害しないことを確認する。
  6. production移行はDNS weight/TTLまたはparallel hostnameでstageし、旧ingressを即時rollback可能に保つ。

運用で残しておく情報

観点残すべき運用証拠
Kubernetes statusGateway/HTTPRoute/IngressのAccepted/Programmed/ResolvedRefs等statusを確認。
ControllerALB Controller healthとevent/logを確認。
Azure data planefrontend/listener/routing/backend healthをAzure側で照合。
End-to-end外部clientから実host/path/TLSでrequestしbackend responseを検証。

変更前に確認する

Control state

AKS networkProfile、Kubernetes object、Azure associationをread-onlyで採取し、desired configurationを固定する。

Data plane

同じ5-tupleで実通信し、forward path・return path・source translation・policy decisionを証明する。

Observability

DNS/TCP/flow/drop/backend health等、障害点に対応するsignalを同一時刻で収集する。

Negative test

allowだけでなく、禁止すべき通信が明示的に失敗することもsecurity acceptanceへ含める。

Read-only / discovery commands
kubectl get gatewayclass,gateway -A
kubectl get httproute -A
kubectl get ingress,svc,endpointslices -A
kubectl get pods -A -o wide

Common failure modes

症状疑うboundary確認・是正
Routeが反映されないGateway/HTTPRoute status/attachment/ALB Controllerstatus conditionを先に読み、Azure resourceだけを眺めない。
502/503backend Service/Endpoint/health/TLSService→EndpointSlice→pod readiness→backend TLSを確認。
一部host/pathだけ404matching priority/hostname/pathclient Host/SNIとHTTPRoute ruleを比較。
migrationで切戻せない旧ingress即削除/DNS TTL未設計parallel runとexplicit rollback endpointを維持。

Change safety / rollback

一括変更を避ける: L7 ingress migrationはDNS、certificate、route semantics、client behaviorを同時に変えやすい。1回のcutoverで複数変数を変えず、parallel endpointで実requestを比較する。

Official sources