Menyiapkan nama domain kustom dan sertifikat SSL dengan add-on perutean aplikasi
Ingress adalah objek API yang menentukan aturan, yang memungkinkan akses eksternal ke layanan di kluster Azure Kubernetes Service (AKS). Saat Anda membuat objek Ingress yang menggunakan kelas nginx Ingress perutean aplikasi, add-on membuat, mengonfigurasi, dan mengelola satu atau beberapa pengontrol Ingress di kluster AKS Anda.
Artikel ini memperlihatkan kepada Anda cara menyiapkan konfigurasi Ingress tingkat lanjut untuk mengenkripsi lalu lintas dengan sertifikat SSL/TLS yang disimpan di Azure Key Vault, dan menggunakan Azure DNS untuk mengelola zona DNS.
Add-on perutean aplikasi dengan nginx memberikan hal berikut:
- Konfigurasi mudah pengontrol nginx Ingress terkelola.
- Integrasi dengan DNS eksternal seperti Azure DNS untuk manajemen zona global dan privat
- Penghentian SSL dengan sertifikat yang disimpan dalam brankas kunci, seperti Azure Key Vault.
- Kluster AKS dengan add-on perutean aplikasi.
- Azure Key Vault jika Anda ingin mengonfigurasi penghentian SSL dan menyimpan sertifikat di vault yang dihosting di Azure.
- Azure DNS jika Anda ingin mengonfigurasi manajemen zona global dan privat dan menghostingnya di Azure.
- Untuk melampirkan Azure Key Vault atau Azure DNS Zone, Anda memerlukan peran Pemilik, administrator akun Azure, atau administrator bersama Azure di langganan Azure Anda.
- Semua Zona DNS publik harus berada dalam langganan dan Grup Sumber Daya yang sama.
Untuk menyambungkan ke kluster Kubernetes dari komputer lokal, Anda menggunakan kubectl
, klien baris perintah Kubernetes. Anda dapat menginstalnya secara lokal menggunakan perintah az aks install-cli . Jika Anda menggunakan Azure Cloud Shell, kubectl
sudah terpasang.
Konfigurasikan kubectl untuk terhubung ke kluster Kubernetes menggunakan az aks get-credentials
perintah .
az aks get-credentials --resource-group <ResourceGroupName> --name <ClusterName>
Untuk mengaktifkan dukungan untuk lalu lintas HTTPS, lihat prasyarat berikut:
- Sertifikat SSL. Jika Anda tidak memilikinya, Anda dapat membuat sertifikat.
Catatan
Jika Anda sudah memiliki Azure Key Vault, Anda dapat melewati langkah ini.
Buat Azure Key Vault menggunakan az keyvault create
perintah .
az keyvault create --resource-group <ResourceGroupName> --location <Location> --name <KeyVaultName> --enable-rbac-authorization true
Untuk pengujian, Anda dapat menggunakan sertifikat publik yang ditandatangani sendiri alih-alih sertifikat yang ditandatangani Otoritas Sertifikat (CA). Jika Anda sudah memiliki sertifikat, Anda dapat melewati langkah ini.
Perhatian
Sertifikat yang ditandatangani sendiri adalah sertifikat digital yang tidak ditandatangani oleh CA pihak ketiga tepercaya. Sertifikat yang ditandatangani sendiri dibuat, dikeluarkan, dan ditandatangani oleh perusahaan atau pengembang yang bertanggung jawab atas situs web atau perangkat lunak yang ditandatangani. Inilah sebabnya mengapa sertifikat yang ditandatangani sendiri dianggap tidak aman untuk situs web dan aplikasi yang menghadap publik. Azure Key Vault memiliki kemitraan tepercaya dengan beberapa Otoritas Sertifikat.
Buat sertifikat SSL yang ditandatangani sendiri untuk digunakan dengan Ingress menggunakan
openssl req
perintah . Pastikan Anda mengganti<Hostname>
dengan nama DNS yang Anda gunakan.openssl req -new -x509 -nodes -out aks-ingress-tls.crt -keyout aks-ingress-tls.key -subj "/CN=<Hostname>" -addext "subjectAltName=DNS:<Hostname>"
Ekspor sertifikat SSL dan lewati perintah kata sandi menggunakan
openssl pkcs12 -export
perintah .openssl pkcs12 -export -in aks-ingress-tls.crt -inkey aks-ingress-tls.key -out aks-ingress-tls.pfx
Impor sertifikat SSL ke Azure Key Vault menggunakan az keyvault certificate import
perintah . Jika sertifikat Anda dilindungi kata sandi, Anda dapat meneruskan kata sandi melalui --password
bendera.
az keyvault certificate import --vault-name <KeyVaultName> --name <KeyVaultCertificateName> --file aks-ingress-tls.pfx [--password <certificate password if specified>]
Penting
Untuk mengaktifkan add-on untuk memuat ulang sertifikat dari Azure Key Vault saat berubah, Anda harus mengaktifkan fitur rotasi otomatis rahasia driver Secret Store CSI dengan argumen --enable-secret-rotation
. Ketika autorotasi diaktifkan, driver memperbarui pemasangan pod dan rahasia Kubernetes dengan polling untuk perubahan secara berkala, berdasarkan interval polling rotasi yang Anda tentukan. Interval polling rotasi default adalah dua menit.
Pada kluster dengan add-on perutean aplikasi diaktifkan, gunakan az aks approuting update
perintah menggunakan --enable-kv
argumen dan --attach-kv
untuk mengaktifkan penyedia Azure Key Vault untuk Secrets Store CSI Driver dan terapkan penetapan peran yang diperlukan.
Azure Key Vault menawarkan dua sistem otorisasi: Kontrol akses berbasis peran Azure (Azure RBAC), yang beroperasi pada bidang manajemen, dan model kebijakan akses, yang beroperasi pada bidang manajemen dan bidang data. --attach-kv
Operasi akan memilih model akses yang sesuai untuk digunakan.
Catatan
az aks approuting update --attach-kv
Perintah menggunakan izin pengguna yang menjalankan perintah untuk membuat penetapan peran Azure Key Vault. Peran ini ditetapkan ke identitas terkelola add-on. Untuk informasi selengkapnya tentang identitas terkelola AKS, lihat Ringkasan identitas terkelola.
Ambil ID sumber daya Azure Key Vault.
KEYVAULTID=$(az keyvault show --name <KeyVaultName> --query "id" --output tsv)
Kemudian perbarui add-on perutean aplikasi untuk mengaktifkan driver CSI penyimpanan rahasia Azure Key Vault dan terapkan penetapan peran.
az aks approuting update --resource-group <ResourceGroupName> --name <ClusterName> --enable-kv --attach-kv ${KEYVAULTID}
Untuk mengaktifkan dukungan untuk zona DNS, tinjau prasyarat berikut:
- Add-on perutean aplikasi dapat dikonfigurasi untuk membuat rekaman secara otomatis di satu atau beberapa zona DNS global dan privat Azure untuk host yang ditentukan pada sumber daya Ingress. Semua zona Azure DNS global harus berada dalam grup sumber daya yang sama, dan semua zona Azure DNS privat harus berada dalam grup sumber daya yang sama. Jika Anda tidak memiliki zona Azure DNS, Anda bisa membuatnya.
Catatan
Jika Anda sudah memiliki Zona Azure DNS, Anda bisa melewati langkah ini.
Buat zona Azure DNS menggunakan
az network dns zone create
perintah .az network dns zone create --resource-group <ResourceGroupName> --name <ZoneName>
Catatan
Perintah az aks approuting zone add
menggunakan izin pengguna yang menjalankan perintah untuk membuat penetapan peran Zona Azure DNS. Peran ini ditetapkan ke identitas terkelola add-on. Untuk informasi selengkapnya tentang identitas terkelola AKS, lihat Ringkasan identitas terkelola.
Ambil ID sumber daya untuk zona DNS menggunakan
az network dns zone show
perintah dan atur output ke variabel bernama ZONEID.ZONEID=$(az network dns zone show --resource-group <ResourceGroupName> --name <ZoneName> --query "id" --output tsv)
Perbarui add-on untuk mengaktifkan integrasi dengan Azure DNS menggunakan
az aks approuting zone
perintah . Anda dapat meneruskan daftar ID sumber daya zona DNS yang dipisahkan koma.az aks approuting zone add --resource-group <ResourceGroupName> --name <ClusterName> --ids=${ZONEID} --attach-zones
Add-on perutean aplikasi membuat kelas Ingress pada kluster bernama webapprouting.kubernetes.azure.com. Saat Anda membuat objek Ingress dengan kelas ini, objek tersebut akan mengaktifkan add-on.
Dapatkan URI sertifikat untuk digunakan di Ingress dari Azure Key Vault menggunakan
az keyvault certificate show
perintah .az keyvault certificate show --vault-name <KeyVaultName> --name <KeyVaultCertificateName> --query "id" --output tsv
Contoh output berikut menunjukkan URI sertifikat yang dikembalikan dari perintah:
https://KeyVaultName.vault.azure.net/certificates/KeyVaultCertificateName/ea62e42260f04f17a9309d6b87aceb44
Salin manifes YAML berikut ke dalam file baru bernama ingress.yaml dan simpan file ke komputer lokal Anda.
Perbarui
<Hostname>
dengan nama host DNS Anda dan<KeyVaultCertificateUri>
dengan URI yang dikembalikan dari perintah untuk mengkueri Azure Key Vault pada langkah 1 di atas. Nilai string untuk*<KeyVaultCertificateUri>*
hanya boleh menyertakanhttps://yourkeyvault.vault.azure.net/certificates/certname
. Versi Sertifikat di akhir string URI harus dihilangkan untuk mendapatkan versi saat ini.Kunci
secretName
di bagiantls
menentukan nama rahasia yang berisi sertifikat untuk sumber daya Ingress ini. Sertifikat ini disajikan di browser ketika klien menelusuri KE URL yang ditentukan dalam<Hostname>
kunci. Pastikan bahwa nilaisecretName
sama dengankeyvault-
diikuti dengan nilai nama sumber daya Ingress (darimetadata.name
). Dalam contoh YAML,secretName
harus sama dengankeyvault-<your Ingress name>
.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: kubernetes.azure.com/tls-cert-keyvault-uri: <KeyVaultCertificateUri> name: aks-helloworld namespace: hello-web-app-routing spec: ingressClassName: webapprouting.kubernetes.azure.com rules: - host: <Hostname> http: paths: - backend: service: name: aks-helloworld port: number: 80 path: / pathType: Prefix tls: - hosts: - <Hostname> secretName: keyvault-<your ingress name>
Buat sumber daya kluster menggunakan
kubectl apply
perintah .kubectl apply -f ingress.yaml -n hello-web-app-routing
Contoh output berikut menunjukkan sumber daya yang dibuat:
Ingress.networking.k8s.io/aks-helloworld created
Anda dapat memverifikasi bahwa Ingress terkelola dibuat menggunakan kubectl get ingress
perintah .
kubectl get ingress -n hello-web-app-routing
Contoh output berikut menunjukkan Ingress terkelola yang dibuat:
NAME CLASS HOSTS ADDRESS PORTS AGE
aks-helloworld webapprouting.kubernetes.azure.com myapp.contoso.com 20.51.92.19 80, 443 4m
Pelajari tentang memantau metrik pengontrol Ingress-nginx yang disertakan dengan add-on perutean aplikasi dengan Prometheus di Grafana sebagai bagian dari menganalisis performa dan penggunaan aplikasi Anda.
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: