Azure AKSプライベートクラスター更新ポイント:Private Link構成、DNS、FQDN、移行期限を実務向けに解説

Azure AKS プライベートクラスターの公式情報で最初に確認すべきポイントは、API サーバーを Private Link ベースで閉じるだけでなく、パブリック FQDN、プライベート DNS、カスタム DNS、CI/CD の接続経路まで設計対象になることです。特に「Create a Private Azure Kubernetes Service (AKS) Cluster – Azure Kubernetes Service」は、Azure CLI と Terraform の両方で作成・更新手順を整理しており、既存環境の管理者は DNS 設定、パブリック FQDN の扱い、Azure Linux 2.0 ノードプールの期限、運用端末やパイプラインからの接続経路を優先して点検する必要があります。Microsoft Learn 日本語版は 2026年7月2日更新と表示されており、本記事では 2026年7月3日時点で確認できる公式情報をもとに、グローバル環境の管理者向けに影響範囲と実務上の確認ポイントを整理します。(Microsoft Learn)

目次

今回の要点:AKS プライベートクラスターは「作成コマンド」だけでは完結しない

Azure Kubernetes Service、つまり AKS のプライベートクラスターは、Kubernetes API サーバーをインターネットに直接公開せず、ノードプールとの通信をプライベートネットワーク内に閉じるための構成です。公式ドキュメントでは、Azure CLI または Terraform を使って Private Link ベースの AKS クラスターをデプロイする手順が中心に説明されています。プライベートクラスターでは API サーバーが内部 IP アドレスを持ち、AKS 管理リソースグループ側のコントロールプレーンとユーザー側のクラスターまたはノードプールが Azure Private Link とプライベートエンドポイントを介して通信します。(Microsoft Learn)

ただし、実務で重要なのは「--enable-private-cluster を付けて作成する」だけではありません。今回の公式情報で特に見落としやすいのは、次の4点です。

  • 既定では、プライベート FQDN とパブリック FQDN の両方が作成される場合がある
  • パブリック FQDN を無効化するかどうかは、セキュリティ要件と運用性のバランスで判断する
  • カスタム DNS やハブ&スポーク構成では、プライベート DNS ゾーン、VNet リンク、マネージド ID の権限が失敗原因になりやすい
  • Azure DevOps の Microsoft ホステッドエージェントや管理端末からの接続経路を、事前に別設計する必要がある

つまり、AKS プライベートクラスターの更新ポイントは「新しい作成手順」ではなく、ネットワーク、DNS、ID、CI/CD、移行期限を含めた運用設計の確認項目が明確になったことと捉えるのが実務的です。

影響範囲:どの環境が確認対象になるか

今回の内容は、これから AKS プライベートクラスターを作成する組織だけでなく、既存の AKS Standard クラスター、Terraform 管理の AKS、ハブ&スポークネットワーク、グローバルリージョンを使う企業にも関係します。

対象影響するポイント管理者が確認すべきこと
新規 AKS プライベートクラスター--enable-private-cluster、プライベート DNS、パブリック FQDN の設計作成前に DNS と管理アクセス経路を決める
既存 AKS クラスターパブリック FQDN 無効化、プライベート DNS 更新、API Server VNet 統合変更時の接続断、ノードイメージ更新、運用端末への影響を確認する
Terraform 管理環境private_cluster_enabled、private_dns_zone_id、private_cluster_public_fqdn_enabled手動変更と Terraform state の差分をなくす
ハブ&スポーク構成カスタム DNS、VNet リンク、中央 DNS フォワーダーDNS 転送先、VNet リンク、マネージド ID 権限を確認する
CI/CD パイプラインMicrosoft ホステッドエージェントから API サーバーに届かない可能性Self-hosted agent、VPN、VNet 内エージェントを検討する
Azure Linux 2.0 ノードプールサポート終了とスケール不可リスクAzureLinux3 などサポート対象 OS へ移行する
中国リージョン利用環境Microsoft Defender for Cloud の廃止予定監視・セキュリティ運用の代替策を確認する

