Sdílet prostřednictvím


Konfigurace doplňku Istio service mesh pro Azure Kubernetes Service

Open source Istio používá MeshConfig k definování nastavení celé sítě pro síť služby Istio. Doplněk Sítě služeb založený na istio pro AKS se sestavuje nad MeshConfig a klasifikuje různé vlastnosti jako podporované, povolené a blokované.

Tento článek vás provede konfigurací doplňku Istio service mesh pro službu Azure Kubernetes Service a zásad podpory použitelných pro tuto konfiguraci.

Požadavky

V této příručce se předpokládá, že jste postupovali podle dokumentace k povolení doplňku Istio v clusteru AKS.

Nastavení konfigurace v clusteru

  1. Zjistěte, která revize Istio je nasazená v clusteru:

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

    Výstup:

    {
      "istio": {
          "certificateAuthority": null,
          "components": {
          "egressGateways": null,
          "ingressGateways": null
          },
          "revisions": [
          "asm-1-18"
          ]
      },
      "mode": "Istio"
    }
    
  2. Vytvořte objekt ConfigMap s názvem istio-shared-configmap-<asm-revision> v aks-istio-system oboru názvů. Pokud například váš cluster běží jako 1-1-18 revize sítě, musí být objekt ConfigMap pojmenován jako istio-shared-configmap-asm-1-18. Konfiguraci sítě je potřeba poskytnout v rámci datového oddílu v rámci sítě.

    Příklad:

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

    Hodnoty v defaultConfig rámci sítě se použijí pro proxy sajdkáře Envoy.

Upozornění

Výchozí objekt ConfigMap (například istio-asm-1-18 pro revizi asm-1-18) se vytvoří v oboru názvů v aks-istio-system clusteru, když je povolen doplněk Istio. Tento výchozí objekt ConfigMap se však odsouhlasí spravovaným doplňkem Istio, a proto by uživatelé neměli přímo upravovat tuto mapu ConfigMap. Místo toho by uživatelé měli v oboru názvů aks-istio-istio vytvořit specifickou sdílenou mapu ConfigMap (například istio-shared-configmap-asm-1-18 revizní asm-1-18) a potom řídicí rovinu Istio sloučí s výchozím objektem ConfigMap s výchozím nastavením, které má přednost.

Konfigurace a upgrady sítě

Při provádění kanárového upgradu pro Istio musíte před zahájením kanárového upgradu vytvořit samostatnou mapu ConfigMap pro novou revizi v aks-istio-system oboru názvů. Tímto způsobem je konfigurace dostupná, když je v clusteru nasazena řídicí rovina nové revize. Pokud například upgradujete síť z asm-1-18 na asm-1-19, budete muset zkopírovat změny, aby istio-shared-configmap-asm-1-18 se v aks-istio-system oboru názvů vytvořil nový objekt ConfigMap.istio-shared-configmap-asm-1-19

Po dokončení nebo vrácení upgradu zpět můžete odstranit objekt ConfigMap revize, která byla odebrána z clusteru.

Povolené, podporované a blokované hodnoty

Pole jsou MeshConfig klasifikována do tří kategorií:

  • Blokované: Nepovolené pole jsou blokovaná prostřednictvím webhooků spravovaného přístupu doplňků. Server rozhraní API okamžitě publikuje chybovou zprávu uživateli, že pole je zakázáno.
  • Podporováno: Podporovaná pole (například pole související s protokolováním přístupu) získají podporu z podpora Azure.
  • Povoleno: Tato pole (například proxyListenPort nebo proxyInboundListenPort) jsou povolená, ale nejsou pokryta podpora Azure.

Konfigurace sítě a seznam povolených nebo podporovaných polí jsou revizí specifické pro účet přidaných nebo odebraných polích napříč revizemi. Úplný seznam povolených polí a podporovaných nebo nepodporovaných polí v seznamu povolených polí najdete v následující tabulce. Při zpřístupnění nové revize sítě jsou v této tabulce zaznamenány všechny změny povolené a podporované klasifikace polí.

MeshConfig

Pole, která jsou k dispozici v referenční dokumentaci open source MeshConfig, která nejsou zahrnuta v následující tabulce, jsou blokovaná. Například configSources je zablokovaný.

