Konfigurowanie dodatku siatki usług opartej na technologii Istio dla usługi Azure Kubernetes Service
Istio typu open source używa narzędzia MeshConfig do definiowania ustawień dotyczących całej siatki usługi Istio. Dodatek siatki usług oparty na systemie Istio dla usługi AKS jest oparty na kompilacji MeshConfig i klasyfikuje różne właściwości jako obsługiwane, dozwolone i zablokowane.
W tym artykule opisano sposób konfigurowania dodatku siatki usług opartej na systemie Istio dla usługi Azure Kubernetes Service i zasad pomocy technicznej mających zastosowanie do takiej konfiguracji.
Wymagania wstępne
W tym przewodniku założono, że wykonano czynności opisane w dokumentacji , aby włączyć dodatek Istio w klastrze usługi AKS.
Konfigurowanie konfiguracji w klastrze
Dowiedz się, która wersja rozwiązania Istio jest wdrażana w klastrze:
az aks show --name $CLUSTER --resource-group $RESOURCE_GROUP --query 'serviceMeshProfile'
Wyjście:
{ "istio": { "certificateAuthority": null, "components": { "egressGateways": null, "ingressGateways": null }, "revisions": [ "asm-1-18" ] }, "mode": "Istio" }
Utwórz ConfigMap z nazwą
istio-shared-configmap-<asm-revision>
waks-istio-system
przestrzeni nazw. Jeśli na przykład klaster działa w wersji asm-1-18 siatki, element ConfigMap musi mieć nazwę .istio-shared-configmap-asm-1-18
Konfiguracja siatki musi być podana w sekcji danych pod siatką.Przykład:
apiVersion: v1 kind: ConfigMap metadata: name: istio-shared-configmap-asm-1-18 namespace: aks-istio-system data: mesh: |- accessLogFile: /dev/stdout defaultConfig: holdApplicationUntilProxyStarts: true
Wartości w obszarze
defaultConfig
to ustawienia całego siatki stosowane dla serwera proxy przyczepki usługi Envoy.
Uwaga
Domyślna ConfigMap (na przykład istio-asm-1-18
dla poprawki asm-1-18) jest tworzona w aks-istio-system
przestrzeni nazw w klastrze po włączeniu dodatku Istio. Jednak ta domyślna mapa ConfigMap jest uzgadniana przez zarządzany dodatek Istio, a tym samym użytkownicy nie powinni bezpośrednio edytować tej mapy konfiguracji. Zamiast tego użytkownicy powinni utworzyć przestrzeń nazw aks-istio shared ConfigMap (na przykład istio-shared-configmap-asm-1-18
w przypadku poprawki asm-1-18) w przestrzeni nazw aks-istio-system, a następnie płaszczyzna sterowania Istio scali to z domyślnym ConfigMap, z ustawieniami domyślnymi, które mają pierwszeństwo.
Konfiguracja i uaktualnienia usługi Mesh
W przypadku przeprowadzania uaktualnienia kanarkowego dla środowiska Istio należy utworzyć oddzielną ConfigMap dla nowej poprawki w aks-istio-system
przestrzeni nazw przed zainicjowaniem uaktualnienia kanary. Dzięki temu konfiguracja jest dostępna po wdrożeniu płaszczyzny sterowania nowej poprawki w klastrze. Jeśli na przykład uaktualniasz siatkę z asm-1-18 do asm-1-19, musisz skopiować zmiany z istio-shared-configmap-asm-1-18
, aby utworzyć nową ConfigMap o nazwie istio-shared-configmap-asm-1-19
w aks-istio-system
przestrzeni nazw.
Po zakończeniu uaktualnienia lub wycofaniu można usunąć ConfigMap poprawki usuniętej z klastra.
Dozwolone, obsługiwane i zablokowane wartości MeshConfig
Pola w obiekcie MeshConfig
są klasyfikowane jako allowed
, supported
lub blocked
. Aby dowiedzieć się więcej na temat tych kategorii, zobacz zasady pomocy technicznej dotyczące funkcji dodatku Istio i opcji konfiguracji.
Konfiguracja siatki i lista dozwolonych/obsługiwanych pól są poprawkami specyficznymi dla pól dodawanych/usuwanych w poprawkach. Pełna lista dozwolonych pól i obsługiwanych/nieobsługiwanych na liście dozwolonych znajduje się w poniższej tabeli. Po udostępnieniu nowej poprawki siatki wszelkie zmiany dozwolonej i obsługiwanej klasyfikacji pól są zanotowywane w tej tabeli.
MeshConfig
Pola obecne w dokumentacji referencyjnej open source MeshConfig, które nie zostały omówione w poniższej tabeli, są blokowane. Na przykład configSources
jest zablokowany.
Pole | Obsługiwane/dozwolone | Uwagi |
---|---|---|
proxyListenPort | Dozwolone | - |
proxyInboundListenPort | Dozwolone | - |
proxyHttpPort | Dozwolone | - |
connectTimeout | Dozwolone | Możliwość konfigurowania w elemecie DestinationRule |
tcpKeepAlive | Dozwolone | Możliwość konfigurowania w elemecie DestinationRule |
defaultConfig | Obsługiwane | Służy do konfigurowania konfiguracji serwera proxy |
outboundTrafficPolicy | Obsługiwane | Można również konfigurować w przyczepce CR |
extensionProviders | Dozwolone | - |
defaultProviders | Dozwolone | - |
accessLogFile | Obsługiwane | To pole dotyczy generowania dzienników dostępu. Aby uzyskać zarządzane środowisko zbierania i wykonywania zapytań dotyczących dzienników, zapoznaj się z tematem Azure Monitor Container Insights on AKS (Usługa Azure Monitor Container Insights w usłudze AKS). Zachęcamy do skonfigurowania rejestrowania dostępu za pośrednictwem interfejsu API telemetrii. |
accessLogFormat | Obsługiwane | To pole dotyczy generowania dzienników dostępu. Aby uzyskać zarządzane środowisko zbierania i wykonywania zapytań dotyczących dzienników, zapoznaj się z tematem Azure Monitor Container Insights on AKS (Szczegółowe informacje o kontenerach usługi Azure Monitor w usłudze AKS) |
accessLogEncoding | Obsługiwane | To pole dotyczy generowania dzienników dostępu. Aby uzyskać zarządzane środowisko zbierania i wykonywania zapytań dotyczących dzienników, zapoznaj się z tematem Azure Monitor Container Insights on AKS (Szczegółowe informacje o kontenerach usługi Azure Monitor w usłudze AKS) |
enableTracing | Dozwolone | Zaleca się skonfigurowanie śledzenia za pośrednictwem interfejsu API telemetrii. |
enableEnvoyAccessLogService | Obsługiwane | To pole dotyczy generowania dzienników dostępu. Aby uzyskać zarządzane środowisko zbierania i wykonywania zapytań dotyczących dzienników, zapoznaj się z tematem Azure Monitor Container Insights on AKS (Szczegółowe informacje o kontenerach usługi Azure Monitor w usłudze AKS) |
disableEnvoyListenerLog | Obsługiwane | To pole dotyczy generowania dzienników dostępu. Aby uzyskać zarządzane środowisko zbierania i wykonywania zapytań dotyczących dzienników, zapoznaj się z tematem Azure Monitor Container Insights on AKS (Szczegółowe informacje o kontenerach usługi Azure Monitor w usłudze AKS) |
trustDomain | Dozwolone | - |
trustDomainAliases | Dozwolone | - |
caCertificates | Dozwolone | Możliwość konfigurowania w elemecie DestinationRule |
defaultServiceExportTo | Dozwolone | Konfigurowalne w usłudze ServiceEntry |
defaultVirtualServiceExportTo | Dozwolone | Możliwość konfigurowania w usłudze wirtualnej |
defaultDestinationRuleExportTo | Dozwolone | Możliwość konfigurowania w elemecie DestinationRule |
localityLbSetting | Dozwolone | Możliwość konfigurowania w elemecie DestinationRule |
dnsRefreshRate | Dozwolone | - |
h2UpgradePolicy | Dozwolone | Możliwość konfigurowania w elemecie DestinationRule |
enablePrometheusMerge | Dozwolone | - |
discoverySelectors | Obsługiwane | - |
pathNormalization | Dozwolone | - |
defaultHttpRetryPolicy | Dozwolone | Możliwość konfigurowania w usłudze wirtualnej |
serviceSettings | Dozwolone | - |
meshMTLS | Dozwolone | - |
tlsDefaults | Dozwolone | - |
ingressService | Dozwolone | Nazwa usługi Kubernetes używanej dla kontrolera ruchu przychodzącego istio. |
ingressSelector | Dozwolone | Określa, które wdrożenie bramy ma być używane jako kontroler ruchu przychodzącego. To pole odpowiada polu Gateway.selector i zostanie ustawione jako istio: INGRESS_SELECTOR. |
ProxyConfig (meshConfig.defaultConfig)
Pola obecne w dokumentacji referencyjnej open source MeshConfig, które nie zostały omówione w poniższej tabeli, są blokowane.
Pole | Obsługiwane/dozwolone | Uwagi |
---|---|---|
tracingServiceName | Dozwolone | Zaleca się skonfigurowanie śledzenia za pośrednictwem interfejsu API telemetrii. |
opróżnianie | Obsługiwane | - |
statsUdpAddress | Dozwolone | - |
proxyAdminPort | Dozwolone | - |
Śledzenia | Dozwolone | Zaleca się skonfigurowanie śledzenia za pośrednictwem interfejsu API telemetrii. |
współbieżność | Obsługiwane | - |
envoyAccessLogService | Dozwolone | Zaleca się skonfigurowanie śledzenia za pośrednictwem interfejsu API telemetrii. |
envoyMetricsService | Dozwolone | Zachęcamy do skonfigurowania zbierania metryk za pośrednictwem interfejsu API telemetrii. |
proxyMetadata | Dozwolone | - |
statusPort | Dozwolone | - |
extraStatTags | Dozwolone | - |
proxyStatsMatcher | Dozwolone | - |
terminationDrainDuration | Obsługiwane | - |
meshId | Dozwolone | - |
holdApplicationUntilProxyStarts | Obsługiwane | - |
caCertificatesPem | Dozwolone | - |
privateKeyProvider | Dozwolone | - |
Uwaga
Zakres konfiguracji pomocy technicznej: Konfiguracja usługi Mesh umożliwia dostawcom rozszerzeń, takim jak wystąpienia zarządzane samodzielnie zipkin lub apache Skywalking, które mają być konfigurowane za pomocą dodatku Istio. Jednak ci dostawcy rozszerzeń znajdują się poza zakresem pomocy technicznej dodatku Istio. Wszelkie problemy związane z narzędziami rozszerzenia znajdują się poza granicą pomocy technicznej dodatku Istio.
Typowe błędy i porady dotyczące rozwiązywania problemów
- Upewnij się, że właściwość MeshConfig jest wcięta ze spacjami zamiast kart.
- Upewnij się, że edytujesz tylko udostępnioną ConfigMap poprawkę (na przykład
istio-shared-configmap-asm-1-18
) i nie próbujesz edytować domyślnej ConfigMap (na przykładistio-asm-1-18
). - ConfigMap musi być zgodna z nazwą
istio-shared-configmap-<asm-revision>
i znajdować się waks-istio-system
przestrzeni nazw. - Upewnij się, że wszystkie pola MeshConfig są poprawnie napisane. Jeśli są nierozpoznane lub jeśli nie są częścią listy dozwolonych, kontrola dostępu odrzuca takie konfiguracje.
- Podczas przeprowadzania uaktualnień kanarowych sprawdź określoną poprawkę ConfigMaps, aby upewnić się, że konfiguracje istnieją dla poprawek wdrożonych w klastrze.
- Niektóre
MeshConfig
opcje, takie jak accessLogging, mogą zwiększyć użycie zasobów usługi Envoy, a wyłączenie niektórych z tych ustawień może ograniczyć wykorzystanie zasobów płaszczyzny danych Istio. Zaleca się również użyciediscoverySelectors
pola w elemecie MeshConfig w celu złagodzenia zużycia pamięci dla istiod i wysłannika. concurrency
Jeśli pole w usłudze MeshConfig jest nieprawidłowo skonfigurowane i ustawione na zero, spowoduje to, że usługa Envoy będzie używać wszystkich rdzeni procesora CPU. Zamiast tego, jeśli to pole jest niezastawione, liczba wątków roboczych do uruchomienia jest automatycznie określana na podstawie żądań/limitów procesora CPU.- Warunki wyścigu pod i przyczepki, w których aplikacja rozpoczyna się przed Envoy można złagodzić przy użyciu
holdApplicationUntilProxyStarts
pola w MeshConfig.
Azure Kubernetes Service