Megosztás a következőn keresztül:


Istio-alapú service mesh bővítmény konfigurálása az Azure Kubernetes Service-hez

A nyílt forráskódú Istio a MeshConfig használatával határozza meg az Istio szolgáltatásháló hálószintű beállításait. Az AKS Istio-alapú service mesh bővítménye a MeshConfigra épül, és a különböző tulajdonságokat támogatottnak, engedélyezettnek és letiltottnak sorolja be.

Ez a cikk bemutatja, hogyan konfigurálhatja az Istio-alapú service mesh bővítményt az Azure Kubernetes Service-hez, valamint az ilyen konfigurációra vonatkozó támogatási szabályzatot.

Előfeltételek

Ez az útmutató feltételezi, hogy követte a dokumentációt , hogy engedélyezze az Istio bővítményt egy AKS-fürtön.

Konfiguráció beállítása fürtön

  1. Megtudhatja, hogy az Istio melyik változata van üzembe helyezve a fürtön:

    az aks show --name $CLUSTER --resource-group $RESOURCE_GROUP --query 'serviceMeshProfile'
    

    Hozam:

    {
      "istio": {
          "certificateAuthority": null,
          "components": {
          "egressGateways": null,
          "ingressGateways": null
          },
          "revisions": [
          "asm-1-18"
          ]
      },
      "mode": "Istio"
    }
    
  2. Hozzon létre egy konfigurációtérképet a névtérben szereplő aks-istio-system névvelistio-shared-configmap-<asm-revision>. Ha például a fürt a mesh ASM-1-18 változatát futtatja, akkor a ConfigMap nevet kell adni istio-shared-configmap-asm-1-18. A hálókonfigurációt a mesh adatszakaszában kell megadni.

    Példa:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: istio-shared-configmap-asm-1-18
      namespace: aks-istio-system
    data:
      mesh: |-
        accessLogFile: /dev/stdout
        defaultConfig:
          holdApplicationUntilProxyStarts: true
    

    Az alatta lévő defaultConfig értékek az envoy sidecar proxyra alkalmazott hálószintű beállítások.

Figyelemfelhívás

Az Istio bővítmény engedélyezésekor a rendszer létrehoz aks-istio-system egy alapértelmezett konfigurációtérképet (például istio-asm-1-18 az asm-1-18-as verzióhoz). Ezt az alapértelmezett ConfigMap-et azonban a felügyelt Istio bővítmény egyezteti, így a felhasználóknak nem szabad közvetlenül szerkeszteniük ezt a ConfigMap-et. Ehelyett a felhasználóknak létre kell hozniuk egy változatspecifikus Istio megosztott konfigurációtérképet (például istio-shared-configmap-asm-1-18 az asm-1-18 verzióhoz) az aks-istio-system névtérben, majd az Istio vezérlősíkja egyesíti ezt az alapértelmezett ConfigMap-tal, és az alapértelmezett beállítások elsőbbséget élveznek.

Mesh-konfiguráció és -frissítések

Az Istio kanári-frissítésének végrehajtásakor létre kell hoznia egy külön ConfigMap-et az új változathoz a aks-istio-system névtérben, mielőtt elindítja a kanári-frissítést. Így a konfiguráció akkor érhető el, ha az új változat vezérlősíkja üzembe van helyezve a fürtön. Ha például a hálót asm-1-18-ról asm-1-19-re frissíti, át kell másolnia a módosításokat istio-shared-configmap-asm-1-18 , hogy létrehozhasson egy új ConfigMap-et istio-shared-configmap-asm-1-19 a aks-istio-system névtérben.

A frissítés befejezése vagy visszaállítása után törölheti a fürtről eltávolított változat konfigurációtérképét.

Engedélyezett, támogatott és letiltott MeshConfig-értékek

A mezők besorolása MeshConfig allowed: , supportedvagy blocked. Ha többet szeretne megtudni ezekről a kategóriákról, tekintse meg az Istio bővítményfunkcióinak és konfigurációs beállításainak támogatási szabályzatát .

