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 Contributor | AKS 作成や更新で 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/CD | VNet 内の 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 Endpoint | ACR のプライベートエンドポイントが正しい VNet または接続先 VNet にあるか |
| DNS | privatelink.azurecr.io などの名前解決が内部 IP を返すか |
| 権限 | AKS kubelet identity または managed identity に ACR Pull 権限があるか |
| Firewall | Microsoft 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 SKU | Standard 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.0 | 2025年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 プライベートクラスターの更新ポイントを実務に落とし込むなら、まず既存クラスターを棚卸しし、次の順番で確認してください。
--enable-private-clusterの有無、パブリック FQDN の有無、プライベート DNS の方式を確認する- 管理端末、踏み台、Bastion、VPN、ExpressRoute、CI/CD エージェントから API サーバーへ到達できるか確認する
- カスタム DNS、VNet リンク、マネージド ID 権限、ACR Private Link を確認する
- Azure Linux 2.0 ノードプールが残っていないか確認し、AzureLinux3 などへの移行計画を作る
- Terraform 管理環境では、手動変更をなくし、DNS・FQDN・ID・ロール割り当てをコードで管理する
AKS プライベートクラスターは、単に API サーバーを閉じるための機能ではありません。DNS、ID、ネットワーク、CI/CD、監視を含めた「運用できる閉域 Kubernetes 基盤」として設計することが、今回の公式情報から読み取るべき最も重要なポイントです。

コメント