Dela via


Konfigurera Istio-baserat service mesh-tillägg för Azure Kubernetes Service

Istio med öppen källkod använder MeshConfig för att definiera nätomfattande inställningar för Istio-tjänstnätet. Istio-baserade service mesh-tillägg för AKS bygger ovanpå MeshConfig och klassificerar olika egenskaper som stöds, tillåts och blockeras.

Den här artikeln beskriver hur du konfigurerar Istio-baserat service mesh-tillägg för Azure Kubernetes Service och den supportprincip som gäller för den här konfigurationen.

Förutsättningar

Den här guiden förutsätter att du följde dokumentationen för att aktivera Istio-tillägget i ett AKS-kluster.

Konfigurera konfiguration i kluster

  1. Ta reda på vilken revision av Istio som distribueras i klustret:

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

    Utdata:

    {
      "istio": {
          "certificateAuthority": null,
          "components": {
          "egressGateways": null,
          "ingressGateways": null
          },
          "revisions": [
          "asm-1-18"
          ]
      },
      "mode": "Istio"
    }
    
  2. Skapa en ConfigMap med namnet istio-shared-configmap-<asm-revision> i aks-istio-system namnområdet. Om klustret till exempel kör asm-1-18-revisionen av mesh måste ConfigMap namnges som istio-shared-configmap-asm-1-18. Mesh-konfigurationen måste anges i dataavsnittet under mesh.

    Exempel:

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

    Värdena under defaultConfig är nätomfattande inställningar som används för Envoy-sidovagnsproxy.

Varning

En standardkonfigurationskarta (till exempel istio-asm-1-18 för revision asm-1-18) skapas i namnområdet i aks-istio-system klustret när Istio-tillägget är aktiverat. Den här standardkonfigurationskartan stäms dock av det hanterade Istio-tillägget och därför bör användarna INTE redigera den här ConfigMap direkt. I stället bör användarna skapa en revisionsspecifik Istio-delad ConfigMap (till exempel istio-shared-configmap-asm-1-18 för revision asm-1-18) i namnområdet aks-istio-system, och sedan sammanfogar Istio-kontrollplanet detta med standardkonfigurationskartan, där standardinställningarna har företräde.

Mesh-konfiguration och uppgraderingar

När du utför kanarieuppgradering för Istio måste du skapa en separat ConfigMap för den nya revisionen aks-istio-system i namnområdet innan du påbörjar canary-uppgraderingen. På så sätt är konfigurationen tillgänglig när den nya revisionens kontrollplan distribueras i klustret. Om du till exempel uppgraderar nätet från asm-1-18 till asm-1-19 måste du kopiera ändringarna från istio-shared-configmap-asm-1-18 för att skapa en ny ConfigMap som heter istio-shared-configmap-asm-1-19 i aks-istio-system namnområdet.

När uppgraderingen har slutförts eller återställts kan du ta bort ConfigMap för revisionen som togs bort från klustret.

Tillåtna, stödda och blockerade MeshConfig-värden

Fält i MeshConfig klassificeras som allowed, supportedeller blocked. Mer information om dessa kategorier finns i supportprincipen för Istio-tilläggsfunktioner och konfigurationsalternativ.

Mesh-konfiguration och listan över tillåtna/stödda fält är revisioner som är specifika för konto för fält som läggs till/tas bort över revisioner. Den fullständiga listan över tillåtna fält och de som stöds/inte stöds i listan över tillåtna finns i tabellen nedan. När ny mesh-revision görs tillgänglig noteras eventuella ändringar av tillåten och stödd klassificering av fälten i den här tabellen.

MeshConfig

Fält som finns i öppen källkod MeshConfig-referensdokumentation som inte beskrivs i följande tabell blockeras. Till exempel configSources blockeras.

