Delen via


Op Istio gebaseerde service-mesh-invoegtoepassing configureren voor Azure Kubernetes Service

Opensource Istio maakt gebruik van MeshConfig om mesh-brede instellingen voor de Istio-service-mesh te definiëren. De op Istio gebaseerde service mesh-invoegtoepassing voor AKS bouwt voort op MeshConfig en classificeert verschillende eigenschappen als ondersteund, toegestaan en geblokkeerd.

In dit artikel wordt uitgelegd hoe u de op Istio gebaseerde service mesh-invoegtoepassing configureert voor Azure Kubernetes Service en het ondersteuningsbeleid dat van toepassing is op een dergelijke configuratie.

Vereisten

In deze handleiding wordt ervan uitgegaan dat u de documentatie hebt gevolgd om de invoegtoepassing Istio in te schakelen op een AKS-cluster.

Configuratie instellen op cluster

  1. Ontdek welke revisie van Istio is geïmplementeerd op het cluster:

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

    Uitvoer:

    {
      "istio": {
          "certificateAuthority": null,
          "components": {
          "egressGateways": null,
          "ingressGateways": null
          },
          "revisions": [
          "asm-1-18"
          ]
      },
      "mode": "Istio"
    }
    
  2. Maak een ConfigMap met de naam istio-shared-configmap-<asm-revision> in de aks-istio-system naamruimte. Als uw cluster bijvoorbeeld asm-1-18 revisie van mesh uitvoert, moet de ConfigMap de naam hebben.istio-shared-configmap-asm-1-18 Mesh-configuratie moet worden opgegeven in de gegevenssectie onder mesh.

    Voorbeeld:

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

    De waarden onder defaultConfig zijn mesh-brede instellingen die worden toegepast voor envoy sidecar proxy.

Let op

Een standaardconfiguratiemap (bijvoorbeeld istio-asm-1-18 voor revisie asm-1-18) wordt gemaakt in aks-istio-system naamruimte op het cluster wanneer de Istio-invoegtoepassing is ingeschakeld. Deze standaardconfiguratiemap wordt echter afgestemd door de beheerde Istio-invoegtoepassing en daarom moeten gebruikers deze ConfigMap niet rechtstreeks bewerken. In plaats daarvan moeten gebruikers een revisiespecifieke istio gedeelde ConfigMap maken (bijvoorbeeld istio-shared-configmap-asm-1-18 voor revisie asm-1-18) in de aks-istio-systeemnaamruimte, waarna het Istio-besturingsvlak dit samenvoegt met de standaardConfigMap, waarbij de standaardinstellingen voorrang krijgen.

Mesh-configuratie en -upgrades

Wanneer u een canary-upgrade uitvoert voor Istio, moet u een afzonderlijke ConfigMap maken voor de nieuwe revisie in de aks-istio-system naamruimte voordat u de canary-upgrade start. Op deze manier is de configuratie beschikbaar wanneer het besturingsvlak van de nieuwe revisie op het cluster wordt geïmplementeerd. Als u bijvoorbeeld de mesh bijwerkt van asm-1-18 naar asm-1-19, moet u wijzigingen kopiëren van waaruit istio-shared-configmap-asm-1-18 u een nieuwe ConfigMap wilt maken die in de aks-istio-system naamruimte wordt aangeroepenistio-shared-configmap-asm-1-19.

Nadat de upgrade is voltooid of teruggedraaid, kunt u de ConfigMap verwijderen van de revisie die uit het cluster is verwijderd.

Toegestane, ondersteunde en geblokkeerde MeshConfig-waarden

Velden in MeshConfig zijn geclassificeerd als allowed, supportedof blocked. Zie het ondersteuningsbeleid voor istio-invoegtoepassingsfuncties en configuratieopties voor meer informatie over deze categorieën.

Mesh-configuratie en de lijst met toegestane/ondersteunde velden zijn revisies die specifiek zijn om rekening te houden met velden die worden toegevoegd/verwijderd tijdens revisies. De volledige lijst met toegestane velden en de ondersteunde/niet-ondersteunde velden in de lijst met toegestane velden vindt u in de onderstaande tabel. Wanneer er nieuwe mesh-revisie beschikbaar wordt gesteld, worden eventuele wijzigingen in toegestane en ondersteunde classificatie van de velden in deze tabel vermeld.

MeshConfig

Velden die aanwezig zijn in open source MeshConfig-referentiedocumentatie die niet in de volgende tabel worden behandeld, worden geblokkeerd. Wordt bijvoorbeeld configSources geblokkeerd.