プライベート AKS クラスター自体に「今回の更新だけで必ず移行が必要」という期限が設定されたわけではありません。一方で、AKS の周辺要素には期限があります。特に Azure Linux 2.0 ノードイメージは、公式英語版で 2025年11月30日以降にサポートとセキュリティ更新が提供されず、2026年3月31日以降はノードイメージが削除され、ノードプールをスケールできなくなると説明されています。(Microsoft Learn)

AKS プライベートクラスターの基本構成を理解する

AKS プライベートクラスターでは、Kubernetes API サーバーへの通信がプライベートエンドポイント経由になります。これにより、API サーバーとノードプール間の通信をプライベートネットワークに閉じやすくなります。

基本的な作成コマンドは次の形です。

az aks create \
  --name <private-cluster-name> \
  --resource-group <private-cluster-resource-group> \
  --load-balancer-sku standard \
  --enable-private-cluster \
  --generate-ssh-keys

高度なネットワーク構成では、既存 VNet のサブネット、Azure CNI、DNS サービス IP、Service CIDR を明示します。

az aks create \
  --resource-group <private-cluster-resource-group> \
  --name <private-cluster-name> \
  --load-balancer-sku standard \
  --enable-private-cluster \
  --network-plugin azure \
  --vnet-subnet-id <subnet-id> \
  --dns-service-ip <dns-service-ip> \
  --service-cidr <service-cidr> \
  --generate-ssh-keys

公式情報では、既定の基本ネットワークと高度なネットワークの両方の作成例が示されています。高度なネットワークでは、--network-plugin azure、--vnet-subnet-id、--dns-service-ip、--service-cidr が重要な指定項目です。(Microsoft Learn)

実務では、検証環境なら基本構成でも始められますが、本番環境では既存 VNet、サブネット設計、DNS、ファイアウォール、監査ログ、CI/CD からの接続まで含めて設計するのが安全です。

パブリック FQDN を残すか、無効にするか

今回の公式情報で管理者が特に確認すべきなのが、パブリック FQDN の扱いです。

--enable-private-cluster を指定して AKS プライベートクラスターを作成しても、既定では API サーバーのパブリック DNS 名、つまりパブリック FQDN が作成される場合があります。公式ドキュメントでは、パブリック FQDN は「パブリックに解決可能な DNS 名」であり、プライベートクラスターの API 通信自体は引き続きプライベートエンドポイント経由で行われると説明されています。--disable-public-fqdn を使うと、このパブリック DNS 名を削除し、管理アクセスを VPN、ExpressRoute、VNet ピアリング、Bastion ホストなどのプライベート接続方法に限定できます。(Microsoft Learn)

判断軸パブリック FQDN を残すケースパブリック FQDN を無効にするケース
運用性外部からの管理や一時的なトラブル対応を簡単にしたい管理経路を社内ネットワークや専用接続に限定したい
CI/CD外部ランナーや既存パイプラインを使っているVNet 内の Self-hosted agent を用意できる
セキュリティ要件厳格な閉域要件がない金融、公共、規制産業などで閉域運用が求められる
推奨アクションDNS 名が存在する前提でアクセス制御を点検無効化後の接続手段を先に確保

新規作成時にパブリック FQDN を無効にする例は次の通りです。

az aks create \
  --name <private-cluster-name> \
  --resource-group <private-cluster-resource-group> \
  --load-balancer-sku standard \
  --enable-private-cluster \
  --assign-identity <resource-id> \
  --private-dns-zone system \
  --disable-public-fqdn \
  --generate-ssh-keys

既存クラスターで無効化する場合は、次の更新コマンドを使います。

az aks update \
  --name <private-cluster-name> \
  --resource-group <private-cluster-resource-group> \
  --disable-public-fqdn

注意点は、パブリック FQDN を無効にしてから「kubectl がつながらない」「Azure DevOps からデプロイできない」と気づくケースです。無効化はセキュリティを高める有効な選択ですが、先に管理端末、踏み台、Bastion、VPN、ExpressRoute、Self-hosted agent のいずれで運用するかを決めておく必要があります。