A mesh-konfiguráció és az engedélyezett/támogatott mezők listája a korrektúrák között hozzáadott/eltávolított mezők figyelembe vételével történik. Az engedélyezett mezők és a támogatott/nem támogatott mezők teljes listája az alábbi táblázatban található. Ha új hálóváltozat érhető el, a mezők engedélyezett és támogatott besorolásának módosításait ebben a táblázatban jegyezzük fel.

MeshConfig

A nyílt forráskód MeshConfig-referenciadokumentációban szereplő, az alábbi táblázatban nem szereplő mezők le vannak tiltva. Például configSources le van tiltva.

Mező Támogatott/Engedélyezett Jegyzetek
proxyListenPort Engedélyezve -
proxyInboundListenPort Engedélyezve -
proxyHttpPort Engedélyezve -
connectTimeout Engedélyezve Konfigurálható a DestinationRule-ban
tcpKeepalive Engedélyezve Konfigurálható a DestinationRule-ban
defaultConfig Támogatott ProxyConfig konfigurálására szolgál
outboundTrafficPolicy Támogatott A Sidecar CR-ben is konfigurálható
extensionProviders Engedélyezve -
defaultProviders Engedélyezve -
accessLogFile Támogatott Ez a mező a hozzáférési naplók generálását kezeli. A naplók gyűjtésével és lekérdezésével kapcsolatos felügyelt élményért tekintse meg az Azure Monitor Container Insightst az AKS-en. Javasoljuk, hogy a hozzáférés-naplózást a Telemetria API-val konfigurálja.
accessLogFormat Támogatott Ez a mező a hozzáférési naplók generálását kezeli. A naplók gyűjtésével és lekérdezésével kapcsolatos felügyelt élményért tekintse meg az Azure Monitor Container Insightst az AKS-en
accessLogEncoding Támogatott Ez a mező a hozzáférési naplók generálását kezeli. A naplók gyűjtésével és lekérdezésével kapcsolatos felügyelt élményért tekintse meg az Azure Monitor Container Insightst az AKS-en
enableTracing Engedélyezve Javasoljuk, hogy a nyomkövetést a Telemetria API-val konfigurálja.
enableEnvoyAccessLogService Támogatott Ez a mező a hozzáférési naplók generálását kezeli. A naplók gyűjtésével és lekérdezésével kapcsolatos felügyelt élményért tekintse meg az Azure Monitor Container Insightst az AKS-en
disableEnvoyListenerLog Támogatott Ez a mező a hozzáférési naplók generálását kezeli. A naplók gyűjtésével és lekérdezésével kapcsolatos felügyelt élményért tekintse meg az Azure Monitor Container Insightst az AKS-en
trustDomain Engedélyezve -
trustDomainAliases Engedélyezve -
caCertificates Engedélyezve Konfigurálható a DestinationRule-ban
defaultServiceExportTo Engedélyezve Konfigurálható a ServiceEntryben
defaultVirtualServiceExportTo Engedélyezve Konfigurálható a VirtualService-ben
defaultDestinationRuleExportTo Engedélyezve Konfigurálható a DestinationRule-ban
localityLbSetting Engedélyezve Konfigurálható a DestinationRule-ban
dnsRefreshRate Engedélyezve -
h2UpgradePolicy Engedélyezve Konfigurálható a DestinationRule-ban
enablePrometheusMerge Engedélyezve -
discoverySelectors Támogatott -
pathNormalization Engedélyezve -
defaultHttpRetryPolicy Engedélyezve Konfigurálható a VirtualService-ben
serviceSettings Engedélyezve -
meshMTLS Engedélyezve -
tlsDefaults Engedélyezve -
ingressService Engedélyezve Az istio bejövőforgalom-vezérlőhöz használt Kubernetes-szolgáltatás neve.
ingressSelector Engedélyezve Meghatározza, hogy melyik átjáró üzembe helyezését használja bejövőforgalom-vezérlőként. Ez a mező a Gateway.selector mezőnek felel meg, és istio: INGRESS_SELECTOR lesz beállítva.

