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
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" }
Skapa en ConfigMap med namnet
istio-shared-configmap-<asm-revision>
iaks-istio-system
namnområdet. Om klustret till exempel kör asm-1-18-revisionen av mesh måste ConfigMap namnges somistio-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
, supported
eller 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 exempelistio-asm-1-18
). - ConfigMap måste följa namnet
istio-shared-configmap-<asm-revision>
och vara iaks-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ältetdiscoverySelectors
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.
Azure Kubernetes Service