プライベート DNS の選択肢:system、none、custom の違い

AKS プライベートクラスターでは、プライベート DNS の設計が安定運用の中心になります。公式ドキュメントでは、Azure CLI の --private-dns-zone または ARM テンプレートの privateDNSZone で、system、none、カスタムプライベート DNS ゾーンのリソース IDを指定できると説明されています。system を省略時の既定値として使う場合、AKS がノードリソースグループにプライベート DNS ゾーンを作成します。none では AKS がプライベート DNS ゾーンを作成しません。カスタム DNS ゾーンを使う場合は、指定形式、ロール、マネージド ID の権限が重要です。(Microsoft Learn)

設定向いている環境注意点
system標準的な構成、検証環境、小規模な本番環境AKS 管理の DNS ゾーンが作られるため、中央 DNS 設計と整合させる
noneパブリック DNS のみで管理する設計、独自 DNS を使わない特殊ケース--disable-public-fqdn と同時利用できない組み合わせがある
カスタム DNS ゾーンハブ&スポーク、複数 VNet、中央 DNS フォワーダーを使う企業環境User-assigned managed identity、Private DNS Zone Contributor、Network Contributor が必要
カスタムサブドメインチームや環境ごとに FQDN を分けたい場合サブゾーン名の長さや条件付き転送の制約を確認する

特にハブ&スポーク構成では、既定のプライベート DNS ゾーン動作のまま進めると、AKS がスポーク VNet に直接ゾーンをリンクしようとし、マネージド ID に Network Contributor がない場合に失敗する可能性があります。公式ドキュメントでは、既存のカスタムプライベート DNS ゾーンを指定する構成、または --private-dns-zone none とパブリック DNS を組み合わせる構成が回避策として示されています。(Microsoft Learn)

カスタム DNS を使う場合の実務チェック

企業ネットワークでは、オンプレミス DNS、Azure Firewall DNS Proxy、中央 DNS フォワーダー、ハブ VNet の DNS サーバーなどを使っていることがあります。この場合、AKS 側だけで設定を完了したつもりでも、管理端末や CI/CD エージェントから API サーバーの名前解決ができず、kubectl が失敗することがあります。

公式ドキュメントでは、カスタム DNS サーバーを使う場合、Azure のパブリック IP アドレス 168.63.129.16 をアップストリーム DNS サーバーとして追加し、最初の DNS サーバーとして追加することが前提条件に含まれています。(Microsoft Learn)

確認時は、少なくとも次の観点を押さえます。

確認項目確認内容失敗時に起きること
プライベート DNS ゾーンprivatelink.<region>.azmk8s.io などのゾーンが想定通りかAPI サーバー FQDN が解決できない
VNet リンクAKS ノードの VNet、管理端末の VNet、ハブ VNetとのリンクノードは動くが管理端末から接続できない
DNS フォワーダー168.63.129.16 への転送が正しいかAzure 管理のプライベート DNS レコードを解決できない
マネージド ID 権限Private DNS Zone Contributor と Network ContributorAKS 作成や更新で DNS レコード作成に失敗する
条件付き転送サブドメインを含む設計になっていないか期待通りに名前解決できない

実務では、作成前にネットワークチームと DNS チームへ「AKS の API サーバー FQDN をどの VNet・拠点から解決する必要があるか」を確認しておくと、後戻りを減らせます。

Terraform 管理環境で見るべき差分

Terraform を使って AKS を管理している場合、ポータルや Azure CLI で手動変更すると state と実リソースがずれます。AKS プライベートクラスター関連では、少なくとも次の値をコードで管理するのが望ましいです。

