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.
Dalam artikel ini, Anda belajar cara mengonfigurasi cluster Azure Kubernetes Service (AKS) untuk menggunakan proxy HTTP guna akses internet keluar.
Klaster AKS yang diterapkan ke jaringan virtual yang dikelola atau kustom memiliki ketergantungan keluar tertentu yang diperlukan untuk berfungsi dengan baik, yang menimbulkan masalah di lingkungan yang memerlukan akses internet melalui proxy HTTP. Node tidak memiliki cara untuk memulai konfigurasi, variabel lingkungan, dan sertifikat yang diperlukan untuk mengakses layanan internet.
Fitur proxy HTTP menambahkan dukungan proxy HTTP ke dalam klaster AKS, menghadirkan antarmuka yang mudah digunakan yang dapat Anda gunakan untuk mengamankan lalu lintas jaringan yang diperlukan oleh AKS dalam lingkungan yang bergantung pada proxy. Dengan fitur ini, baik node AKS maupun pod dikonfigurasi untuk menggunakan proxy HTTP. Fitur ini juga memungkinkan penginstalan otoritas sertifikat tepercaya pada simpul sebagai bagian dari proses bootstrapping kluster. Solusi yang lebih kompleks mungkin memerlukan pembuatan rantai kepercayaan untuk membangun komunikasi yang aman di seluruh jaringan.
Batasan dan pertimbangan
Skenario berikut tidak didukung:
- Konfigurasi proxy yang berbeda untuk setiap kolam node
- Autentikasi Pengguna/Kata Sandi
- Otoritas sertifikat khusus untuk komunikasi server API
- Kluster AKS dengan kumpulan node Windows
- Pool node menggunakan Kumpulan Ketersediaan Mesin Virtual (VMAS)
- Menggunakan * sebagai wildcard yang terlampir pada akhiran domain untuk noProxy.
httpProxy, httpsProxy, dan trustedCa tidak memiliki nilai secara default. Pod disuntik dengan variabel lingkungan berikut:
HTTP_PROXYhttp_proxyHTTPS_PROXYhttps_proxyNO_PROXYno_proxy
Untuk menonaktifkan injeksi variabel lingkungan proksi, Anda perlu membuat anotasi Pod dengan "kubernetes.azure.com/no-http-proxy-vars":"true".
Sebelum Anda memulai
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai menggunakan Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah az login. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Mengautentikasi ke Azure menggunakan Azure CLI.
Saat diminta, instal ekstensi Azure CLI saat pertama kali digunakan. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan dan mengelola ekstensi dengan Azure CLI.
Jalankan az version untuk menemukan versi dan pustaka dependen yang terinstal. Untuk meng-upgrade ke versi terbaru, jalankan az upgrade.
Membuat file konfigurasi dengan nilai proksi HTTP
Buat file dan berikan nilai untuk httpProxy, httpsProxy, dan noProxy. Jika lingkungan Anda memerlukannya, berikan nilai untuk trustedCa.
Skema untuk berkas konfigurasi terlihat seperti ini:
{
"httpProxy": "string",
"httpsProxy": "string",
"noProxy": [
"string"
],
"trustedCa": "string"
}
Tinjau persyaratan untuk setiap parameter:
-
httpProxy: URL proxy untuk digunakan dalam membuat koneksi HTTP di luar kluster. Skema URL harushttp. -
httpsProxy: URL proxy untuk digunakan dalam membuat koneksi HTTPS di luar kluster. Jika tidak ditentukan, makahttpProxydigunakan untuk koneksi HTTP dan HTTPS. -
noProxy: Daftar nama domain tujuan, domain, alamat IP, atau CIDR jaringan lainnya yang dikecualikan dari penggunaan proksi. -
trustedCa: Sebuah string yang berisi konten sertifikat CA alternatifbase64 encoded. Saat ini hanya formatPEMyang didukung.
Penting
Untuk kompatibilitas dengan komponen berbasis Go yang merupakan bagian dari sistem Kubernetes, sertifikat harus mendukung Subject Alternative Names(SANs) alih-alih sertifikat Common Name yang sudah usang.
Ada perbedaan dalam aplikasi tentang cara mematuhi variabel lingkungan http_proxy, https_proxy, dan no_proxy. Curl dan Python tidak mendukung CIDR di no_proxy, tetapi Ruby mendukungnya.
Contoh masukan:
{
"httpProxy": "http://myproxy.server.com:8080",
"httpsProxy": "https://myproxy.server.com:8080",
"noProxy": [
"localhost",
"127.0.0.1"
],
"trustedCA": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUgvVENDQmVXZ0F3SUJB...S0tLS0="
}
Membuat kluster dengan konfigurasi proksi HTTP menggunakan Azure CLI
Anda dapat mengonfigurasi kluster AKS dengan konfigurasi proksi HTTP selama pembuatan kluster.
Gunakan perintah
az aks createdan teruskan konfigurasi Anda sebagai file JSON.az aks create \ --name $clusterName \ --resource-group $resourceGroup \ --http-proxy-config aks-proxy-config.json \ --generate-ssh-keysKluster Anda harus diinisialisasi dengan proxy HTTP yang dikonfigurasi pada node.
Verifikasi bahwa konfigurasi proksi HTTP ada pada pod dan simpul dengan memeriksa apakah variabel lingkungan berisi nilai yang sesuai untuk
http_proxy,https_proxy, danno_proxydengan menggunakan perintahkubectl describe pod.kubectl describe {any pod} -n kube-systemUntuk memvalidasi apakah variabel proksi sudah disetel dalam pod, Anda dapat memeriksa variabel lingkungan yang ada pada node.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Memperbarui konfigurasi proksi HTTP
Anda dapat memperbarui konfigurasi proksi HTTP pada kluster yang ada, termasuk:
- Memperbarui kluster yang ada untuk mengaktifkan proksi HTTP dan menambahkan konfigurasi proksi HTTP baru.
- Memperbarui kluster yang ada untuk mengubah konfigurasi proksi HTTP.
Pertimbangan pembaruan proksi HTTP
Parameter --http-proxy-config harus diatur ke file JSON baru dengan nilai yang diperbarui untuk httpProxy, httpsProxy, noProxy, dan trustedCa jika perlu. Pembaruan ini menyuntikkan variabel lingkungan baru ke dalam pod dengan nilai httpProxy, httpsProxy, atau noProxy yang baru. Pod harus diputar agar aplikasi dapat mengambilnya, karena nilai variabel lingkungan disuntikkan oleh webhook penerimaan yang bermutasi.
Catatan
Jika beralih ke proxy baru, proxy baru tersebut harus sudah ada agar pembaruan berhasil dilakukan. Setelah pembaruan selesai, Anda dapat menghapus proxy lama.
Memperbarui kluster untuk memperbarui atau mengaktifkan proksi HTTP
Aktifkan atau perbarui konfigurasi proksi HTTP pada kluster yang ada menggunakan
az aks updateperintah .Misalnya, mari kita katakan Anda membuat file baru dengan string yang dikodekan base64 dari sertifikat CA baru yang disebut aks-proxy-config-2.json. Anda dapat memperbarui konfigurasi proxy di klaster Anda dengan perintah berikut:
az aks update --name $clusterName --resource-group $resourceGroup --http-proxy-config aks-proxy-config-2.json
Perhatian
AKS secara otomatis menggambar ulang citra semua kumpulan simpul dalam kluster ketika Anda memperbarui konfigurasi proksi pada kluster Anda menggunakan perintah az aks update. Anda dapat menggunakan Pod Disruption Budgets (PDB) untuk melindungi gangguan pada pod penting selama reimage.
Verifikasi bahwa konfigurasi proksi HTTP ada pada pod dan simpul dengan memeriksa apakah variabel lingkungan berisi nilai yang sesuai untuk
http_proxy,https_proxy, danno_proxydengan menggunakan perintahkubectl describe pod.kubectl describe {any pod} -n kube-systemUntuk memvalidasi apakah variabel proksi sudah disetel dalam pod, Anda dapat memeriksa variabel lingkungan yang ada pada node.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Menonaktifkan proksi HTTP pada kluster yang ada (Pratinjau)
Pasang aks-preview ekstensi
aks-previewInstal ekstensi Azure CLI menggunakanaz extension addperintah .Penting
Fitur pratinjau AKS tersedia atas dasar layanan mandiri dan pendaftaran sukarela. Pratinjau disediakan "apa adanya" dan "sebagaimana tersedia," dan pratinjau tersebut dikecualikan dari perjanjian tingkat layanan (SLA) serta garansi terbatas. Pratinjau AKS sebagian didukung oleh dukungan pelanggan berdasarkan upaya terbaik yang dapat dilakukan. Dengan demikian, fitur-fitur ini tidak dimaksudkan untuk penggunaan produksi. Untuk informasi lebih lanjut, lihat artikel dukungan berikut ini:
az extension add --name aks-previewPerbarui ke versi terbaru ekstensi menggunakan
az extension updateperintah . Nonaktifkan Proksi HTTP memerlukan minimal 18.0.0b13.az extension update --name aks-preview
Mendaftarkan DisableHTTPProxyPreview penanda fitur
Daftarkan penanda fitur
DisableHTTPProxyPreviewmenggunakan perintahaz feature register.az feature register --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewVerifikasi status pendaftaran menggunakan
az feature showperintah . Dibutuhkan beberapa menit agar status menampilkan Terdaftar.az feature show --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewSaat status mencerminkan Terdaftar, perbarui registrasi penyedia sumber daya Microsoft.ContainerService menggunakan perintah
az provider register.az provider register --namespace Microsoft.ContainerService
Memperbarui kluster untuk menonaktifkan proksi HTTP (pratinjau)
Perbarui kluster Anda untuk menonaktifkan proksi HTTP menggunakan
az aks updateperintah dengan--disable-http-proxybendera.az aks update --name $clusterName --resource-group $resourceGroup --disable-http-proxy
Perhatian
AKS secara otomatis menggambar ulang citra semua kumpulan simpul dalam kluster ketika Anda memperbarui konfigurasi proksi pada kluster Anda menggunakan perintah az aks update. Anda dapat menggunakan Pod Disruption Budgets (PDB) untuk melindungi gangguan pada pod penting selama reimage.
Memastikan proksi HTTP dinonaktifkan dengan memvalidasi bahwa konfigurasi proksi HTTP tidak disetel pada pod dan node menggunakan perintah
kubectl describe pod.kubectl describe {any pod} -n kube-systemUntuk memastikan variabel proksi belum diatur dalam pod, Anda dapat memeriksa variabel lingkungan yang ada pada node.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Mengaktifkan kembali proksi HTTP pada kluster yang ada
Saat Anda membuat kluster, proksi HTTP diaktifkan secara default. Setelah Anda menonaktifkan proksi HTTP pada kluster, konfigurasi proksi disimpan dalam database tetapi variabel proksi dihapus dari pod dan simpul.
Untuk mengaktifkan kembali proksi HTTP pada kluster yang ada, gunakan perintah az aks update dengan opsi --enable-http-proxy.
az aks update --name $clusterName --resource-group $resourceGroup --enable-http-proxy
Perhatian
AKS secara otomatis menggambar ulang citra semua kumpulan simpul dalam kluster ketika Anda memperbarui konfigurasi proksi pada kluster Anda menggunakan perintah az aks update. Anda dapat menggunakan Pod Disruption Budgets (PDB) untuk melindungi gangguan pada pod penting selama reimage.
Penting
Jika Anda memiliki konfigurasi proksi HTTP pada kluster Anda sebelum menonaktifkan, konfigurasi proksi HTTP yang ada secara otomatis berlaku saat Anda mengaktifkan kembali proksi HTTP pada kluster tersebut. Sebaiknya verifikasi konfigurasi untuk memastikan konfigurasi memenuhi persyaratan Anda saat ini sebelum melanjutkan. Jika Anda ingin mengubah konfigurasi proksi HTTP setelah mengaktifkan kembali proksi HTTP, ikuti langkah-langkah untuk Memperbarui konfigurasi proksi HTTP pada kluster yang ada.
Mengonfigurasi konfigurasi proksi HTTP menggunakan templat Azure Resource Manager (ARM)
Anda dapat meng-deploy kluster AKS dengan proxy HTTP menggunakan template ARM.
Tinjau persyaratan untuk setiap parameter:
-
httpProxy: URL proxy untuk digunakan dalam membuat koneksi HTTP di luar kluster. Skema URL harushttp. -
httpsProxy: URL proxy untuk digunakan dalam membuat koneksi HTTPS di luar kluster. Jika tidak ditentukan, makahttpProxydigunakan untuk koneksi HTTP dan HTTPS. -
noProxy: Daftar nama domain tujuan, domain, alamat IP, atau CIDR jaringan lainnya yang dikecualikan dari penggunaan proksi. -
trustedCa: Sebuah string yang berisi konten sertifikat CA alternatifbase64 encoded. Saat ini hanya formatPEMyang didukung.
Penting
Untuk kompatibilitas dengan komponen berbasis Go yang merupakan bagian dari sistem Kubernetes, sertifikat harus mendukung
Subject Alternative Names (SANs)alih-alih sertifikat Common Name yang sudah usang.Ada perbedaan dalam aplikasi tentang cara mematuhi variabel lingkungan
http_proxy,https_proxy, danno_proxy. Curl dan Python tidak mendukung CIDR dino_proxy, tetapi Ruby mendukungnya.-
Buat templat dengan parameter proksi HTTP. Dalam template Anda, berikan nilai untuk
httpProxy,httpsProxy, dannoProxy. Jika diperlukan, berikan nilai untuktrustedCa. Skema yang sama yang digunakan untuk deployment CLI ada dalam definisiMicrosoft.ContainerService/managedClustersdi bawah"properties", seperti yang ditunjukkan pada contoh berikut:"properties": { ..., "httpProxyConfig": { "enabled": "true", "httpProxy": "string", "httpsProxy": "string", "noProxy": [ "string" ], "trustedCa": "string" } }Sebarkan templat ARM Anda dengan konfigurasi Proksi HTTP. Kluster Anda harus diinisialisasi dengan proxy HTTP Anda dikonfigurasi pada node.
Memperbarui konfigurasi proksi HTTP
Anda dapat memperbarui konfigurasi proksi HTTP pada kluster yang ada, termasuk:
- Memperbarui kluster yang ada untuk mengaktifkan proksi HTTP dan menambahkan konfigurasi proksi HTTP baru.
- Memperbarui kluster yang ada untuk mengubah konfigurasi proksi HTTP.
Pertimbangan pembaruan proksi HTTP
Parameter --http-proxy-config harus diatur ke file JSON baru dengan nilai yang diperbarui untuk httpProxy, httpsProxy, noProxy, dan trustedCa jika perlu. Pembaruan ini menyuntikkan variabel lingkungan baru ke dalam pod dengan nilai httpProxy, httpsProxy, atau noProxy yang baru. Pod harus diputar agar aplikasi dapat mengambilnya, karena nilai variabel lingkungan disuntikkan oleh webhook penerimaan yang bermutasi.
Catatan
Jika beralih ke proxy baru, proxy baru tersebut harus sudah ada agar pembaruan berhasil dilakukan. Setelah pembaruan selesai, Anda dapat menghapus proxy lama.
Memperbarui templat ARM untuk mengonfigurasi proksi HTTP
Di templat Anda, berikan nilai baru untuk
httpProxy, ,httpsProxydannoProxy. Jika diperlukan, berikan nilai untuktrustedCa.Skema yang sama yang digunakan untuk deployment CLI ada dalam definisi
Microsoft.ContainerService/managedClustersdi bawah"properties", seperti yang ditunjukkan pada contoh berikut:"properties": { ..., "httpProxyConfig": { "enabled": "true", "httpProxy": "string", "httpsProxy": "string", "noProxy": [ "string" ], "trustedCa": "string" } }Sebarkan templat ARM Anda dengan konfigurasi Proksi HTTP yang diperbarui.
Perhatian
AKS secara otomatis menggambar ulang citra semua kumpulan simpul dalam kluster ketika Anda memperbarui konfigurasi proksi pada kluster Anda menggunakan perintah az aks update. Anda dapat menggunakan Pod Disruption Budgets (PDB) untuk melindungi gangguan pada pod penting selama reimage.
Verifikasi bahwa konfigurasi proksi HTTP ada pada pod dan simpul dengan memeriksa apakah variabel lingkungan berisi nilai yang sesuai untuk
http_proxy,https_proxy, danno_proxydengan menggunakan perintahkubectl describe pod.kubectl describe {any pod} -n kube-systemUntuk memvalidasi apakah variabel proksi sudah disetel dalam pod, Anda dapat memeriksa variabel lingkungan yang ada pada node.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Menonaktifkan proksi HTTP pada kluster yang ada menggunakan templat ARM (Pratinjau)
Pasang aks-preview ekstensi
aks-previewInstal ekstensi Azure CLI menggunakanaz extension addperintah .Penting
Fitur pratinjau AKS tersedia atas dasar layanan mandiri dan pendaftaran sukarela. Pratinjau disediakan "apa adanya" dan "sebagaimana tersedia," dan pratinjau tersebut dikecualikan dari perjanjian tingkat layanan (SLA) serta garansi terbatas. Pratinjau AKS sebagian didukung oleh dukungan pelanggan berdasarkan upaya terbaik yang dapat dilakukan. Dengan demikian, fitur-fitur ini tidak dimaksudkan untuk penggunaan produksi. Untuk informasi lebih lanjut, lihat artikel dukungan berikut ini:
az extension add --name aks-previewPerbarui ke versi terbaru ekstensi menggunakan
az extension updateperintah . Nonaktifkan Proksi HTTP memerlukan minimal 18.0.0b13.az extension update --name aks-preview
Mendaftarkan DisableHTTPProxyPreview penanda fitur
Daftarkan penanda fitur
DisableHTTPProxyPreviewmenggunakan perintahaz feature register.az feature register --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewVerifikasi status pendaftaran menggunakan
az feature showperintah . Dibutuhkan beberapa menit agar status menampilkan Terdaftar.az feature show --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewSaat status mencerminkan Terdaftar, perbarui registrasi penyedia sumber daya Microsoft.ContainerService menggunakan perintah
az provider register.az provider register --namespace Microsoft.ContainerService
Memperbarui kluster untuk menonaktifkan proksi HTTP
Perbarui templat ARM kluster Anda untuk menonaktifkan proksi HTTP dengan mengatur
enabledkefalse. Skema yang sama yang digunakan untuk deployment CLI ada dalam definisiMicrosoft.ContainerService/managedClustersdi bawah"properties", seperti yang ditunjukkan pada contoh berikut:"properties": { ..., "httpProxyConfig": { "enabled": "false", } }Sebarkan templat ARM Anda dengan Proksi HTTP dinonaktifkan.
Perhatian
AKS secara otomatis menggambar ulang citra semua kumpulan simpul dalam kluster ketika Anda memperbarui konfigurasi proksi pada kluster Anda menggunakan perintah az aks update. Anda dapat menggunakan Pod Disruption Budgets (PDB) untuk melindungi gangguan pada pod penting selama reimage.
Verifikasi bahwa proksi HTTP tidak aktif dengan memastikan konfigurasi Proksi HTTP tidak diatur pada pod dan node menggunakan perintah
kubectl describe pod.kubectl describe {any pod} -n kube-systemUntuk memastikan variabel proksi belum diatur dalam pod, Anda dapat memeriksa variabel lingkungan yang ada pada node.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Mengaktifkan kembali proksi HTTP pada kluster yang ada
Saat Anda membuat kluster, proksi HTTP diaktifkan secara default. Setelah menonaktifkan proksi HTTP pada kluster, Anda tidak dapat lagi menambahkan konfigurasi proksi HTTP ke kluster tersebut.
Jika Anda ingin mengaktifkan kembali proksi HTTP, ikuti langkah-langkah untuk Memperbarui konfigurasi proksi HTTP menggunakan templat ARM.
Proksi HTTP add-on Istio untuk Layanan Eksternal
Jika Anda menggunakan add-on service mesh berbasis Istio untuk AKS, Anda harus membuat Entri Layanan untuk mengaktifkan aplikasi Anda dalam service mesh untuk mengakses sumber daya non-kluster atau eksternal melalui proksi-HTTP.
Contohnya:
apiVersion: networking.istio.io/v1
kind: ServiceEntry
metadata:
name: proxy
spec:
hosts:
- my-company-proxy.com # ignored
addresses:
- $PROXY_IP/32
ports:
- number: $PROXY_PORT
name: tcp
protocol: TCP
location: MESH_EXTERNAL
Buat sebuah file dan berikan nilai untuk
PROXY_IPdanPROXY_PORT.Anda dapat menyebarkan Entri Layanan menggunakan:
kubectl apply -f service_proxy.yaml
Pemantauan konfigurasi add-on
HTTP proxy dengan add-on pemantauan mendukung konfigurasi berikut:
- Proksi keluar tanpa autentikasi
- Proksi keluar dengan sertifikasi tepercaya untuk titik akhir Analitik Log
Konfigurasi berikut tidak didukung:
- Fitur Custom Metrics dan Recommended Alerts saat menggunakan proxy dengan sertifikat tepercaya
Langkah selanjutnya
Untuk informasi lebih lanjut mengenai persyaratan jaringan untuk kluster AKS, lihat Kontrol lalu lintas egress untuk node kluster di AKS.