AKS Egress Designを理解するための前提
AKS networkingは変化が速いため、旧方式とcurrent recommendationを区別して記載しています。実装直前には下記Microsoft Learnのcurrent constraints / region / version supportを再確認してください。
current AKSのoutboundTypeはload balancer、NAT gateway、user-defined routes、none、block(Preview)の選択肢としてMicrosoft Learnに整理されている。 loadBalancer outboundではAKSがegress用public IPとStandard Load Balancer backendを構成する。
userDefinedRoutingはadvanced scenarioで、AKSがegress pathを自動構成しない。cluster subnetへ0.0.0.0/0等のrouteを用意しFirewall/NVA/gatewayへ明示する。 noneはNetwork Isolated Cluster向けでAKSがegress pathを自動構成しない。必要な通信がある場合はBYO/custom network component側で用意する。
blockはmanaged VNetのNetwork Isolated Clusterでpublic internet egressをNSG ruleによりblockするPreview option。VNet trafficそのものは対象外。 outboundType変更はpublic egress IPとexisting connectionへ影響し得る。authorized IP rangeやexternal allowlistもchange scopeに含める。
通信経路と責任境界
アドレスと識別情報の考え方
| Address / identity | Where it lives | 運用上の意味 |
|---|---|---|
| Pod source | Overlayでは外向きにnodeへSNATされ得る | pod IPをexternal allowlistへ直接登録する前提を置かない。 |
| Node source | node subnet IP | UDR/NSGのroute sourceでありOverlay egress identityにもなる。 |
| Egress public IP | SLB/NAT/Firewall/NVA | partner allowlist・audit・failover時source identityとして管理。 |
| Destination class | Azure dependency/SaaS/on-prem/internet | route/inspection/DNS requirementをclassごとに分離。 |
設計判断
| 判断軸 | 確認する問い | 設計として固定すること |
|---|---|---|
| Fixed source IP | partner allowlist等で固定sourceが必要か | NAT/Firewall public IP inventoryとHA/scaleを設計。 |
| Inspection | FQDN/TLS/IDPS等central inspectionが必要か | UDR + Firewall/NVA。asymmetric returnを避ける。 |
| SNAT scale | 大量outbound connectionがあるか | NAT Gateway等のSNAT scaleを計算。 |
| Isolation | public internetを許可しないclusterか | Network Isolated + none/blockのcurrent constraintsを確認。 |
| DNS/FQDN | Firewall/FQDN policyで名前解決が一致するか | pod resolverとinspection deviceのDNS viewを揃える。 |
実装・移行の順序
- destination class(Azure dependency / container registry / package repo / SaaS / on-prem)を列挙する。
- 各classへexpected route、inspection、SNAT source、DNS resolverを記載する。
- cluster networkProfileのoutboundTypeとsubnet UDR/NSGをread-only取得する。
- canary podから代表destinationへ新規TCP/DNS testを実行し、destination側source IPを確認する。
- Firewall/NAT/LB metrics/logsでactual next hopとSNATを照合する。
- outboundType/UDR変更時は既存session断、allowlist更新、rollback routeを含むmaintenance planを作る。
運用で残しておく情報
| 観点 | 残すべき運用証拠 |
|---|---|
| Profile | outboundType / loadBalancerProfile / natGatewayProfileを取得。 |
| Route | node subnet route tableで0/0とmore-specific private routesを確認。 |
| Source identity | external endpointでobserved source public IPを確認。 |
| Dependencies | AKS/ACR/monitoring/DNS等のrequired egressがpolicyでblockされていないか確認。 |
変更前に確認する
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へ含める。
az aks show -g <rg> -n <cluster> --query networkProfile -o jsonc
az aks show -g <rg> -n <cluster> --query nodeResourceGroup -o tsv
kubectl get pods -A -o wide
Common failure modes
| 症状 | 疑うboundary | 確認・是正 |
|---|---|---|
| podからinternet不可 | outboundType/UDR/Firewall deny/SNAT | 0/0 next hop→device policy→SNAT capacityの順で確認。 |
| 一部SaaSだけ不可 | FQDN/DNS/TLS inspection/partner allowlist | resolved IPとobserved source IPを双方確認。 |
| outboundType変更後切断 | egress IP変更/connection reset | allowlist更新と既存session影響をchange planへ。 |
| UDRなのにbypass | more-specific route/service endpoint等 | effective routeのprefix priorityを確認。 |