Veld Ondersteund/toegestaan Notes
proxyListenPort Toegestaan -
proxyInboundListenPort Toegestaan -
proxyHttpPort Toegestaan -
connectTimeout Toegestaan Configureerbaar in DestinationRule
tcpKeepalive Toegestaan Configureerbaar in DestinationRule
defaultConfig Ondersteund Wordt gebruikt om ProxyConfig te configureren
uitgaandeTrafficPolicy Ondersteund Ook configureerbaar in Sidecar CR
extensionProviders Toegestaan -
defaultProviders Toegestaan -
accessLogFile Ondersteund Dit veld heeft betrekking op het genereren van toegangslogboeken. Raadpleeg Azure Monitor Container Insights in AKS voor een beheerde ervaring voor het verzamelen en opvragen van logboeken. Het wordt aangeraden om logboekregistratie van toegang te configureren via de Telemetry-API.
accessLogFormat Ondersteund Dit veld heeft betrekking op het genereren van toegangslogboeken. Raadpleeg Azure Monitor Container Insights in AKS voor een beheerde ervaring voor het verzamelen en opvragen van logboeken
accessLogEncoding Ondersteund Dit veld heeft betrekking op het genereren van toegangslogboeken. Raadpleeg Azure Monitor Container Insights in AKS voor een beheerde ervaring voor het verzamelen en opvragen van logboeken
enableTracing Toegestaan Het wordt aangeraden tracering te configureren via de Telemetrie-API.
enableEnvoyAccessLogService Ondersteund Dit veld heeft betrekking op het genereren van toegangslogboeken. Raadpleeg Azure Monitor Container Insights in AKS voor een beheerde ervaring voor het verzamelen en opvragen van logboeken
disableEnvoyListenerLog Ondersteund Dit veld heeft betrekking op het genereren van toegangslogboeken. Raadpleeg Azure Monitor Container Insights in AKS voor een beheerde ervaring voor het verzamelen en opvragen van logboeken
trustDomain Toegestaan -
trustDomainAliases Toegestaan -
caCertificates Toegestaan Configureerbaar in DestinationRule
defaultServiceExportTo Toegestaan Configureerbaar in ServiceEntry
defaultVirtualServiceExportTo Toegestaan Configureerbaar in VirtualService
defaultDestinationRuleExportTo Toegestaan Configureerbaar in DestinationRule
localityLbSetting Toegestaan Configureerbaar in DestinationRule
dnsRefreshRate Toegestaan -
h2UpgradePolicy Toegestaan Configureerbaar in DestinationRule
enablePrometheusMerge Toegestaan -
discoverySelectors Ondersteund -
pathNormalization Toegestaan -
defaultHttpRetryPolicy Toegestaan Configureerbaar in VirtualService
serviceSettings Toegestaan -
meshMTLS Toegestaan -
tlsDefaults Toegestaan -
ingressService Toegestaan Naam van de Kubernetes-service die wordt gebruikt voor de istio-ingangscontroller.
ingressSelector Toegestaan Hiermee definieert u welke gatewayimplementatie moet worden gebruikt als de ingangscontroller. Dit veld komt overeen met het veld Gateway.selector en wordt ingesteld als istio: INGRESS_SELECTOR.

ProxyConfig (meshConfig.defaultConfig)

Velden die aanwezig zijn in open source MeshConfig-referentiedocumentatie die niet in de volgende tabel worden behandeld, worden geblokkeerd.

Veld Ondersteund/toegestaan Notes
tracingServiceName Toegestaan Het wordt aangeraden tracering te configureren via de Telemetrie-API.
drainDuration Ondersteund -
statsUdpAddress Toegestaan -
proxyAdminPort Toegestaan -
Tracering Toegestaan Het wordt aangeraden tracering te configureren via de Telemetrie-API.
Concurrency Ondersteund -
envoyAccessLogService Toegestaan Het wordt aangeraden tracering te configureren via de Telemetrie-API.
envoyMetricsService Toegestaan Het wordt aangeraden om verzameling metrische gegevens te configureren via de Telemetry-API.
proxyMetadata Toegestaan -
statusPort Toegestaan -
extraStatTags Toegestaan -
proxyStatsMatcher Toegestaan -
terminationDrainDuration Ondersteund -
meshId Toegestaan -
holdApplicationUntilProxyStarts Ondersteund -
caCertificatesPem Toegestaan -
privateKeyProvider Toegestaan -

Let op

Ondersteuningsbereik van configuraties: Met mesh-configuratie kunnen extensieproviders, zoals zelfbeheerde exemplaren van Zipkin of Apache Skywalking, worden geconfigureerd met de Istio-invoegtoepassing. Deze uitbreidingsproviders vallen echter buiten het ondersteuningsbereik van de Istio-invoegtoepassing. Eventuele problemen met betrekking tot extensiehulpprogramma's vallen buiten de ondersteuningsgrens van de Istio-invoegtoepassing.

Veelvoorkomende fouten en tips voor probleemoplossing

  • Zorg ervoor dat MeshConfig is ingesprongen met spaties in plaats van tabbladen.
  • Zorg ervoor dat u alleen de revisiespecifieke gedeelde ConfigMap bewerkt (bijvoorbeeld istio-shared-configmap-asm-1-18) en niet probeert de standaardconfiguratiemap te bewerken (bijvoorbeeld istio-asm-1-18).
  • De ConfigMap moet de naam istio-shared-configmap-<asm-revision> volgen en zich in de aks-istio-system naamruimte bevinden.
  • Zorg ervoor dat alle MeshConfig-velden juist zijn gespeld. Als ze niet worden herkend of als ze geen deel uitmaken van de toegestane lijst, weigert toegangsbeheer dergelijke configuraties.
  • Wanneer u canary-upgrades uitvoert, controleert u de revisiespecifieke ConfigMaps om ervoor te zorgen dat configuraties bestaan voor de revisies die in uw cluster zijn geïmplementeerd.
  • Bepaalde MeshConfig opties, zoals accessLogging, kunnen het resourceverbruik van Envoy verhogen en het uitschakelen van sommige van deze instellingen kan het resourcegebruik van het Gegevensvlak van Istio beperken. Het is ook raadzaam om het discoverySelectors veld in meshconfig te gebruiken om het geheugenverbruik voor Istiod en Envoy te verlichten.
  • Als het concurrency veld in de MeshConfig onjuist is geconfigureerd en op nul is ingesteld, zorgt dit ervoor dat Envoy alle CPU-kernen gebruikt. Als dit veld niet is ingesteld, wordt het aantal werkthreads dat moet worden uitgevoerd, automatisch bepaald op basis van CPU-aanvragen/-limieten.
  • Pod- en sidecar-racevoorwaarden waarin de toepassing begint voordat Envoy kan worden beperkt met behulp van het holdApplicationUntilProxyStarts veld in MeshConfig.