resource "azurerm_kubernetes_cluster" "this" {
  name                = var.aks_cluster_name
  location            = azurerm_resource_group.this.location
  resource_group_name = azurerm_resource_group.this.name

  private_cluster_enabled             = true
  private_cluster_public_fqdn_enabled = false
  private_dns_zone_id                 = "System"

  default_node_pool {
    name           = "system"
    vm_size        = "Standard_DS2_v2"
    vnet_subnet_id = azurerm_subnet.aks.id
  }

  identity {
    type = "UserAssigned"
    identity_ids = [azurerm_user_assigned_identity.aks.id]
  }

  network_profile {
    network_plugin    = "azure"
    load_balancer_sku = "standard"
    dns_service_ip    = "10.2.0.10"
    service_cidr      = "10.2.0.0/24"
  }
}

特に private_cluster_public_fqdn_enabled = false は、パブリック FQDN を無効化する意図を Terraform に明示するために重要です。カスタムプライベート DNS ゾーンを使う場合は、DNS ゾーン、VNet リンク、ロール割り当て、AKS クラスターの順に依存関係を整理し、depends_on を使って DNS 権限の付与後にクラスターを作成する設計にします。公式情報でも、カスタム DNS では必要な DNS インフラと権限を利用者側で管理する必要があると説明されています。(Microsoft Learn)

既存クラスターの更新で注意すべきこと

既存の AKS プライベートクラスターで DNS 構成を変更する場合は、変更できる組み合わせに制約があります。公式ドキュメントでは、既存のプライベート AKS クラスターをプライベート DNS ゾーンからパブリックに更新する場合、byo または system から none への更新のみがサポートされると説明されています。また、この変更を行うとエージェントノードはパブリック FQDN を使うように変更され、Azure Virtual Machine Scale Sets を使う AKS クラスターではノードイメージアップグレードが実行されます。(Microsoft Learn)

更新コマンドは次の形です。

az aks update \
  --name <private-cluster-name> \
  --resource-group <private-cluster-resource-group> \
  --private-dns-zone none

この変更は単なる DNS 設定変更に見えても、ノードイメージアップグレードを伴う可能性があります。本番環境では、メンテナンス時間帯、PodDisruptionBudget、ワークロードの冗長化、監視アラート、ロールバック方針を確認してから実施してください。

接続経路:kubectl と CI/CD をどこから実行するか

プライベート AKS クラスターでは、API サーバーエンドポイントにパブリック IP アドレスがありません。そのため、API サーバーを管理するには、AKS クラスターの VNet に到達できる VM、コンテナー、Cloud Shell、Bastion、VNet ピアリング、プライベートエンドポイント、ExpressRoute、VPN、AKS command invoke などの接続手段を選ぶ必要があります。公式ドキュメントでも、Cloud Shell と Bastion は比較的簡単な選択肢である一方、ExpressRoute と VPN はコストやネットワーク複雑性が増えると説明されています。(Microsoft Learn)

実務上のおすすめは、次のように使い分けることです。

用途推奨しやすい接続方式理由
初期構築・検証VNet 内の Cloud Shell、Bastion、踏み台 VMセットアップが比較的簡単
本番運用VPN、ExpressRoute、Bastion、管理 VNet権限管理と監査を整理しやすい
CI/CDVNet 内の Self-hosted agentプライベート API サーバーへ安定して到達できる
緊急調査AKS command invoke、踏み台経由端末側のネットワーク制約を回避しやすい
複数 VNet 管理VNet ピアリングとプライベート DNS リンク複数環境を一元管理しやすい

注意したいのは、Azure DevOps の Microsoft ホステッドエージェントです。公式ドキュメントでは、プライベートクラスターでは Azure DevOps Microsoft ホステッドエージェントがサポートされず、Self-hosted agent の利用が検討事項として示されています。(Microsoft Learn)

ACR、Private Link、イメージ取得も忘れずに確認する

AKS プライベートクラスターを作っても、コンテナーイメージの取得経路が未整備だと、Pod が起動できません。Azure Container Registry、つまり ACR を使う場合は、ACR 側にも Private Link を設定するか、ACR の VNet とプライベートクラスターの VNet の間でピアリングを設定する必要があります。公式ドキュメントでも、プライベート AKS クラスターで Azure Container Registry を有効にする場合、クラスター VNet 内でコンテナーレジストリの Private Link を設定するか、VNet ピアリングを設定することが前提として示されています。(Microsoft Learn)