ProxyConfig (meshConfig.defaultConfig)

A nyílt forráskód MeshConfig-referenciadokumentációban szereplő, az alábbi táblázatban nem szereplő mezők le vannak tiltva.

Mező Támogatott/Engedélyezett Jegyzetek
tracingServiceName Engedélyezve Javasoljuk, hogy a nyomkövetést a Telemetria API-val konfigurálja.
drainDuration Támogatott -
statsUdpAddress Engedélyezve -
proxyAdminPort Engedélyezve -
Nyomkövetés Engedélyezve Javasoljuk, hogy a nyomkövetést a Telemetria API-val konfigurálja.
Konkurencia Támogatott -
envoyAccessLogService Engedélyezve Javasoljuk, hogy a nyomkövetést a Telemetria API-val konfigurálja.
envoyMetricsService Engedélyezve Javasoljuk, hogy a metrikák gyűjtését a Telemetria API-val konfigurálja.
proxyMetadata Engedélyezve -
statusPort Engedélyezve -
extraStatTags Engedélyezve -
proxyStatsMatcher Engedélyezve -
terminationDrainDuration Támogatott -
meshId Engedélyezve -
holdApplicationUntilProxyStarts Támogatott -
caCertificatesPem Engedélyezve -
privateKeyProvider Engedélyezve -

Figyelemfelhívás

A konfigurációk támogatási hatóköre: A Mesh-konfiguráció lehetővé teszi a bővítményszolgáltatók, például a Zipkin vagy az Apache Skywalking ön által felügyelt példányainak konfigurálását az Istio bővítményrel. Ezek a bővítményszolgáltatók azonban nem tartoznak az Istio bővítmény támogatási hatókörébe. A bővítményeszközökkel kapcsolatos problémák kívül vannak az Istio bővítmény támogatási határain.

Gyakori hibák és hibaelhárítási tippek

  • Győződjön meg arról, hogy a MeshConfig lapfülek helyett szóközökkel van behúzva.
  • Győződjön meg arról, hogy csak az adott megosztott konfigurációtérképet szerkeszti (például istio-shared-configmap-asm-1-18), és nem próbálja szerkeszteni az alapértelmezett konfigurációtérképet (például istio-asm-1-18).
  • A konfigurációtérképnek követnie kell a nevet istio-shared-configmap-<asm-revision> , és a aks-istio-system névtérben kell lennie.
  • Győződjön meg arról, hogy minden MeshConfig-mező helyesen van beírva. Ha nincsenek felismerve, vagy ha nem részei az engedélyezett listának, a belépés-vezérlés tagadja az ilyen konfigurációkat.
  • A kanári-frissítések végrehajtásakor ellenőrizze a változatspecifikus konfigurációtérképeket, és győződjön meg arról, hogy léteznek konfigurációk a fürtön üzembe helyezett változatokhoz.
  • Bizonyos MeshConfig beállítások, például az accessLogging növelhetik az envoy erőforrás-felhasználását, és néhány beállítás letiltása csökkentheti az Istio adatsíkok erőforrás-kihasználtságát. Javasoljuk továbbá, hogy a discoverySelectors MeshConfig mezője segítségével enyhítse az Istiod és az Envoy memóriahasználatát.
  • Ha a concurrency MeshConfig mezője helytelenül van konfigurálva, és nullára van állítva, az az Envoy számára az összes processzormag használatát eredményezi. Ha ez a mező nem található meg, a futtatandó feldolgozói szálak száma automatikusan meg lesz határozva a CPU-kérések/korlátok alapján.
  • Pod- és oldalkocsis versenyfeltételek , amelyekben az alkalmazás az Envoy előtt indul el, a MeshConfig mező használatával holdApplicationUntilProxyStarts enyhíthető.