Baca dalam bahasa Inggris

Bagikan melalui


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.

Prasyarat

Panduan ini mengasumsikan Anda mengikuti dokumentasi untuk mengaktifkan add-on Istio pada kluster AKS.

Menyiapkan konfigurasi pada kluster

  1. 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"
    }
    
  2. Buat ConfigMap dengan nama istio-shared-configmap-<asm-revision> di aks-istio-system namespace. Misalnya, jika kluster Anda menjalankan revisi jala asm-1-18, maka ConfigMap perlu dinamai sebagai istio-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.

Konfigurasi dan peningkatan mesh

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.

Nilai MeshConfig yang diizinkan, didukung, dan diblokir

Bidang di diklasifikasikan MeshConfig sebagai allowed, , supportedatau 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.

MeshConfig

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.

ProxyConfig (meshConfig.defaultConfig)

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.

Kesalahan umum dan tips pemecahan masalah

  • 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 (misalnya istio-asm-1-18).
  • ConfigMap harus mengikuti nama istio-shared-configmap-<asm-revision> dan berada di aks-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 menggunakan discoverySelectors 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.