確認すべきポイントは次の通りです。

項目確認内容
ACR の到達性ノードから ACR のログインサーバー名を解決できるか
Private EndpointACR のプライベートエンドポイントが正しい VNet または接続先 VNet にあるか
DNSprivatelink.azurecr.io などの名前解決が内部 IP を返すか
権限AKS kubelet identity または managed identity に ACR Pull 権限があるか
FirewallMicrosoft Container Registry、Azure Monitor など必要なアウトバウンドが許可されているか

プライベートクラスター化は API サーバーの公開範囲を狭める施策ですが、実際のワークロード起動にはイメージ取得、ログ送信、メトリック送信、外部 API へのアウトバウンド通信も関係します。API サーバーだけを見て完了と判断しないことが重要です。

API Server VNet 統合との違いも押さえる

公式ドキュメントの冒頭では、Private Link やトンネルを必須としない AKS クラスターを作成したい場合は、API Server VNet 統合のドキュメントを参照するよう案内されています。API Server VNet 統合では、API サーバーエンドポイントを AKS がデプロイされる VNet 内の委任サブネットに直接投影し、Private Link やトンネルなしで API サーバーとノード間の通信をプライベートネットワークに保持できます。(Microsoft Learn)

ただし、既存 AKS Standard クラスターを API Server VNet 統合へ変換する場合は注意が必要です。公式ドキュメントでは、この機能は容量に依存する一方向の機能であり、有効化後に直ちにクラスター再起動が必要、無効化できない、API サーバー IP アドレスが変わる可能性があると説明されています。(Microsoft Learn)

判断基準は次の通りです。

選択肢向いているケース
Private Link ベースのプライベート AKS クラスター既存の Private Link 設計に合わせたい、プライベートエンドポイント中心で統制したい
API Server VNet 統合API サーバーを VNet 内に直接統合したい、AKS Automatic や新しい標準構成に寄せたい
パブリック AKS + IP 制限閉域要件が低く、管理性を優先する検証・開発環境

どちらが常に正解というものではありません。既存のネットワーク設計、セキュリティ要件、運用チームのスキル、監査要件、リージョン対応状況を合わせて選ぶ必要があります。

管理者向けチェックリスト

AKS プライベートクラスターを新規作成または更新する前に、次の順番で確認すると抜け漏れを減らせます。

優先度確認項目確認方法の例
高パブリック FQDN を残すか無効にするかセキュリティ要件と運用経路を確認
高プライベート DNS ゾーンの方式system、none、カスタム DNS のどれかを決める
高管理端末から API サーバーへ到達できるかVPN、Bastion、Cloud Shell、踏み台 VM を確認
高CI/CD エージェントの配置Self-hosted agent を VNet 内または接続可能なネットワークに配置
高カスタム DNS の転送設定168.63.129.16 への転送、VNet リンク、条件付き転送を確認
中ACR への到達性Private Link、VNet ピアリング、DNS、AcrPull 権限を確認
中プライベートエンドポイントの保護誤削除や手動変更を防ぐ運用ルールを設定
中Load Balancer SKUStandard Load Balancer を使う
中IP authorized ranges の誤解プライベート API サーバーには適用できない前提で設計
中Azure Linux 2.0 ノードプールOS SKU と Kubernetes バージョンを棚卸し
低21Vianet 中国リージョンDefender for Cloud 廃止予定と代替監視を確認

公式ドキュメントでは、IP 承認範囲はパブリック API サーバーにのみ適用され、プライベート API サーバーエンドポイントには適用できないこと、顧客サブネット内のプライベートエンドポイントを削除または変更するとクラスターが機能しなくなること、Azure Private Link service は Standard Azure Load Balancer のみをサポートすることが制限事項として示されています。(Microsoft Learn)

グローバル環境で見るべき期限と地域差