Fält Stöds/tillåts Anteckningar
proxyListenPort Tillåtet -
proxyInboundListenPort Tillåtet -
proxyHttpPort Tillåtet -
connectTimeout Tillåtet Kan konfigureras i DestinationRule
tcpKeepAlive Tillåtet Kan konfigureras i DestinationRule
defaultConfig Stöds Används för att konfigurera ProxyConfig
outboundTrafficPolicy Stöds Kan även konfigureras i Sidecar CR
extensionProviders Tillåtet -
defaultProviders Tillåtet -
accessLogFile Stöds Det här fältet adresserar genereringen av åtkomstloggar. En hanterad upplevelse av insamling och frågekörning av loggar finns i Azure Monitor Container Insights i AKS. Vi rekommenderar att du konfigurerar åtkomstloggning via telemetri-API:et.
accessLogFormat Stöds Det här fältet adresserar genereringen av åtkomstloggar. En hanterad upplevelse av insamling och frågekörning av loggar finns i Azure Monitor Container Insights på AKS
accessLogEncoding Stöds Det här fältet adresserar genereringen av åtkomstloggar. En hanterad upplevelse av insamling och frågekörning av loggar finns i Azure Monitor Container Insights på AKS
enableTracing Tillåtet Vi rekommenderar att du konfigurerar spårning via telemetri-API:et.
enableEnvoyAccessLogService Stöds Det här fältet adresserar genereringen av åtkomstloggar. En hanterad upplevelse av insamling och frågekörning av loggar finns i Azure Monitor Container Insights på AKS
disableEnvoyListenerLog Stöds Det här fältet adresserar genereringen av åtkomstloggar. En hanterad upplevelse av insamling och frågekörning av loggar finns i Azure Monitor Container Insights på AKS
trustDomain Tillåtet -
trustDomainAliases Tillåtet -
caCertificates Tillåtet Kan konfigureras i DestinationRule
defaultServiceExportTo Tillåtet Kan konfigureras i ServiceEntry
defaultVirtualServiceExportTo Tillåtet Kan konfigureras i VirtualService
defaultDestinationRuleExportTo Tillåtet Kan konfigureras i DestinationRule
localityLbSetting Tillåtet Kan konfigureras i DestinationRule
dnsRefreshRate Tillåtet -
h2UpgradePolicy Tillåtet Kan konfigureras i DestinationRule
enablePrometheusMerge Tillåtet -
discoverySelectors Stöds -
pathNormalization Tillåtet -
defaultHttpRetryPolicy Tillåtet Kan konfigureras i VirtualService
serviceSettings Tillåtet -
meshMTLS Tillåtet -
tlsDefaults Tillåtet -
ingressService Tillåtet Namnet på Kubernetes-tjänsten som används för istio-ingresskontrollanten.
ingressSelector Tillåtet Definierar vilken gatewaydistribution som ska användas som ingresskontrollant. Det här fältet motsvarar fältet Gateway.selector och anges som istio: INGRESS_SELECTOR.

ProxyConfig (meshConfig.defaultConfig)

Fält som finns i öppen källkod MeshConfig-referensdokumentation som inte beskrivs i följande tabell blockeras.

Fält Stöds/tillåts Anteckningar
tracingServiceName Tillåtet Vi rekommenderar att du konfigurerar spårning via telemetri-API:et.
drainDuration Stöds -
statsUdpAddress Tillåtet -
proxyAdminPort Tillåtet -
Spårning Tillåtet Vi rekommenderar att du konfigurerar spårning via telemetri-API:et.
samtidighet Stöds -
envoyAccessLogService Tillåtet Vi rekommenderar att du konfigurerar spårning via telemetri-API:et.
envoyMetricsService Tillåtet Vi rekommenderar att du konfigurerar insamling av mått via Telemetri-API:et.
proxyMetadata Tillåtet -
statusPort Tillåtet -
extraStatTags Tillåtet -
proxyStatsMatcher Tillåtet -
terminationDrainDuration Stöds -
meshId Tillåtet -
holdApplicationUntilProxyStarts Stöds -
caCertificatesPem Tillåtet -
privateKeyProvider Tillåtet -

Varning

Stödomfång för konfigurationer: Mesh-konfiguration gör att tilläggsproviders som självhanterade instanser av Zipkin eller Apache Skywalking kan konfigureras med Istio-tillägget. Dessa tilläggsleverantörer ligger dock utanför supportomfånget för Istio-tillägget. Eventuella problem som är associerade med tilläggsverktyg ligger utanför supportgränsen för Istio-tillägget.

Vanliga fel och felsökningstips

  • Kontrollera att MeshConfig är indraget med blanksteg i stället för flikar.
  • Se till att du bara redigerar den revisionsspecifika delade ConfigMap (till exempel istio-shared-configmap-asm-1-18) och inte försöker redigera standardkonfigurationskartan (till exempel istio-asm-1-18).
  • ConfigMap måste följa namnet istio-shared-configmap-<asm-revision> och vara i aks-istio-system namnområdet.
  • Kontrollera att alla MeshConfig-fält är rättstavade. Om de är okända eller om de inte ingår i listan över tillåtna nekar antagningskontroll sådana konfigurationer.
  • När du utför kanarieuppgraderingar kontrollerar du revisionsspecifika ConfigMaps för att säkerställa att konfigurationer finns för de revisioner som distribueras i klustret.
  • Vissa MeshConfig alternativ, till exempel åtkomstloggning, kan öka Envoys resursförbrukning, och om du inaktiverar vissa av de här inställningarna kan du minska resursutnyttjandet för Istio-dataplanet. Det är också lämpligt att använda fältet discoverySelectors i MeshConfig för att minska minnesförbrukningen för Istiod och Envoy.
  • Om fältet concurrency i MeshConfig är felkonfigurerat och inställt på noll, gör det att Envoy använder alla CPU-kärnor. Om det här fältet i stället är oetigt bestäms antalet arbetstrådar som ska köras automatiskt baserat på CPU-begäranden/-gränser.
  • Podd- och sidovagnstävlingsförhållanden där programmet startar innan Envoy kan minimeras med hjälp av holdApplicationUntilProxyStarts fältet i MeshConfig.