Membuat kluster Azure Kubernetes Service (AKS) privat

Dalam kluster privat, sarana kontrol atau server API memiliki alamat IP internal yang didefinisikan dalam dokumen RFC1918 - Alokasi Alamat untuk Internet Privat. Dengan menggunakan cluster privat, Anda dapat memastikan lalu lintas jaringan antara server API dan kumpulan node Anda tetap di jaringan privat saja.

Sarana kontrol atau server API berada dalam grup sumber daya Azure yang dikelola Azure Kubernetes Service (AKS). 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 menyediakan kluster AKS privat, AKS secara default membuat FQDN privat dengan zona DNS privat dan FQDN publik tambahan dengan catatan A yang sesuai di DNS publik Azure. Simpul agen terus menggunakan catatan A di zona DNS privat untuk menyelesaikan alamat IP privat titik akhir privat untuk komunikasi ke server API.

Tujuan artikel ini adalah untuk membantu Anda menyebarkan kluster AKS berbasis tautan privat. Jika Anda tertarik untuk membuat kluster AKS tanpa tautan atau terowongan privat yang diperlukan, lihat membuat kluster Azure Kubernetes Service dengan Integrasi VNet API Server (pratinjau).

Ketersediaan wilayah

Kluster privat tersedia di wilayah publik, Azure Government, dan Microsoft Azure yang dioperasikan oleh wilayah 21Vianet tempat AKS didukung.

Prasyarat

  • Azure CLI versi 2.28.0 dan yang lebih tinggi. Jalankan az --version untuk menemukan versi, dan jalankan az upgrade untuk meningkatkan versi. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.
  • aks-preview Ekstensi 0.5.29 atau lebih tinggi.
  • Jika menggunakan Azure Resource Manager (ARM) atau Azure REST API, versi AKS API harus 2021-05-01 atau lebih tinggi.
  • Layanan Azure Private Link hanya didukung pada Azure Load Balancer Standar. Azure Load Balancer Dasar tidak didukung.
  • 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.

Catatan

Kumpulan simpul Azure Linux sekarang tersedia secara umum (GA). Untuk mempelajari tentang manfaat dan langkah-langkah penyebaran, lihat Pengantar Host Kontainer Azure Linux untuk AKS.

Batasan

  • Rentang resmi IP tidak dapat diterapkan ke titik akhir server API privat, rentang tersebut hanya berlaku untuk server API publik
  • 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 Dihosting Sendiri.
  • Jika Anda perlu mengaktifkan Azure Container Registry untuk bekerja dengan kluster AKS privat, siapkan tautan privat untuk registri kontainer di jaringan virtual kluster atau atur peering antara jaringan virtual Container Registry dan kluster privat jaringan virtual.
  • Tidak ada dukungan untuk mengonversi kluster AKS yang ada menjadi kluster privat.
  • Menghapus atau memodifikasi titik akhir privat di subnet pelanggan akan menyebabkan kluster berhenti berfungsi.

Membuat kluster AKS privat

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 -l eastus -n myResourceGroup

Jaringan dasar default

Buat kluster privat dengan jaringan dasar default menggunakan az aks create perintah dengan --enable-private-cluster bendera .

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster  

Jaringan tingkat lanjut

Buat kluster privat dengan jaringan tingkat lanjut menggunakan az aks create perintah dengan bendera berikut:

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 10.2.0.10 \
    --service-cidr 10.2.0.0/24 

Menggunakan domain kustom

Jika Anda ingin mengonfigurasi domain kustom yang hanya dapat diselesaikan secara internal, lihat Menggunakan domain kustom.

Menonaktifkan FQDN publik

Menonaktifkan FQDN publik pada kluster AKS baru

Nonaktifkan FQDN publik saat membuat kluster AKS privat menggunakan --disable-public-fqdn bendera .

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <private-dns-zone-mode> --disable-public-fqdn

Menonaktifkan FQDN publik pada kluster yang ada

Nonaktifkan FQDN publik pada kluster AKS yang ada menggunakan az aks update perintah dengan --disable-public-fqdn bendera .

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

Mengonfigurasi zona DNS privat