グローバル企業では、リージョン差と周辺サービスの期限も確認が必要です。プライベート AKS クラスターは、AKS がサポートされるパブリックリージョン、Azure Government、21Vianet が運営する Microsoft Azure リージョンで利用可能と説明されています。一方、中国リージョンでは Microsoft Defender for Cloud の全機能が 2026年8月18日に正式に廃止される予定で、新規サブスクリプションのオンボードにも制約があります。(Microsoft Learn)

項目期限・条件対応
Azure Linux 2.02025年11月30日以降、AKS でサポートとセキュリティ更新が提供されないAzureLinux3 などサポート対象 OS へ移行
Azure Linux 2.0 ノードイメージ2026年3月31日以降、ノードイメージ削除によりスケール不可の可能性ノードプールの OS SKU と Kubernetes バージョンを棚卸し
Microsoft Defender for Cloud 中国リージョン2026年8月18日に全機能廃止予定監視、脅威検出、コンプライアンス運用の代替策を検討
Private DNS 更新system または byo から none のみサポート更新前にノードイメージアップグレードの影響を評価

この表から分かる通り、AKS プライベートクラスターの設定そのものよりも、周辺のノード OS、セキュリティ監視、DNS 更新の影響が運用リスクになりやすいです。

失敗しやすいポイントと回避策

パブリック FQDN を無効にした後に管理経路がなくなる

--disable-public-fqdn はセキュリティ上有効ですが、実行後に外部からの管理経路がなくなることがあります。VPN、ExpressRoute、Bastion、VNet 内の Cloud Shell、踏み台 VM、Self-hosted agent のいずれかを先に準備してください。

DNS は解決できるが、正しい IP を返していない

プライベート DNS ゾーンのリンク先が不足していたり、オンプレミス DNS の条件付き転送が誤っていたりすると、名前解決は成功しても期待したプライベート IP に向かない場合があります。管理端末、CI/CD エージェント、ノードのそれぞれで nslookup を実行し、同じ FQDN が想定通りのアドレスを返すか確認します。

Terraform 外で変更して state がずれる

Azure portal や Azure CLI で FQDN や DNS 設定を変更した後、Terraform 側に反映しないまま次回 terraform apply を実行すると、意図しない差し戻しや再作成につながることがあります。緊急変更を行った場合も、後で必ず Terraform コードへ反映してください。

Microsoft ホステッドエージェントを前提にしている

プライベートクラスターでは、Microsoft ホステッドエージェントから API サーバーへ直接アクセスできない構成になりやすいです。リリースパイプラインは、VNet 内または接続可能なネットワーク内に Self-hosted agent を置く設計へ変更するのが現実的です。

プライベートエンドポイントを通常のネットワークリソースとして削除してしまう

AKS プライベートクラスターのプライベートエンドポイントは、API サーバーへの通信に関わる重要リソースです。誤削除を防ぐため、権限を最小化し、リソースロックや変更管理プロセスの対象に含めることを検討してください。

次に取るべき行動

Azure AKS プライベートクラスターの更新ポイントを実務に落とし込むなら、まず既存クラスターを棚卸しし、次の順番で確認してください。

  1. --enable-private-cluster の有無、パブリック FQDN の有無、プライベート DNS の方式を確認する
  2. 管理端末、踏み台、Bastion、VPN、ExpressRoute、CI/CD エージェントから API サーバーへ到達できるか確認する
  3. カスタム DNS、VNet リンク、マネージド ID 権限、ACR Private Link を確認する
  4. Azure Linux 2.0 ノードプールが残っていないか確認し、AzureLinux3 などへの移行計画を作る
  5. Terraform 管理環境では、手動変更をなくし、DNS・FQDN・ID・ロール割り当てをコードで管理する

AKS プライベートクラスターは、単に API サーバーを閉じるための機能ではありません。DNS、ID、ネットワーク、CI/CD、監視を含めた「運用できる閉域 Kubernetes 基盤」として設計することが、今回の公式情報から読み取るべき最も重要なポイントです。

この記事を書いた人

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

コメント

コメントする

目次