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
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" }
Maak een ConfigMap met de naam
istio-shared-configmap-<asm-revision>
in deaks-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
, supported
of 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 (bijvoorbeeldistio-asm-1-18
). - De ConfigMap moet de naam
istio-shared-configmap-<asm-revision>
volgen en zich in deaks-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 hetdiscoverySelectors
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.
Azure Kubernetes Service