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 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 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 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ä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.