Anda dapat mengonfigurasi zona DNS privat menggunakan parameter berikut:

  • system: Ini adalah nilai default. Jika argumen dihilangkan --private-dns-zone , AKS membuat zona DNS privat di grup sumber daya simpul.
  • none: Defaultnya adalah DNS publik. AKS tidak akan membuat zona DNS privat.
  • CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID: Ini mengharuskan Anda membuat zona DNS privat dalam format berikut untuk cloud global Azure: privatelink.<region>.azmk8s.io atau <subzone>.privatelink.<region>.azmk8s.io. Anda akan memerlukan ID sumber daya zona DNS privat untuk digunakan di masa mendatang. Anda juga memerlukan identitas atau perwakilan layanan yang ditetapkan pengguna dengan peran Kontributor Zona DNS Privat dan Kontributor Jaringan. Saat menyebarkan menggunakan integrasi VNet server API, zona DNS privat mendukung format penamaan private.<region>.azmk8s.io atau <subzone>.private.<region>.azmk8s.io.
    • Jika zona DNS privat berada dalam langganan yang berbeda dari kluster AKS, Anda perlu mendaftarkan penyedia Azure Microsoft.ContainerServices di kedua langganan.
    • "fqdn-subdomain" dapat digunakan dengan "CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID" hanya untuk memberikan kemampuan subdomain ke privatelink.<region>.azmk8s.io.
    • Jika kluster AKS Anda dikonfigurasi dengan perwakilan layanan Direktori Aktif, AKS tidak mendukung penggunaan identitas terkelola yang ditetapkan sistem dengan zona DNS privat kustom.
    • Jika Anda menentukan <subzone> ada batas 32 karakter untuk nama tersebut <subzone> .

Catatan

CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID dapat dikonfigurasi menggunakan Templat ARM selain Azure CLI. privateDNSZone menerima resourceID zona DNZ privat seperti yang ditunjukkan dalam contoh berikut:

properties.apiServerAccessProfile.privateDNSZone.
"apiServerAccessProfile": {
"enablePrivateCluster": true,
"privateDNSZone": "system|none|[resourceId(..., 'Microsoft.Network/privateDnsZones', 'privatelink.<region>.azmk8s.io']"
}

Penting

CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID tidak dapat diubah setelah kluster dibuat dan tidak dapat dihapus. Jika tidak, kluster akan mengalami masalah saat melakukan operasi peningkatan.

Membuat kluster AKS privat dengan zona DNS privat

Buat kluster AKS privat dengan zona DNS privat menggunakan az aks create perintah dengan bendera berikut:

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone [system|none]

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 dengan bendera berikut:

# The custom private DNS zone name should be in the following format: "<subzone>.privatelink.<region>.azmk8s.io"

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <custom private dns zone or custom private dns subzone resourceID>

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 dengan bendera berikut:

# The custom private DNS zone name should be in one of the following formats: "privatelink.<region>.azmk8s.io" or "<subzone>.privatelink.<region>.azmk8s.io"

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <custom private dns zone resourceID> --fqdn-subdomain <subdomain>

Memperbarui kluster privat dari zona DNS privat ke publik

Catatan

Fitur ini memerlukan aks-preview versi >ekstensi = 0.5.97

Perbarui kluster privat dari byo atau system ke none menggunakan az aks update perintah dengan bendera berikut:

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

Catatan

Anda hanya dapat memperbarui dari byo atau system ke none. Tidak ada kombinasi lain dari nilai pembaruan yang didukung.

Opsi untuk menyambungkan ke kluster privat

Titik akhir server API tidak memiliki alamat IP publik. Untuk mengelola API server, Anda harus menggunakan VM yang memiliki akses ke Azure Virtual Network (VNet) kluster AKS. Ada beberapa opsi untuk membangun konektivitas jaringan ke kluster privat:

Catatan

Membuat VM di VNet yang sama dengan kluster AKS adalah opsi term mudah. Express Route dan VPN menambah biaya dan memerlukan kompleksitas jaringan tambahan. Peering jaringan virtual mengharuskan Anda merencanakan rentang CIDR jaringan Anda untuk memastikan tidak ada rentang yang tumpang tindih.

Peering jaringan virtual

Peering jaringan virtual adalah salah satu cara untuk mengakses kluster privat Anda. Untuk menggunakan peering jaringan virtual, Anda perlu menyiapkan tautan antara jaringan virtual dan zona DNS privat.

  1. Dari browser Anda, buka portal Microsoft Azure.
  2. Dari portal Azure, buka grup sumber daya simpul.
  3. Pilih zona DNS privat.
  4. Di panel kiri, pilih Jaringan virtual.
  5. Buat tautan baru untuk menambahkan jaringan virtual VM ke zona DNS privat. Dibutuhkan beberapa menit agar tautan zona DNS tersedia.
  6. Di portal Microsoft Azure, navigasi ke grup sumber daya yang berisi jaringan virtual kluster Anda.
  7. Di panel kanan, pilih jaringan virtual. Nama jaringan virtual dalam bentuk aks-vnet-*.
  8. Di panel kiri, pilih Peerings.
  9. Pilih Tambahkan, tambahkan jaringan virtual VM, lalu buat peering. Untuk informasi selengkapnya, lihat Peering jaringan virtual.