Pole Podporované nebo povolené Poznámky
proxyListenPort Povoleno -
proxyInboundListenPort Povoleno -
proxyHttpPort Povoleno -
connectTimeout Povoleno Konfigurovatelné v cílovémru
tcpKeepAlive Povoleno Konfigurovatelné v cílovémru
defaultConfig Podporováno Slouží ke konfiguraci služby ProxyConfig.
outboundTrafficPolicy Podporováno Konfigurovatelné také v Sajdkáře CR
extensionProviders Povoleno -
defaultProviders Povoleno -
accessLogFile Podporováno Toto pole řeší generování přístupových protokolů. Informace o spravovaném prostředí pro shromažďování a dotazování protokolů najdete v Azure Monitor Container Insights v AKS.
accessLogFormat Podporováno Toto pole řeší generování přístupových protokolů. Informace o spravovaném prostředí pro shromažďování a dotazování protokolů najdete v Azure Monitor Container Insights v AKS.
accessLogEncoding Podporováno Toto pole řeší generování přístupových protokolů. Informace o spravovaném prostředí pro shromažďování a dotazování protokolů najdete v Azure Monitor Container Insights v AKS.
enableTracing Povoleno
enableEnvoyAccessLogService Podporováno Toto pole řeší generování přístupových protokolů. Informace o spravovaném prostředí pro shromažďování a dotazování protokolů najdete v Azure Monitor Container Insights v AKS.
disableEnvoyListenerLog Podporováno Toto pole řeší generování přístupových protokolů. Informace o spravovaném prostředí pro shromažďování a dotazování protokolů najdete v Azure Monitor Container Insights v AKS.
trustDomain Povoleno -
trustDomainAliases Povoleno -
caCertificates Povoleno Konfigurovatelné v cílovémru
defaultServiceExportTo Povoleno Konfigurovatelné ve službě ServiceEntry
defaultVirtualServiceExportTo Povoleno Konfigurovatelné ve službě VirtualService
defaultDestinationRuleExportTo Povoleno Konfigurovatelné v cílovémru
localityLbSetting Povoleno Konfigurovatelné v cílovémru
dnsRefreshRate Povoleno -
h2UpgradePolicy Povoleno Konfigurovatelné v cílovémru
enablePrometheusMerge Povoleno -
discoverySelectors Podporováno -
pathNormalization Povoleno -
defaultHttpRetryPolicy Povoleno Konfigurovatelné ve službě VirtualService
serviceSettings Povoleno -
meshMTLS Povoleno -
TlsDefaults Povoleno -

ProxyConfig (meshConfig.defaultConfig)

Pole, která jsou k dispozici v referenční dokumentaci open source MeshConfig, která nejsou zahrnuta v následující tabulce, jsou blokovaná.

Pole Podporované nebo povolené
tracingServiceName Povoleno
drainDuration Podporováno
statsUdpAddress Povoleno
proxyAdminPort Povoleno
trasování Povoleno
souběžnost Podporováno
envoyAccessLogService Povoleno
envoyMetricsService Povoleno
proxyMetadata Povoleno
statusPort Povoleno
extraStatTags Povoleno
proxyStatsMatcher Povoleno
terminationDrainDuration Podporováno
meshId Povoleno
holdApplicationUntilProxyStarts Podporováno
caCertificatesPem Povoleno
privateKeyProvider Povoleno

Upozornění

Rozsah konfigurací podpory: Konfigurace sítě umožňuje poskytovatelům rozšíření, jako jsou instance Zipkinu nebo Apache Skywalkingu, nakonfigurovat pomocí doplňku Istio. Tito poskytovatelé rozšíření jsou však mimo rozsah podpory doplňku Istio. Všechny problémy související s nástroji rozšíření jsou mimo hranice podpory doplňku Istio.

Běžné chyby a tipy pro řešení potíží

  • Ujistěte se, že je sada MeshConfig odsazená mezerami místo tabulátoru.
  • Ujistěte se, že upravujete pouze sdílené objekty ConfigMap specifické pro revizi (například istio-shared-configmap-asm-1-18) a nepokoušejte se upravit výchozí objekt ConfigMap (například istio-asm-1-18).
  • ConfigMap musí následovat název istio-shared-configmap-<asm-revision> a být v aks-istio-system oboru názvů.
  • Ujistěte se, že jsou všechna pole MeshConfig napsaná správně. Pokud nejsou nerozpoznané nebo pokud nejsou součástí seznamu povolených, řízení přístupu takové konfigurace odmítne.
  • Připrováděních
  • Některé MeshConfig možnosti, jako je například accessLogging, můžou zvýšit spotřebu prostředků envoy a zakázání některých z těchto nastavení může zmírnit využití prostředků roviny dat Istio. Také je vhodné použít discoverySelectors pole ve službě MeshConfig, které pomáhá zmírnit spotřebu paměti pro Istiod a Envoy.
  • concurrency Pokud je pole v MeshConfig chybně nakonfigurované a nastavené na nulu, způsobí, že envoy použije všechna jádra procesoru. Místo toho, pokud toto pole není nastavené, počet pracovních vláken, která se mají spustit, se automaticky určí na základě požadavků nebo limitů procesoru.
  • Podmínky závodu podu a sajdkáře, ve kterých se aplikace spouští před voláním, je možné zmírnit pomocí holdApplicationUntilProxyStarts pole ve službě MeshConfig.