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.

Vereiste voorwaarden

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:

    export RANDOM_SUFFIX=$(head -c 3 /dev/urandom | xxd -p)
    export CLUSTER="my-aks-cluster"
    export RESOURCE_GROUP="my-aks-rg$RANDOM_SUFFIX"
    az aks show --name $CLUSTER --resource-group $RESOURCE_GROUP --query 'serviceMeshProfile' --output json
    

    Resultaten:

    {
      "istio": {
        "certificateAuthority": null,
        "components": {
          "egressGateways": null,
          "ingressGateways": null
        },
        "revisions": [
          "asm-1-24"
        ]
      },
      "mode": "Istio"
    }
    

    Met deze opdracht wordt het Istio-service-mesh-profiel weergegeven, inclusief de revisies die momenteel zijn geïmplementeerd op uw AKS-cluster.

  2. Maak een ConfigMap met de naam istio-shared-configmap-<asm-revision> in de aks-istio-system naamruimte. Als uw cluster bijvoorbeeld asm-1-24-revisie van mesh uitvoert, moet de ConfigMap de naam istio-shared-configmap-asm-1-24hebben. Mesh-configuratie moet worden opgegeven in de gegevenssectie onder mesh.

    Voorbeeld:

    cat <<EOF > istio-shared-configmap-asm-1-24.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: istio-shared-configmap-asm-1-24
      namespace: aks-istio-system
    data:
      mesh: |-
        accessLogFile: /dev/stdout
        defaultConfig:
          holdApplicationUntilProxyStarts: true
    EOF
    kubectl apply -f istio-shared-configmap-asm-1-24.yaml
    

    Resultaten:

    configmap/istio-shared-configmap-asm-1-24 created
    

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

Waarschuwing

Een standaardconfiguratiemap (bijvoorbeeld istio-asm-1-24 voor revisie asm-1-24) wordt gemaakt in aks-istio-system naamruimte op het cluster wanneer de invoegtoepassing Istio 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-24 voor revisie asm-1-24) in de naamruimte aks-istio-system, waarna het istio-besturingsvlak dit samenvoegt met de standaardConfigMap, waarbij de standaardinstellingen voorrang krijgen.

Mesh-configuratie en -updates

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-24 naar asm-1-25, moet u wijzigingen van istio-shared-configmap-asm-1-24 kopiëren om een nieuwe ConfigMap genaamd istio-shared-configmap-asm-1-25 te creëren in de aks-istio-system naamruimte.

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 specifiek voor een bepaalde revisie, zodat er rekening gehouden kan worden met velden die worden toegevoegd of verwijderd tussen verschillende 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. Bijvoorbeeld wordt configSources geblokkeerd.

Veld Ondersteund/toegestaan Notities
proxyListenPort Toegestaan -
proxyInboundListenPort Toegestaan -
proxyHttpPort Toegestaan -
connectTimeout (verbindingswachttijd) Toegestaan Configureerbaar in DestinationRule
tcpKeepalive Toegestaan Configureerbaar in DestinationRule
standaardconfiguratie Ondersteund Wordt gebruikt om ProxyConfig te configureren
uitgaand verkeerbeleid Ondersteund Ook configureerbaar in Sidecar CR
uitbreidingsleveranciers Toegestaan -
standaardproviders Toegestaan -
toegangslogbestand 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.
toegangslogboekformaat 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
toeganglogboekcodering 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
tracering inschakelen 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
uitschakelenEnvoyListenerLog 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
vertrouwensdomein Toegestaan -
vertrouwensdomeinaliassen Toegestaan -
CA-certificaten Toegestaan Configureerbaar in DestinationRule
defaultServiceExportNaar Toegestaan Configureerbaar in ServiceEntry
defaultVirtualServiceExportTo Toegestaan Configureerbaar in VirtualService
defaultBestemmingRegelExportNaar Toegestaan Configureerbaar in DestinationRule
lokaliteitLbInstelling Toegestaan Configureerbaar in DestinationRule
DNS-verversingssnelheid Toegestaan -
h2UpgradePolicy Toegestaan Configureerbaar in DestinationRule
PrometheusSamenvoegingInschakelen Toegestaan -
discoverySelectors Ondersteund -
padnormalisatie Toegestaan -
defaultHttpRetryPolicy Toegestaan Configureerbaar in VirtualService
service-instellingen Toegestaan -
meshMTLS Toegestaan -
tls-standaardinstellingen Toegestaan -
ingressService Toegestaan Naam van de Kubernetes-service die wordt gebruikt voor de istio-ingangscontroller.
toegangsselector Toegestaan Hiermee definieert u welke implementatie van de gateway moet worden gebruikt als de Ingress-controller. 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 Notities
traceerDienstNaam Toegestaan Het wordt aangeraden tracering te configureren via de Telemetrie-API.
leegerduur Ondersteund -
statsUdpAddress Toegestaan -
proxyAdminPort Toegestaan -
tracing Toegestaan Het wordt aangeraden tracering te configureren via de Telemetrie-API.
concurrency Ondersteund -
EnvoyToegangslogdienst 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 -
statuspoort Toegestaan -
extraStatTags Toegestaan -
gatewaytopologie Toegestaan -
proxyStatsMatcher Toegestaan -
beëindigingsafvoerduur Ondersteund -
meshId Toegestaan -
houdDeApplicatieVastTotDeProxyStart Ondersteund -
ca-certificaten-PEM Toegestaan -
privateKeyProvider Toegestaan -

Waarschuwing

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 de MeshConfig met spaties is ingesprongen in plaats van tabbladen.
  • Zorg ervoor dat u alleen de revisiespecifieke gedeelde ConfigMap bewerkt (bijvoorbeeld istio-shared-configmap-asm-1-24) en niet probeert de standaardconfiguratiemap te bewerken (bijvoorbeeld istio-asm-1-24).
  • 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 zal worden uitgevoerd, automatisch bepaald op basis van CPU-aanvragen en -limieten.
  • Pod- en Sidecar-racecondities waarbij de applicatie start voordat Envoy kan worden beperkt met behulp van het holdApplicationUntilProxyStarts veld in de MeshConfig.