Hub dan spoke dengan DNS kustom

Arsitektur hub dan spoke umumnya digunakan untuk menyebarkan jaringan di Azure. Dalam banyak penyebaran ini, pengaturan DNS di VNets spoke dikonfigurasi untuk mereferensikan penerus DNS pusat untuk memungkinkan resolusi DNS lokal dan berbasis Azure. Saat menyebarkan kluster AKS ke lingkungan jaringan seperti itu, ada beberapa pertimbangan khusus:

Private cluster hub and spoke

  • Saat kluster privat disediakan, titik akhir privat (1) dan zona DNS privat (2) dibuat di grup sumber daya yang dikelola kluster secara default. Kluster menggunakan A rekaman di zona privat untuk menyelesaikan IP titik akhir privat untuk komunikasi ke server API.
  • Zona DNS privat hanya ditautkan ke VNet tempat simpul kluster dilampirkan ke (3). Ini berarti bahwa titik akhir privat hanya dapat diselesaikan oleh host di VNet yang ditautkan. Dalam skenario di mana tidak ada DNS kustom yang dikonfigurasi pada VNet (default), ini berfungsi tanpa masalah sebagai titik host di 168.63.129.16 untuk DNS yang dapat menyelesaikan rekaman di zona DNS privat karena tautan.
  • Dalam skenario di mana VNet yang berisi kluster Anda memiliki pengaturan DNS kustom (4), penyebaran kluster gagal kecuali zona DNS privat ditautkan ke VNet yang berisi pemecah masalah DNS kustom (5). Tautan ini dapat dibuat secara manual setelah zona privat dibuat selama penyediaan kluster atau melalui otomatisasi setelah mendeteksi pembuatan zona menggunakan mekanisme penyebaran berbasis peristiwa (misalnya, Azure Event Grid dan Azure Functions). Untuk menghindari kegagalan kluster selama penyebaran awal, kluster dapat disebarkan dengan ID sumber daya zona DNS privat. Ini hanya berfungsi dengan jenis Microsoft.ContainerService/managedCluster sumber daya dan versi 2022-07-01API . Menggunakan versi lama dengan templat ARM atau definisi sumber daya Bicep tidak didukung.

Catatan

Pengalihan kondisional tidak mendukung subdomain.

Catatan

Jika Anda menggunakan bawa tabel rute Anda sendiri dengan kubenet dan bawa DNS Anda sendiri dengan kluster privat, pembuatan kluster akan gagal. Anda perlu mengaitkan RouteTable dalam grup sumber daya simpul ke subnet setelah pembuatan kluster gagal membuat pembuatan berhasil.

Menggunakan koneksi titik akhir privat

Titik akhir privat dapat disiapkan sehingga VNet tidak perlu di-peering untuk berkomunikasi dengan kluster privat. Untuk menggunakan titik akhir privat, buat titik akhir privat baru di jaringan virtual Anda lalu buat tautan antara jaringan virtual Anda dan zona DNS privat baru.

Penting

Jika jaringan virtual dikonfigurasi dengan server DNS kustom, DNS privat perlu diatur dengan tepat untuk lingkungan. Lihat dokumentasi resolusi nama jaringan virtual untuk detail selengkapnya.

Membuat sumber daya titik akhir privat

Buat sumber daya titik akhir privat di VNet Anda:

  1. Dari browser Anda, buka portal Microsoft Azure.
  2. Pada menu portal Microsoft Azure, pilih Buat sumber daya.
  3. Cari Titik Akhir Privat dan pilih Buat >Titik Akhir Privat.
  4. Pilih Buat.
  5. Pada tab Dasar , siapkan opsi berikut ini:
    • Detail proyek:
      • Pilih Langganan Azure.
      • Pilih Grup sumber daya Azure tempat jaringan virtual Anda berada.
    • Detail instans:
      • Masukkan Nama untuk titik akhir privat, seperti myPrivateEndpoint.
      • Pilih Wilayah untuk titik akhir privat.

Penting

