Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini membantu Anda menyebarkan kluster AKS berbasis tautan privat menggunakan Azure CLI atau Terraform. Jika Anda tertarik untuk membuat kluster AKS tanpa tautan atau terowongan privat yang diperlukan, lihat Membuat kluster Azure Kubernetes Service (AKS) dengan integrasi API Server VNet.
Gambaran umum kluster privat di AKS
Dalam kluster privat, sarana kontrol atau server API memiliki alamat IP internal yang ditentukan dalam dokumen RFC1918 - Alokasi Alamat untuk Internet Privat . Dengan menggunakan kluster privat, Anda dapat memastikan lalu lintas jaringan antara server API dan kumpulan simpul Anda hanya tetap berada di jaringan privat.
Sarana kontrol atau server API berada dalam grup sumber daya Azure yang dikelola AKS, dan kluster atau kumpulan simpul Anda berada di grup sumber daya Anda. Server dan kluster atau kumpulan simpul dapat berkomunikasi satu sama lain melalui layanan Azure Private Link di jaringan virtual server API dan titik akhir privat yang terekspos pada subnet kluster AKS Anda.
Saat Anda membuat kluster AKS privat, AKS membuat nama domain privat dan publik yang sepenuhnya memenuhi syarat (FQDN) dengan zona DNS yang sesuai secara default. Untuk opsi konfigurasi DNS terperinci, lihat Mengonfigurasi zona DNS privat, subzone DNS privat, atau subdomain kustom.
Ketersediaan wilayah
Kluster privat tersedia di wilayah publik, Azure Government, dan Microsoft Azure yang dioperasikan oleh 21Vianet di wilayah tempat AKS didukung.
Penting
Semua fitur Pertahanan Microsoft untuk Cloud akan secara resmi dihentikan di wilayah Azure di Tiongkok pada 18 Agustus 2026. Karena penghentian yang akan datang ini, pelanggan Azure di Tiongkok tidak lagi dapat melakukan onboarding langganan baru ke layanan. Langganan baru adalah langganan apa pun yang belum di-onboard ke layanan Microsoft Defender for Cloud sebelum 18 Agustus 2025, tanggal pengumuman penghentian. Untuk informasi selengkapnya tentang penghentian, lihat Penghentian Pertahanan Microsoft untuk Cloud di Pengumuman Microsoft Azure yang Dioperasikan oleh 21Vianet.
Pelanggan harus bekerja dengan perwakilan akun mereka untuk Microsoft Azure yang dioperasikan oleh 21Vianet untuk menilai dampak penghentian ini pada operasi mereka sendiri.
Prasyarat untuk kluster AKS privat
Langganan Azure aktif. Jika Anda tidak memiliki langganan Azure, buatlah akun gratis sebelum Anda memulai.
Atur konteks langganan Anda menggunakan perintah [
az account set][az-account-set]. Contohnya:az account set --subscription "00000000-0000-0000-0000-000000000000"Azure CLI versi 2.28.0 atau yang lebih tinggi. Temukan versi Anda menggunakan
az --versionperintah . Jika Anda perlu menginstal atau meningkatkan, lihat Menginstal Azure CLI.Jika menggunakan Azure Resource Manager (ARM) atau Azure REST API, versi AKS API harus 2021-05-01 atau lebih tinggi.
Untuk menggunakan server DNS kustom, tambahkan alamat IP publik Azure 168.63.129.16 sebagai server DNS upstream di server DNS kustom, dan pastikan untuk menambahkan alamat IP publik ini sebagai server DNS pertama . Untuk informasi selengkapnya tentang alamat IP Azure, lihat Apa itu alamat IP 168.63.129.16?
- Zona DNS kluster harus menjadi apa yang Anda teruskan ke 168.63.129.16. Anda dapat menemukan informasi selengkapnya tentang nama zona di konfigurasi zona DNS layanan Azure.
Kluster AKS yang ada yang diaktifkan dengan integrasi API Server VNet dapat mengaktifkan mode kluster privat. Untuk informasi selengkapnya, lihat Mengaktifkan atau menonaktifkan mode kluster privat pada kluster yang ada dengan integrasi API Server VNet.
Jika Anda perlu mengaktifkan Azure Container Registry pada kluster AKS privat, siapkan tautan privat untuk registri kontainer di jaringan virtual kluster (VNet) atau siapkan peering antara VNet registri kontainer dan VNet kluster privat.
kubectl telah terinstal. Anda dapat menginstalnya secara lokal menggunakan
az aks install-cliperintah .
- Terraform diinstal secara lokal. Untuk petunjuk penginstalan, lihat Menginstal Terraform.
Penting
Mulai 30 November 2025, Azure Kubernetes Service (AKS) tidak lagi mendukung atau menyediakan pembaruan keamanan untuk Azure Linux 2.0. Gambar node Azure Linux 2.0 dibekukan pada rilis 202512.06.0. Mulai tanggal 31 Maret 2026, gambar simpul akan dihapus, dan Anda tidak akan dapat menskalakan kumpulan simpul Anda. Migrasikan ke versi Linux Azure yang didukung dengan meningkatkan kumpulan simpul Anda ke versi Kubernetes yang didukung atau bermigrasi ke osSku AzureLinux3. Untuk informasi selengkapnya, lihat masalah Penghentian GitHub dan pengumuman penghentian Pembaruan Azure. Untuk tetap mendapatkan informasi tentang pengumuman dan pembaruan, ikuti catatan rilis AKS.
Keterbatasan
- Rentang resmi IP hanya berlaku untuk server API publik. Anda tidak dapat menerapkan rentang ini ke titik akhir server API privat.
- Batasan layanan Azure Private Link berlaku untuk kluster privat.
- Tidak ada dukungan untuk Agen yang dihosting Microsoft Azure DevOps dengan kluster privat. Pertimbangkan untuk menggunakan agen yang dihost sendiri.
- Menghapus atau memodifikasi titik akhir privat di subnet pelanggan menyebabkan kluster berhenti berfungsi.
- Layanan Azure Private Link hanya didukung pada Azure Load Balancer Standar. Basic Azure Load Balancer tidak didukung.
Hub dan spoke dengan DNS khusus untuk kluster AKS privat
Arsitektur hub dan spoke umumnya digunakan untuk menyebarkan jaringan di Azure. Dalam banyak penyebaran ini, pengaturan DNS di spoke VNet dikonfigurasi untuk mereferensikan penerus DNS pusat guna memungkinkan resolusi DNS di tempat dan berbasis Azure.
Diagram berikut mengilustrasikan arsitektur hub dan spoke untuk kluster AKS privat dengan DNS kustom:
- Saat kluster privat dibuat, titik akhir privat (1) dan zona DNS privat (2) dibuat di grup sumber daya yang dikelola kluster secara default. Kluster menggunakan catatan
Adi zona privat untuk menentukan IP dari titik akhir privat guna berkomunikasi dengan server API. - Zona DNS privat hanya ditautkan ke VNet tempat node kluster dilampirkan ke (3), yang berarti bahwa titik akhir privat hanya dapat diselesaikan oleh host di VNet yang ditautkan tersebut. Dalam skenario di mana tidak ada DNS kustom yang dikonfigurasi pada VNet (default), ini berfungsi tanpa masalah karena host mengarah ke 168.63.129.16 untuk DNS yang dapat memecahkan record di zona DNS privat berkat tautan tersebut.
- Jika Anda mempertahankan perilaku default zona DNS privat, AKS mencoba menautkan zona langsung ke VNet spoke yang menjadi host bagi kluster bahkan ketika zona sudah ditautkan ke VNet hub.
- Di VNet spoke yang menggunakan server DNS kustom, tindakan ini dapat gagal jika identitas terkelola kluster tidak memiliki Kontributor Jaringan di VNet spoke. Untuk mencegah kegagalan, pilih salah satu konfigurasi yang didukung berikut:
-
Zona DNS privat kustom: Berikan zona privat yang ada dan atur
privateDNSZone/--private-dns-zoneke ID sumber dayanya. Tautkan zona tersebut ke VNet yang sesuai (misalnya, VNet hub) dan aturpublicDNSkefalse/ gunakan--disable-public-fqdn. -
DNS publik saja: Nonaktifkan pembuatan zona privat dengan mengatur
privateDNSZone/--private-dns-zonekenonedan biarkanpublicDNSpada nilai defaultnya (true) / jangan gunakan--disable-public-fqdn.
-
Zona DNS privat kustom: Berikan zona privat yang ada dan atur
- Di VNet spoke yang menggunakan server DNS kustom, tindakan ini dapat gagal jika identitas terkelola kluster tidak memiliki Kontributor Jaringan di VNet spoke. Untuk mencegah kegagalan, pilih salah satu konfigurasi yang didukung berikut:
- Jika Anda menggunakan tabel rute bring your own (BYO) dengan kubenet dan BYO DNS dengan kluster privat, pembuatan kluster gagal. Anda perlu mengaitkan
RouteTabledalam grup sumber daya simpul ke subnet agar pembuatan kluster berhasil setelah sebelumnya gagal.
Batasan untuk kluster AKS privat dengan DNS kustom
- Pengaturan
privateDNSZone/--private-dns-zonekenonedanpublicDNS: false/--disable-public-fqdnpada saat yang sama tidak didukung. - Penerusan bersyarat tidak mendukung subdomain.
Buat grup sumber daya
Buat grup sumber daya menggunakan az group create perintah . Anda juga dapat menggunakan grup sumber daya yang ada untuk kluster AKS Anda.
az group create \
--name <private-cluster-resource-group> \
--location <location>
Membuat kluster AKS privat dengan jaringan dasar default
Buat kluster privat dengan jaringan dasar bawaan menggunakan perintah az aks create dengan penanda --enable-private-cluster.
Parameter kunci dalam perintah ini:
-
--enable-private-cluster: Mengaktifkan mode kluster privat.
az aks create \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--load-balancer-sku standard \
--enable-private-cluster \
--generate-ssh-keys
Buat file bernama
main.tfdan tambahkan kode berikut untuk menentukan versi Terraform dan tentukan penyedia Azure:terraform { required_version = ">= 1.3.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} subscription_id = var.subscription_id }Tambahkan kode berikut untuk
main.tfmembuat variabel input untuk ID langganan Azure, nama grup sumber daya, lokasi, dan nama kluster AKS Anda. Anda dapat mengubah nilai default sesuai kebutuhan.variable "subscription_id" { description = "The Azure subscription ID." type = string } variable "resource_group_name" { description = "The name of the resource group for the AKS cluster." type = string default = "rg-private-aks-basic" } variable "location" { description = "The Azure region where the resources will be created." type = string default = "eastus" } variable "aks_cluster_name" { description = "The name of the AKS cluster." type = string default = "aks-private-basic" }Tambahkan kode berikut ke
main.tfuntuk membuat grup sumber daya Azure.resource "azurerm_resource_group" "this" { name = var.resource_group_name location = var.location }Tambahkan kode berikut ke
main.tfuntuk membuat kluster AKS privat dengan jaringan dasar.resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "privatebasicaks" private_cluster_enabled = true default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" } identity { type = "SystemAssigned" } network_profile { load_balancer_sku = "standard" network_plugin = "kubenet" } }Ikuti langkah-langkah untuk menginisialisasi Terraform, memformat dan memvalidasi konfigurasi Terraform, membuat rencana eksekusi Terraform, menerapkan konfigurasi Terraform, dan menyambungkan ke kluster AKS.
Membuat kluster AKS privat dengan jaringan tingkat lanjut
Buat kluster privat dengan jaringan tingkat lanjut menggunakan az aks create perintah .
Parameter kunci dalam perintah ini:
-
--enable-private-cluster: Mengaktifkan mode kluster privat. -
--network-plugin azure: Menentukan plugin jaringan Azure CNI. -
--vnet-subnet-id <subnet-id>: ID sumber daya subnet yang ada di VNet. -
--dns-service-ip <dns-service-ip>: Alamat IP yang tersedia dalam rentang alamat layanan Kubernetes untuk digunakan untuk layanan DNS kluster. Contohnya,10.2.0.10. -
--service-cidr <service-cidr>: Rentang IP dalam notasi CIDR dari mana IP kluster layanan ditetapkan. Contohnya,10.2.0.0/24.
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
Buat file bernama
main.tfdan tambahkan kode berikut untuk menentukan versi Terraform dan tentukan penyedia Azure:terraform { required_version = ">= 1.3.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} subscription_id = var.subscription_id }Tambahkan kode berikut untuk
main.tfmembuat variabel input untuk ID langganan Azure Anda, nama grup sumber daya, lokasi, nama kluster AKS, nama jaringan virtual (VNet), dan nama subnet. Anda dapat mengubah nilai default sesuai kebutuhan.variable "subscription_id" { description = "The Azure subscription ID." type = string } variable "resource_group_name" { description = "The name of the resource group for the AKS cluster." type = string default = "rg-private-aks-advanced" } variable "location" { description = "The Azure region where the resources will be created." type = string default = "eastus" } variable "aks_cluster_name" { description = "The name of the AKS cluster." type = string default = "aks-private-advanced" } variable "vnet_name" { description = "The name of the virtual network." type = string default = "vnet-private-aks" } variable "subnet_name" { description = "The name of the subnet used by AKS." type = string default = "snet-aks" }Tambahkan kode berikut ke
main.tfuntuk membuat grup sumber daya Azure, VNet, dan subnet.resource "azurerm_resource_group" "this" { name = var.resource_group_name location = var.location } resource "azurerm_virtual_network" "this" { name = var.vnet_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name address_space = ["10.0.0.0/8"] } resource "azurerm_subnet" "aks" { name = var.subnet_name resource_group_name = azurerm_resource_group.this.name virtual_network_name = azurerm_virtual_network.this.name address_prefixes = ["10.240.0.0/16"] }Tambahkan kode berikut ke
main.tfuntuk membuat kluster AKS dengan jaringan tingkat lanjut.resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "privateadvancedaks" private_cluster_enabled = true default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "SystemAssigned" } network_profile { load_balancer_sku = "standard" network_plugin = "azure" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Ikuti langkah-langkah untuk menginisialisasi Terraform, memformat dan memvalidasi konfigurasi Terraform, membuat rencana eksekusi Terraform, menerapkan konfigurasi Terraform, dan menyambungkan ke kluster AKS.
Menggunakan domain kustom dengan kluster AKS privat
Jika Anda ingin mengonfigurasi domain kustom yang hanya dapat diselesaikan secara internal, lihat Menggunakan domain kustom.
Menonaktifkan FQDN publik pada kluster AKS privat
Menonaktifkan FQDN publik pada kluster baru
Nonaktifkan FQDN publik saat membuat kluster AKS privat menggunakan perintah az aks create dengan flag --disable-public-fqdn.
Parameter kunci dalam perintah ini:
-
--disable-public-fqdn: Menonaktifkan nama domain publik yang sepenuhnya memenuhi syarat (FQDN) untuk server API. -
--assign-identity <resource-id>: Menentukan identitas terkelola yang akan digunakan untuk kluster. -
--private-dns-zone [system|none]: Menentukan zona DNS privat yang akan digunakan untuk kluster.systemadalah nilai default saat mengonfigurasi zona DNS privat. Jika Anda menghilangkan--private-dns-zone, AKS membuat zona DNS privat di grup sumber daya simpul.nonemenonaktifkan pembuatan zona DNS privat.
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|none] \
--disable-public-fqdn \
--generate-ssh-keys
Ikuti langkah 1-3 di Membuat kluster AKS privat dengan jaringan tingkat lanjut atau Membuat kluster AKS privat dengan jaringan dasar default untuk menyiapkan konfigurasi Terraform dan membuat sumber daya yang diperlukan tergantung pada skenario Anda. Contoh ini menggunakan jaringan tingkat lanjut.
Tambahkan kode berikut untuk
main.tfmembuat kluster AKS privat dengan identitas yang ditetapkan pengguna dan FQDN publik dinonaktifkan:resource "azurerm_user_assigned_identity" "aks" { name = "id-private-aks-public-fqdn-off" location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name } resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "privateaks" private_cluster_enabled = true private_cluster_public_fqdn_enabled = false private_dns_zone_id = "System" default_node_pool { name = "system" node_count = 1 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 { load_balancer_sku = "standard" network_plugin = "azure" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Ikuti langkah-langkah untuk menginisialisasi Terraform, memformat dan memvalidasi konfigurasi Terraform, membuat rencana eksekusi Terraform, menerapkan konfigurasi Terraform, dan menyambungkan ke kluster AKS.
Menonaktifkan FQDN publik pada kluster yang ada
Nonaktifkan FQDN publik pada kluster AKS yang ada menggunakan perintah az aks update dengan opsi --disable-public-fqdn.
Parameter kunci dalam perintah ini:
-
--disable-public-fqdn: Menonaktifkan nama domain publik yang sepenuhnya memenuhi syarat (FQDN) untuk server API.
az aks update \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--disable-public-fqdn
Tambahkan kode berikut ke yang ada
main.tfuntuk menonaktifkan FQDN publik pada kluster AKS yang ada. Contoh ini menggunakan jaringan tingkat lanjut. Anda dapat memodifikasinya untuk menggunakan jaringan dasar default dengan mengubah sumber daya dan parameter Terraform yang relevan.resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "privateaks" private_cluster_enabled = true private_cluster_public_fqdn_enabled = false private_dns_zone_id = "System" default_node_pool { name = "system" node_count = 1 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 { load_balancer_sku = "standard" network_plugin = "azure" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Terapkan konfigurasi Terraform yang diperbarui menggunakan perintah
terraform plandanterraform apply.terraform plan terraform apply
Opsi konfigurasi untuk DNS privat
Anda dapat mengonfigurasi pengaturan DNS privat untuk kluster AKS privat menggunakan Azure CLI (dengan --private-dns-zone parameter) atau templat Azure Resource Manager (ARM) (dengan privateDNSZone properti ). Tabel berikut menguraikan opsi yang tersedia untuk --private-dns-zone parameter / privateDNSZone properti:
| Setting | Description |
|---|---|
system |
Nilai default saat mengonfigurasi zona DNS privat. Jika Anda menghilangkan --private-dns-zone / privateDNSZone, AKS membuat zona DNS privat di grup sumber daya simpul. |
none |
Jika Anda mengatur --private-dns-zone / privateDNSZone ke none, AKS tidak membuat zona DNS privat. |
<custom-private-dns-zone-resource-id> |
Untuk menggunakan parameter ini, Anda perlu membuat zona DNS privat dalam format berikut untuk cloud global Azure: privatelink.<region>.azmk8s.io atau <subzone>.privatelink.<region>.azmk8s.io. Anda memerlukan ID sumber daya zona DNS privat untuk digunakan di masa mendatang. Anda juga memerlukan identitas yang ditetapkan pengguna atau perwakilan layanan dengan peran Kontributor Zona DNS Privat dan Kontributor Jaringan. Untuk kluster yang menggunakan integrasi API Server VNet, zona DNS privat mendukung format penamaan private.<region>.azmk8s.io atau <subzone>.private.<region>.azmk8s.io. Anda tidak dapat mengubah atau menghapus sumber daya ini setelah membuat kluster, karena dapat menyebabkan masalah performa dan kegagalan peningkatan kluster. Anda hanya dapat menggunakan --fqdn-subdomain <subdomain><custom-private-dns-zone-resource-id> untuk menyediakan kemampuan subdomain ke privatelink.<region>.azmk8s.io. Jika Anda menentukan subzon, ada batas 32 karakter untuk nama tersebut <subzone> . |
Pertimbangan untuk DNS privat
Ingatlah pertimbangan berikut saat mengonfigurasi DNS privat untuk kluster AKS privat:
- Jika zona DNS privat berada dalam langganan yang berbeda dari kluster AKS, Anda perlu mendaftarkan
Microsoft.ContainerServicepenyedia Azure di kedua langganan. - Jika kluster AKS Anda dikonfigurasi dengan perwakilan layanan Direktori Aktif, AKS tidak mendukung penggunaan identitas terkelola yang ditetapkan sistem dengan zona DNS privat kustom. Kluster harus menggunakan autentikasi identitas terkelola yang ditetapkan pengguna.
Membuat kluster AKS privat dengan zona DNS privat
Buat kluster AKS privat dengan zona DNS privat menggunakan az aks create perintah .
Parameter kunci dalam perintah ini:
-
--enable-private-cluster: Mengaktifkan mode kluster privat. -
--private-dns-zone [system|none]: Mengonfigurasi zona DNS privat untuk kluster.systemadalah nilai default saat mengonfigurasi zona DNS privat. Jika Anda menghilangkan--private-dns-zone, AKS membuat zona DNS privat di grup sumber daya simpul.nonemenonaktifkan pembuatan zona DNS privat. -
--assign-identity <resource-id>: ID sumber daya identitas terkelola yang ditetapkan pengguna dengan peran Kontributor Zona DNS Privat dan Kontributor Jaringan .
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|none] \
--generate-ssh-keys
Ikuti langkah 1-3 di Membuat kluster AKS privat dengan jaringan tingkat lanjut atau Membuat kluster AKS privat dengan jaringan dasar default untuk menyiapkan konfigurasi Terraform dan membuat sumber daya yang diperlukan tergantung pada skenario Anda. Contoh ini menggunakan jaringan tingkat lanjut.
Tambahkan kode berikut untuk
main.tfmembuat kluster AKS privat dengan zona DNS privat yang dikelola 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 dns_prefix = "aks-system-dns" private_cluster_enabled = true private_dns_zone_id = "System" default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "SystemAssigned" } network_profile { network_plugin = "azure" load_balancer_sku = "standard" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Ikuti langkah-langkah untuk menginisialisasi Terraform, memformat dan memvalidasi konfigurasi Terraform, membuat rencana eksekusi Terraform, menerapkan konfigurasi Terraform, dan menyambungkan ke kluster AKS.
Membuat kluster AKS privat tanpa zona DNS privat
Ikuti langkah 1-3 di Membuat kluster AKS privat dengan jaringan tingkat lanjut atau Membuat kluster AKS privat dengan jaringan dasar default untuk menyiapkan konfigurasi Terraform dan membuat sumber daya yang diperlukan tergantung pada skenario Anda. Contoh ini menggunakan jaringan tingkat lanjut.
Tambahkan kode berikut untuk
main.tfmembuat kluster AKS tanpa zona DNS privat:resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "aks-no-dns" private_cluster_enabled = true private_dns_zone_id = "None" default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "SystemAssigned" } network_profile { network_plugin = "azure" load_balancer_sku = "standard" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Ikuti langkah-langkah untuk menginisialisasi Terraform, memformat dan memvalidasi konfigurasi Terraform, membuat rencana eksekusi Terraform, menerapkan konfigurasi Terraform, dan menyambungkan ke kluster AKS.
Membuat kluster AKS privat dengan zona DNS privat kustom atau subzone DNS privat
Buat kluster AKS privat dengan zona DNS privat kustom atau subzone menggunakan az aks create perintah .
Parameter kunci dalam perintah ini:
-
--enable-private-cluster: Mengaktifkan mode kluster privat. -
--private-dns-zone [<custom-private-dns-zone-resource-id>|<custom-private-dns-subzone-resource-id>]: ID sumber daya zona DNS privat atau subzone yang ada dalam format berikut untuk cloud global Azure:privatelink.<region>.azmk8s.ioatau<subzone>.privatelink.<region>.azmk8s.io. -
--assign-identity <resource-id>: ID sumber daya identitas terkelola yang ditetapkan pengguna dengan peran Kontributor Zona DNS Privat dan Kontributor Jaringan .
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 [<custom-private-dns-zone-resource-id>|<custom-private-dns-subzone-resource-id>] \
--generate-ssh-keys
Saat menggunakan zona DNS privat kustom, Anda bertanggung jawab untuk membuat dan mengelola infrastruktur DNS alih-alih mengandalkan DNS yang dikelola Azure. Ini termasuk membuat zona DNS, menautkannya ke VNet Anda, dan menetapkan izin yang diperlukan bagi AKS untuk mengelola rekaman.
Untuk konfigurasi DNS kustom, Anda harus menggunakan identitas terkelola yang ditetapkan pengguna dengan peran Kontributor Zona DNS Privat dan Kontributor Jaringan .
Ikuti langkah 1-3 di Membuat kluster AKS privat dengan jaringan tingkat lanjut atau Membuat kluster AKS privat dengan jaringan dasar default untuk menyiapkan konfigurasi Terraform dan membuat sumber daya yang diperlukan tergantung pada skenario Anda. Contoh ini menggunakan jaringan tingkat lanjut.
Tambahkan kode ke
main.tfuntuk membuat kluster AKS privat dengan zona DNS privat atau subzona khusus.resource "azurerm_user_assigned_identity" "aks" { name = "aks-custom-dns-id" location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name } resource "azurerm_private_dns_zone" "aks" { name = "privatelink.eastus.azmk8s.io" resource_group_name = azurerm_resource_group.this.name } resource "azurerm_private_dns_zone_virtual_network_link" "link" { name = "aks-dns-link" resource_group_name = azurerm_resource_group.this.name private_dns_zone_name = azurerm_private_dns_zone.aks.name virtual_network_id = azurerm_virtual_network.this.id } resource "azurerm_role_assignment" "dns" { scope = azurerm_private_dns_zone.aks.id role_definition_name = "Private DNS Zone Contributor" principal_id = azurerm_user_assigned_identity.aks.principal_id } resource "azurerm_role_assignment" "network" { scope = azurerm_virtual_network.this.id role_definition_name = "Network Contributor" principal_id = azurerm_user_assigned_identity.aks.principal_id } resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "aks-custom-dns" private_cluster_enabled = true private_dns_zone_id = azurerm_private_dns_zone.aks.id default_node_pool { name = "system" node_count = 1 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" } depends_on = [ azurerm_role_assignment.dns, azurerm_role_assignment.network ] }Ikuti langkah-langkah untuk menginisialisasi Terraform, memformat dan memvalidasi konfigurasi Terraform, membuat rencana eksekusi Terraform, menerapkan konfigurasi Terraform, dan menyambungkan ke kluster AKS.
Membuat kluster AKS privat dengan zona DNS privat kustom dan subdomain kustom
Buat kluster AKS privat dengan zona DNS privat kustom dan subdomain menggunakan az aks create perintah .
Parameter kunci dalam perintah ini:
-
--enable-private-cluster: Mengaktifkan mode kluster privat. -
--private-dns-zone <custom-private-dns-zone-resource-id>: ID sumber daya zona DNS privat yang ada dalam format berikut untuk cloud global Azure:privatelink.<region>.azmk8s.io. -
--fqdn-subdomain <subdomain>: Subdomain yang digunakan untuk kluster FQDN dalam zona DNS privat kustom. -
--assign-identity <resource-id>: ID sumber daya identitas terkelola yang ditetapkan pengguna dengan peran Kontributor Zona DNS Privat dan Kontributor Jaringan .
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 <custom-private-dns-zone-resource-id> \
--fqdn-subdomain <subdomain> \
--generate-ssh-keys
Ikuti langkah 1-3 di Membuat kluster AKS privat dengan jaringan tingkat lanjut atau Membuat kluster AKS privat dengan jaringan dasar default untuk menyiapkan konfigurasi Terraform dan membuat sumber daya yang diperlukan tergantung pada skenario Anda. Contoh ini menggunakan jaringan tingkat lanjut.
Tambahkan kode berikut ke
main.tfuntuk membuat cluster AKS privat dengan zona DNS privat kustom dan subdomain:resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "aks-subdomain" private_cluster_enabled = true private_dns_zone_id = azurerm_private_dns_zone.aks.id fqdn_subdomain = "team1" default_node_pool { name = "system" node_count = 1 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" } }Ikuti langkah-langkah untuk menginisialisasi Terraform, memformat dan memvalidasi konfigurasi Terraform, membuat rencana eksekusi Terraform, menerapkan konfigurasi Terraform, dan menyambungkan ke kluster AKS.
Memperbarui kluster AKS privat yang ada dari zona DNS privat ke publik
Anda hanya dapat memperbarui dari byo (bawa milik Anda sendiri) atau system ke none. Tidak ada kombinasi lain dari nilai pembaruan yang didukung.
Peringatan
Saat Anda memperbarui kluster privat dari byo atau system ke none, simpul agen berubah untuk menggunakan FQDN publik. Dalam kluster AKS yang menggunakan Azure Virtual Machine Scale Sets, pembaruan gambar node dilakukan untuk memperbarui node dengan FQDN publik.
Perbarui kluster privat dari byo atau system ke none menggunakan perintah az aks update dengan parameter --private-dns-zone diatur ke none.
az aks update \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--private-dns-zone none
Tambahkan kode berikut ke yang sudah ada
main.tfuntuk memperbarui kluster AKS privat dari zona DNS privat ke publik. Contoh ini menggunakan jaringan tingkat lanjut. Anda dapat memodifikasinya untuk menggunakan jaringan dasar default dengan mengubah sumber daya dan parameter Terraform yang relevan.resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "aks-update" private_cluster_enabled = true private_dns_zone_id = "None" default_node_pool { name = "system" node_count = 1 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" } }Terapkan konfigurasi Terraform yang telah diperbarui menggunakan perintah
terraform plandanterraform apply.terraform plan terraform apply
Menginisialisasi Terraform
Inisialisasi Terraform di direktori yang berisi file main.tf Anda menggunakan perintah terraform init. Perintah ini mengunduh penyedia Azure yang diperlukan untuk mengelola sumber daya Azure dengan Terraform.
terraform init
Memformat dan memvalidasi konfigurasi Terraform
Format dan validasi konfigurasi Terraform menggunakan perintah terraform fmt dan terraform validate.
terraform fmt
terraform validate
Buat rencana pelaksanaan Terraform
Buat rencana eksekusi Terraform menggunakan terraform plan perintah . Perintah ini menunjukkan kepada Anda sumber daya yang akan dibuat atau dimodifikasi oleh Terraform di langganan Azure Anda.
terraform plan -var="subscription_id=<your-subscription-id>"
Menerapkan konfigurasi Terraform
Setelah meninjau dan mengonfirmasi rencana eksekusi, terapkan konfigurasi Terraform menggunakan terraform apply perintah . Perintah ini membuat atau memodifikasi sumber daya yang ditentukan dalam file main.tf Anda di langganan Azure Anda.
terraform apply -var="subscription_id=<your-subscription-id>"
Mengonfigurasi kubectl untuk menyambungkan ke kluster AKS privat
Untuk mengelola kluster Kubernetes, gunakan klien baris perintah Kube, kubectl.
kubectl sudah diinstal jika Anda menggunakan Azure Cloud Shell. Untuk menginstal kubectl secara lokal, gunakan az aks install-cli perintah .
Konfigurasikan
kubectluntuk terhubung ke kluster Kubernetes menggunakan perintahaz aks get-credentials. Perintah ini mengunduh kredensial dan mengonfigurasi CLI Kubernetes untuk menggunakannya.az aks get-credentials --resource-group <private-cluster-resource-group> --name <private-cluster-name>Verifikasi koneksi ke kluster Anda menggunakan
kubectl getperintah . Perintah ini menampilkan daftar node kluster.kubectl get nodesPerintah mengembalikan output yang mirip dengan contoh output berikut:
NAME STATUS ROLES AGE VERSION aks-nodepool1-12345678-vmss000000 Ready agent 3h6m v1.15.11 aks-nodepool1-12345678-vmss000001 Ready agent 3h6m v1.15.11 aks-nodepool1-12345678-vmss000002 Ready agent 3h6m v1.15.11