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

AKS Private Cluster Networking

AKS private clusterのAPI server private endpoint、private DNS、hub/spoke・VPN/ERからのmanagement path、API Server VNet Integrationを設計する。

この記事の目次

AKS Private Cluster Networkingを理解するための前提

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

private AKS clusterではcontrol plane/API serverにinternal IPを使い、node poolとの通信をprivate network内に保つ。 Private Link方式のprivate clusterではAPI server VNet側Private Link Serviceとcluster subnet側private endpointを通じてcontrol planeへ接続する。

default構成ではprivate DNS zoneがcluster node VNetへlinkされ、API server private endpointのA record解決を支える。hub/custom DNSを使う場合はこのlink/forwardingを明示設計する。 public FQDNをdisableしても重要なのは名前ではなくmanagement clientからprivate endpointへのnetwork reachability。VPN、ExpressRoute、peering、Bastion/VM等の管理経路を用意する。

API Server VNet Integrationではcontrol planeをcluster VNet内private IPとして到達可能にするmodelがあり、別VNetから到達させる場合はPrivate Link Service/Private Endpoint等の追加patternが必要になる場合がある。 private control planeでもworkload/node egress要件は別。APIをprivateにしたことをinternet egress isolationと混同しない。

通信経路と責任境界

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

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

Address / identityWhere it lives運用上の意味
API FQDNprivate DNSでAPI private IPへ解決public FQDN有無とpublic endpoint exposureは別概念。
API private IPprivate endpointまたはVNet-integrated control planemanagement sourceからroute可能であることが必要。
Management sourceops VNet/on-prem/runnerどこからkubectlするかを固定しDNS/link/routeを設計。
Workload egressnode/pod outbound pathcontrol planeをprivate化してもinternet egress設計は別途必要。
重要: IPアドレスそのものとworkload/service identityを混同しません。autoscale・reschedule・SNAT・load balancingでaddressは変化するため、Kubernetes metadataとAzure resource identityを合わせて記録します。

設計判断

判断軸確認する問い設計として固定すること
Management source誰がどこからkubectl/CIするかops VNet/on-prem/runner subnetを固定。
DNS ownershipAKS-managed private zoneかBYO private DNSかhub resolver/conditional forwarder/RBACまで設計。
Public FQDNpublic DNS nameを残す必要があるかpublic FQDN有無とpublic endpoint有無を混同しない。
Cross-VNethub/ops VNetからAPIへどう到達するかpeering/private endpoint/VPN/ER patternを選択。
Break glass通常management path障害時の復旧手段command invoke等を含めsecurity policyとrunbook化。

実装・移行の順序

  1. cluster方式(Private Link private cluster / API Server VNet Integration)を確認する。
  2. API FQDNとresolved private IP、private DNS zone/linkをinventoryする。
  3. management sourceからDNS query→route→TCP 443の順に検証する。
  4. custom DNS/hub resolver使用時はconditional forwardingとPrivate DNS link ownershipを確認する。
  5. CI/CD runnerから同じcontrol-plane pathを検証し、人手端末だけ成功する状態を避ける。
  6. stop/start/upgrade等でprivate endpoint/DNS behaviorが変わる可能性もrunbookへ記録する。

運用で残しておく情報

観点残すべき運用証拠
API endpointaz aks showのprivateFQDN/fqdn/apiServerAccessProfileを記録。
DNSmanagement sourceからAPI FQDNが期待private IPへ解決するか。
Routesource VNet/on-premからAPI endpoint subnetまでのroute/NSG/firewall。
CI/CDself-hosted runner等のmanagement client pathも同じ基準で確認。

変更前に確認する

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
az aks show -g <rg> -n <cluster> --query "{privateFqdn:privateFqdn,fqdn:fqdn,api:apiServerAccessProfile,nodeRg:nodeResourceGroup}" -o jsonc
kubectl cluster-info
kubectl get nodes -o wide

Common failure modes

症状疑うboundary確認・是正
kubectl timeoutDNSは正しいがroute/NSG/VPNなしname resolutionとTCP reachabilityを分けて確認。
API名が解決しないPrivate DNS link/custom DNS forwarding不足zone linkとresolver pathを確認。
hub VMだけ失敗private zoneがspokeにしかlinkされていないhub側resolver/link/forwarding designを修正。
private clusterなのにpublic DNS名があるpublic FQDNとendpoint exposureを混同public FQDNはname resolution要素。actual API pathを確認。

Change safety / rollback

一括変更を避ける: DNS zone/link変更は即時にmanagement planeを失う可能性がある。既存kubectl sessionを頼らず、別management sourceからfresh DNS/TCP/API testを通してから完了とする。

Official sources