Periksa apakah wilayah yang dipilih sama dengan jaringan virtual tempat Anda ingin terhubung, jika tidak, Anda tidak akan melihat jaringan virtual Anda di tab Konfigurasi.

  1. Pilih Berikutnya: Sumber daya dan siapkan opsi berikut:
    • metode Koneksi ion: Pilih Koneksi ke sumber daya Azure di direktori saya.
    • Langganan: Pilih langganan tempat kluster privat Anda berada.
    • Jenis sumber daya: Pilih Microsoft.ContainerService/managedClusters.
    • Sumber Daya: Pilih kluster privat Anda.
    • Sub-sumber daya target: Pilih manajemen.
  2. Pilih Berikutnya: Virtual Network dan siapkan opsi berikut:
    • Jaringan:
      • Jaringan virtual: Pilih jaringan virtual Anda.
      • Subnet: Pilih subnet Anda.
  3. Pilih Berikutnya: DNS>Berikutnya: Tag dan (opsional) menyiapkan nilai kunci sesuai kebutuhan.
  4. Pilih Berikutnya: Tinjau + buat>Buat.

Setelah sumber daya dibuat, rekam alamat IP privat titik akhir privat untuk digunakan di masa mendatang.

Membuat zona DNS privat

Setelah titik akhir privat dibuat, buat zona DNS privat baru dengan nama yang sama dengan zona DNS privat yang dibuat oleh kluster privat:

  1. Buka grup sumber daya simpul di portal Microsoft Azure.
  2. Pilih zona dan catatan DNS privat:
    • Nama zona DNS privat, yang mengikuti pola *.privatelink.<region>.azmk8s.io.
    • Nama A catatan (tidak termasuk nama DNS privat).
    • Time-to-live (TTL).
  3. Di portal Microsoft Azure, pilih Buat sumber daya.
  4. Cari Zona DNS Privat dan pilih Buat > zona DNS Privat.
  5. Pada tab Dasar , siapkan opsi berikut ini:
    • Detail proyek:
      • Pilih Langganan Anda.
      • Pilih Grup sumber daya tempat Anda membuat titik akhir privat.
    • Detail instans:
      • Masukkan Nama zona DNS yang diambil dari langkah-langkah sebelumnya.
      • Wilayah default ke lokasi grup sumber daya Anda.
  6. Pilih Tinjau + buat>Buat.

Membuat A rekaman

Setelah zona DNS privat dibuat, buat A rekaman, yang mengaitkan titik akhir privat ke kluster privat:

  1. Buka zona DNS privat yang Anda buat di langkah-langkah sebelumnya.
  2. Pada halaman Gambaran Umum , pilih Kumpulan catatan.
  3. Pada tab Tambahkan kumpulan catatan, siapkan opsi berikut ini:
    • Nama: Masukkan nama yang diambil dari A rekaman di zona DNS kluster privat.
    • Jenis: Pilih A - Catatan alamat.
    • TTL: Masukkan angka dari A rekaman di zona DNS kluster privat.
    • Unit TTL: Ubah nilai dropdown agar sesuai dengan yang ada di A rekaman dari zona DNS kluster privat.
    • Alamat IP: Masukkan alamat IP titik akhir privat yang Anda buat.

Penting

Saat membuat A rekaman, hanya gunakan nama dan bukan nama domain yang sepenuhnya memenuhi syarat (FQDN).

A Setelah rekaman dibuat, tautkan zona DNS privat ke jaringan virtual yang akan mengakses kluster privat:

  1. Buka zona DNS privat yang Anda buat di langkah-langkah sebelumnya.
  2. Dari panel kiri, pilih Tautan jaringan virtual.
  3. Pilih Tambahkan dan siapkan opsi berikut:
    • Nama tautan: Masukkan nama untuk tautan jaringan virtual Anda.
    • Langganan: Pilih langganan tempat kluster privat Anda berada.
    • Jaringan virtual: Pilih jaringan virtual kluster privat Anda.
  4. Pilih OK untuk membuat tautan.

Mungkin perlu waktu beberapa menit agar operasi selesai. Setelah tautan jaringan virtual dibuat, Anda dapat mengaksesnya dari tab Tautan jaringan virtual yang Anda gunakan di langkah 2.

Peringatan

Jika kluster privat dihentikan dan dimulai ulang, layanan tautan privat asli kluster privat dihapus dan dibuat ulang, yang merusak koneksi antara titik akhir privat Anda dan kluster privat. Untuk mengatasi masalah ini, hapus dan buat ulang titik akhir privat yang dibuat pengguna yang ditautkan ke kluster privat. Jika titik akhir privat yang dibuat ulang memiliki alamat IP baru, Anda juga perlu memperbarui catatan DNS.

Langkah berikutnya

Untuk praktik terbaik terkait, lihat Praktik terbaik untuk konektivitas dan keamanan jaringan di AKS.