Mengonfigurasi add-on mesh layanan berbasis Istio untuk Azure Kubernetes Service
Istio sumber terbuka menggunakan MeshConfig untuk menentukan pengaturan di seluruh jala untuk jala layanan Istio. Add-on mesh layanan berbasis Istio untuk build AKS di atas MeshConfig dan mengklasifikasikan properti yang berbeda sebagai didukung, diizinkan, dan diblokir.
Artikel ini menjelaskan cara mengonfigurasi add-on mesh layanan berbasis Istio untuk Azure Kubernetes Service dan kebijakan dukungan yang berlaku untuk konfigurasi tersebut.
Panduan ini mengasumsikan Anda mengikuti dokumentasi untuk mengaktifkan add-on Istio pada kluster AKS.
Cari tahu revisi Istio mana yang disebarkan pada kluster:
az aks show --name $CLUSTER --resource-group $RESOURCE_GROUP --query 'serviceMeshProfile'
Output:
{ "istio": { "certificateAuthority": null, "components": { "egressGateways": null, "ingressGateways": null }, "revisions": [ "asm-1-18" ] }, "mode": "Istio" }
Buat ConfigMap dengan nama
istio-shared-configmap-<asm-revision>
diaks-istio-system
namespace. Misalnya, jika kluster Anda menjalankan revisi jala asm-1-18, maka ConfigMap perlu dinamai sebagaiistio-shared-configmap-asm-1-18
. Konfigurasi mesh harus disediakan dalam bagian data di bawah jala.Contoh:
apiVersion: v1 kind: ConfigMap metadata: name: istio-shared-configmap-asm-1-18 namespace: aks-istio-system data: mesh: |- accessLogFile: /dev/stdout defaultConfig: holdApplicationUntilProxyStarts: true
Nilai di bawah
defaultConfig
adalah pengaturan seluruh jala yang diterapkan untuk proksi sidecar Envoy.
Perhatian
ConfigMap default (misalnya, istio-asm-1-18
untuk revisi asm-1-18) dibuat di aks-istio-system
namespace pada kluster saat add-on Istio diaktifkan. Namun, ConfigMap default ini direkonsiliasi oleh add-on Istio terkelola dan dengan demikian pengguna TIDAK boleh langsung mengedit ConfigMap ini. Sebagai gantinya, pengguna harus membuat ConfigMap bersama Istio tertentu revisi (misalnya istio-shared-configmap-asm-1-18
untuk revisi asm-1-18) di namespace layanan aks-istio-system, lalu bidang kontrol Istio akan menggabungkan ini dengan ConfigMap default, dengan pengaturan default yang diutamakan.
Saat Anda melakukan peningkatan kenari untuk Istio, Anda perlu membuat ConfigMap terpisah untuk revisi baru di aks-istio-system
namespace sebelum memulai peningkatan kenari. Dengan cara ini konfigurasi tersedia saat sarana kontrol revisi baru disebarkan pada kluster. Misalnya, jika Anda meningkatkan jala dari asm-1-18 ke asm-1-19, Anda perlu menyalin perubahan dari istio-shared-configmap-asm-1-18
untuk membuat ConfigMap baru yang disebut istio-shared-configmap-asm-1-19
di aks-istio-system
namespace.
Setelah peningkatan selesai atau digulung balik, Anda dapat menghapus ConfigMap revisi yang dihapus dari kluster.
Bidang di diklasifikasikan MeshConfig
sebagai allowed
, , supported
atau blocked
. Untuk mempelajari selengkapnya tentang kategori ini, lihat kebijakan dukungan untuk fitur add-on Istio dan opsi konfigurasi.
Konfigurasi jala dan daftar bidang yang diizinkan/didukung direvisi khusus untuk memperhitungkan bidang yang ditambahkan/dihapus di seluruh revisi. Daftar lengkap bidang yang diizinkan dan bidang yang didukung/tidak didukung dalam daftar yang diizinkan disediakan dalam tabel di bawah ini. Ketika revisi jala baru tersedia, setiap perubahan pada klasifikasi bidang yang diizinkan dan didukung dicatat dalam tabel ini.
Bidang yang ada dalam dokumentasi referensi sumber terbuka MeshConfig yang tidak tercakup dalam tabel berikut diblokir. Misalnya, configSources
diblokir.
Bidang | Didukung/Diizinkan | Catatan |
---|---|---|
proxyListenPort | Diizinkan | - |
proxyInboundListenPort | Diizinkan | - |
proxyHttpPort | Diizinkan | - |
connectTimeout | Diizinkan | Dapat dikonfigurasi di DestinationRule |
tcpKeepAlive | Diizinkan | Dapat dikonfigurasi di DestinationRule |
defaultConfig | Didukung | Digunakan untuk mengonfigurasi ProxyConfig |
outboundTrafficPolicy | Didukung | Juga dapat dikonfigurasi di Sidecar CR |
extensionProviders | Diizinkan | - |
defaultProviders | Diizinkan | - |
accessLogFile | Didukung | Bidang ini membahas pembuatan log akses. Untuk pengalaman terkelola tentang pengumpulan dan kueri log, lihat Azure Monitor Container Insights di AKS. Didorong untuk mengonfigurasi pengelogan akses melalui API Telemetri. |
accessLogFormat | Didukung | Bidang ini membahas pembuatan log akses. Untuk pengalaman terkelola tentang pengumpulan dan kueri log, lihat Azure Monitor Container Insights di AKS |
accessLogEncoding | Didukung | Bidang ini membahas pembuatan log akses. Untuk pengalaman terkelola tentang pengumpulan dan kueri log, lihat Azure Monitor Container Insights di AKS |
enableTracing | Diizinkan | Dianjurkan untuk mengonfigurasi pelacakan melalui API Telemetri. |
enableEnvoyAccessLogService | Didukung | Bidang ini membahas pembuatan log akses. Untuk pengalaman terkelola tentang pengumpulan dan kueri log, lihat Azure Monitor Container Insights di AKS |
disableEnvoyListenerLog | Didukung | Bidang ini membahas pembuatan log akses. Untuk pengalaman terkelola tentang pengumpulan dan kueri log, lihat Azure Monitor Container Insights di AKS |
trustDomain | Diizinkan | - |
trustDomainAliases | Diizinkan | - |
caCertificates | Diizinkan | Dapat dikonfigurasi di DestinationRule |
defaultServiceExportTo | Diizinkan | Dapat dikonfigurasi di ServiceEntry |
defaultVirtualServiceExportTo | Diizinkan | Dapat dikonfigurasi di VirtualService |
defaultDestinationRuleExportTo | Diizinkan | Dapat dikonfigurasi di DestinationRule |
localityLbSetting | Diizinkan | Dapat dikonfigurasi di DestinationRule |
dnsRefreshRate | Diizinkan | - |
h2UpgradePolicy | Diizinkan | Dapat dikonfigurasi di DestinationRule |
enablePrometheusMerge | Diizinkan | - |
discoverySelectors | Didukung | - |
pathNormalization | Diizinkan | - |
defaultHttpRetryPolicy | Diizinkan | Dapat dikonfigurasi di VirtualService |
serviceSettings | Diizinkan | - |
meshMTLS | Diizinkan | - |
tlsDefaults | Diizinkan | - |
ingressService | Diizinkan | Nama layanan Kubernetes yang digunakan untuk pengontrol ingress istio. |
ingressSelector | Diizinkan | Menentukan penyebaran gateway mana yang akan digunakan sebagai pengontrol Ingress. Bidang ini sesuai dengan bidang Gateway.selector, dan akan diatur sebagai istio: INGRESS_SELECTOR. |
Bidang yang ada dalam dokumentasi referensi sumber terbuka MeshConfig yang tidak tercakup dalam tabel berikut diblokir.
Bidang | Didukung/Diizinkan | Catatan |
---|---|---|
tracingServiceName | Diizinkan | Dianjurkan untuk mengonfigurasi pelacakan melalui API Telemetri. |
drainDuration | Didukung | - |
statsUdpAddress | Diizinkan | - |
proxyAdminPort | Diizinkan | - |
pelacakan | Diizinkan | Dianjurkan untuk mengonfigurasi pelacakan melalui API Telemetri. |
konkurensi | Didukung | - |
envoyAccessLogService | Diizinkan | Dianjurkan untuk mengonfigurasi pelacakan melalui API Telemetri. |
envoyMetricsService | Diizinkan | Didorong untuk mengonfigurasi pengumpulan metrik melalui API Telemetri. |
proxyMetadata | Diizinkan | - |
statusPort | Diizinkan | - |
extraStatTags | Diizinkan | - |
proxyStatsMatcher | Diizinkan | - |
terminationDrainDuration | Didukung | - |
meshId | Diizinkan | - |
holdApplicationUntilProxyStarts | Didukung | - |
caCertificatesPem | Diizinkan | - |
privateKeyProvider | Diizinkan | - |
Perhatian
Cakupan dukungan konfigurasi: Konfigurasi mesh memungkinkan penyedia ekstensi seperti instans Zipkin atau Apache Skywalking yang dikelola sendiri untuk dikonfigurasi dengan add-on Istio. Namun, penyedia ekstensi ini berada di luar cakupan dukungan add-on Istio. Masalah apa pun yang terkait dengan alat ekstensi berada di luar batas dukungan add-on Istio.
- Pastikan bahwa MeshConfig diindentasi dengan spasi alih-alih tab.
- Pastikan Anda hanya mengedit ConfigMap bersama tertentu revisi (misalnya
istio-shared-configmap-asm-1-18
) dan tidak mencoba mengedit ConfigMap default (misalnyaistio-asm-1-18
). - ConfigMap harus mengikuti nama
istio-shared-configmap-<asm-revision>
dan berada diaks-istio-system
namespace. - Pastikan bahwa semua bidang MeshConfig dieja dengan benar. Jika mereka tidak dikenali atau jika mereka bukan bagian dari daftar yang diizinkan, kontrol penerimaan menolak konfigurasi tersebut.
- Saat melakukan peningkatan kenari, periksa ConfigMaps spesifik revisi Anda untuk memastikan konfigurasi ada untuk revisi yang disebarkan pada kluster Anda.
- Opsi tertentu
MeshConfig
seperti accessLogging dapat meningkatkan konsumsi sumber daya Envoy, dan menonaktifkan beberapa pengaturan ini dapat mengurangi pemanfaatan sumber daya bidang data Istio. Disarankan juga untuk menggunakandiscoverySelectors
bidang di MeshConfig untuk membantu meringankan konsumsi memori untuk Istiod dan Envoy. concurrency
Jika bidang di MeshConfig salah dikonfigurasi dan diatur ke nol, itu menyebabkan Envoy menggunakan semua inti CPU. Sebaliknya jika bidang ini tidak diatur, jumlah utas pekerja yang akan dijalankan secara otomatis ditentukan berdasarkan permintaan/batas CPU.- Kondisi balapan pod dan sidecar di mana aplikasi dimulai sebelum Envoy dapat dimitigasi menggunakan
holdApplicationUntilProxyStarts
bidang di MeshConfig.
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: