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 avstä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 värden

Fälten i MeshConfig klassificeras i tre kategorier:

  • Blockerad: Otillåtna fält blockeras via webhooks för addon-hanterad antagning. API-servern publicerar omedelbart felmeddelandet till användaren om att fältet inte tillåts.
  • Stöds: Fält som stöds (till exempel fält som rör åtkomstloggning) får support från Azure-supporten.
  • Tillåtna: Dessa fält (till exempel proxyListenPort eller proxyInboundListenPort) tillåts, men de omfattas inte av Azure-supporten.

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 Stöds Anteckningar
proxyListenPort falskt -
proxyInboundListenPort falskt -
proxyHttpPort falskt -
connectTimeout falskt Kan konfigureras i DestinationRule
tcpKeepAlive falskt Kan konfigureras i DestinationRule
defaultConfig true Används för att konfigurera ProxyConfig
outboundTrafficPolicy true Kan även konfigureras i Sidecar CR
extensionProviders falskt -
defaultProviders falskt -
accessLogFile true -
accessLogFormat true -
accessLogEncoding true -
enableTracing true -
enableEnvoyAccessLogService true -
disableEnvoyListenerLog true -
trustDomain falskt -
trustDomainAliases falskt -
caCertificates falskt Kan konfigureras i DestinationRule
defaultServiceExportTo falskt Kan konfigureras i ServiceEntry
defaultVirtualServiceExportTo falskt Kan konfigureras i VirtualService
defaultDestinationRuleExportTo falskt Kan konfigureras i DestinationRule
localityLbSetting falskt Kan konfigureras i DestinationRule
dnsRefreshRate falskt -
h2UpgradePolicy falskt Kan konfigureras i DestinationRule
enablePrometheusMerge true -
discoverySelectors true -
pathNormalization falskt -
defaultHttpRetryPolicy falskt Kan konfigureras i VirtualService
tjänst Inställningar falskt -
meshMTLS falskt -
tlsDefaults falskt -

ProxyConfig (meshConfig.defaultConfig)

Fält Stöds
tracingServiceName true
drainDuration true
statsUdpAddress falskt
proxyAdminPort falskt
Spårning true
samtidighet true
envoyAccessLogService true
envoyMetricsService true
proxyMetadata falskt
statusPort falskt
extraStatTags falskt
proxyStatsMatcher falskt
terminationDrainDuration true
meshId falskt
holdApplicationUntilProxyStarts true
caCertificatesPem falskt
privateKeyProvider falskt

Fält som finns i öppen källkod MeshConfig-referensdokumentation men inte i tabellen ovan blockeras. Till exempel configSources blockeras.

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äggsproviders 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 din revisionsspecifika konfiguration Kartor 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.