Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Open-source'owa Istio używa MeshConfig do definiowania ustawień dla całej siatki w ramach usługi Istio. Dodatek do siatki usług opartej na Istio dla AKS opiera się na MeshConfig i klasyfikuje różne właściwości jako obsługiwane, dozwolone i zablokowane.
Ten artykuł objaśnia, jak skonfigurować dodatek dla siatki serwisowej opartej na Istio dla usługi Azure Kubernetes oraz politykę wsparcia obowiązującą dla takiej konfiguracji.
Wymagania wstępne
Przewodnik zakłada, że postępowałeś zgodnie z dokumentacją, aby włączyć dodatek Istio na klastrze AKS.
Skonfiguruj klaster
Dowiedz się, która wersja Istio jest wdrożona na klastrze:
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 jsonWyniki:
{ "istio": { "certificateAuthority": null, "components": { "egressGateways": null, "ingressGateways": null }, "revisions": [ "asm-1-24" ] }, "mode": "Istio" }To polecenie pokazuje profil siatki usługi Istio, w tym poprawki aktualnie wdrożone w klastrze usługi AKS.
Utwórz ConfigMap o nazwie
istio-shared-configmap-<asm-revision>w przestrzeni nazwaks-istio-system. Na przykład, jeśli twój klaster działa na wersji asm-1-24 sieci, to ConfigMap musi być nazwany jakoistio-shared-configmap-asm-1-24. Konfiguracja siatki musi być dostarczona w sekcji danych pod siatką.Przykład:
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.yamlWyniki:
configmap/istio-shared-configmap-asm-1-24 createdWartości pod
defaultConfigsą ustawieniami dotyczącymi całej siatki, stosowanymi dla proxy Envoy sidecar.
Ostrzeżenie
Domyślny ConfigMap (na przykład istio-asm-1-24 dla wersji asm-1-24) jest tworzony w przestrzeni nazw aks-istio-system na klastrze, kiedy włączony jest dodatek Istio. Domyślna mapa ConfigMap jest uzgadniana przez zarządzany dodatek Istio, dlatego użytkownicy nie powinni bezpośrednio jej edytować. Zamiast tego użytkownicy powinni utworzyć współdzielony ConfigMap Istio specyficzny dla rewizji (na przykład istio-shared-configmap-asm-1-24 dla rewizji asm-1-24) w przestrzeni nazw aks-istio-system, a następnie płaszczyzna kontrolna Istio połączy go z domyślnym ConfigMap, przy czym domyślne ustawienia będą miały pierwszeństwo.
Konfiguracja i modernizacje sieci mesh
Podczas wykonywania aktualizacji kanarkowej dla Istio musisz utworzyć oddzielny ConfigMap dla nowej wersji w przestrzeni nazw aks-istio-systemprzed rozpoczęciem aktualizacji kanarkowej. W ten sposób konfiguracja jest dostępna, gdy płaszczyzna kontrolna nowej wersji jest wdrażana w klastrze. Na przykład, jeśli dokonujesz uaktualnienia sieci z asm-1-24 do asm-1-25, musisz skopiować zmiany z istio-shared-configmap-asm-1-24, aby utworzyć nowy ConfigMap o nazwie istio-shared-configmap-asm-1-25 w przestrzeni nazw aks-istio-system.
Po zakończeniu lub wycofaniu aktualizacji można usunąć ConfigMap wersji, która została usunięta z klastra.
Dopuszczone, obsługiwane i zablokowane wartości MeshConfig
Pola w MeshConfig są klasyfikowane jako allowed, supported, lub blocked. Aby dowiedzieć się więcej o tych kategoriach, zapoznaj się z polityką wsparcia dotyczącą funkcji dodatkowych i opcji konfiguracji Istio.
Konfiguracja siatki oraz lista dozwolonych/wspieranych pól są specyficzne dla danej wersji, aby uwzględniać dodawanie/usuwanie pól w kolejnych wersjach. Pełna lista dozwolonych pól oraz tych, które są obsługiwane/nieobsługiwane w ramach dozwolonej listy, jest przedstawiona w poniższej tabeli. Gdy dostępna jest nowa wersja siatki, wszelkie zmiany w dozwolonej i obsługiwanej klasyfikacji pól są odnotowywane w tej tabeli.
MeshConfig
Pola obecne w dokumentacji referencyjnej open source MeshConfig, które nie są uwzględnione w poniższej tabeli, są zablokowane. Na przykład, configSources jest zablokowany.
| Pole | Obsługiwane/Dozwolone | Notatki |
|---|---|---|
| proxyListenPort | Dozwolone | - |
| proxyInboundListenPort | Dozwolone | - |
| proxyHttpPort | Dozwolone | - |
| limitCzasuPołączenia (connectTimeout) | Dozwolone | Możliwe do skonfigurowania w DestinationRule |
| tcpKeepalive | Dozwolone | Możliwe do skonfigurowania w DestinationRule |
| domyślnaKonfiguracja | Wspierany | Używane do konfiguracji ProxyConfig |
| polityka ruchu wychodzącego | Wspierany | Również konfigurowalne w Sidecar CR |
| dostawcy rozszerzeń | Dozwolone | - |
| domyślni dostawcy | Dozwolone | - |
| plik dziennika dostępu | Wspierany | To pole dotyczy generowania dzienników dostępu. Aby uzyskać zarządzane doświadczenie w zakresie zbierania i zapytań logów, zapoznaj się z Azure Monitor Container Insights na AKS. Zaleca się skonfigurowanie logowania dostępu za pomocą interfejsu API Telemetrii. |
| accessLogFormat | Wspierany | To pole dotyczy generowania dzienników dostępu. Aby uzyskać zarządzane doświadczenia w zakresie zbierania i odpytywania dzienników, zapoznaj się z Azure Monitor Container Insights na AKS. |
| KodowanieDziennikaDostępu | Wspierany | To pole dotyczy generowania dzienników dostępu. Aby uzyskać zarządzane doświadczenia w zakresie zbierania i odpytywania dzienników, zapoznaj się z Azure Monitor Container Insights na AKS. |
| włączanie śledzenia | Dozwolone | Zaleca się konfigurowanie śledzenia za pomocą API telemetrii. |
| włączEnvoyDziennikDostępuUsługi | Wspierany | To pole dotyczy generowania dzienników dostępu. Aby uzyskać zarządzane doświadczenia w zakresie zbierania i odpytywania dzienników, zapoznaj się z Azure Monitor Container Insights na AKS. |
| wyłączEnvoyListenerLog | Wspierany | To pole dotyczy generowania dzienników dostępu. Aby uzyskać zarządzane doświadczenia w zakresie zbierania i odpytywania dzienników, zapoznaj się z Azure Monitor Container Insights na AKS. |
| domena zaufania | Dozwolone | - |
| aliasy domen zaufania | Dozwolone | - |
| certyfikaty CA | Dozwolone | Możliwe do skonfigurowania w DestinationRule |
| domyślnaUsługaEksportDo | Dozwolone | Konfigurowalne w ServiceEntry |
| defaultVirtualServiceExportTo | Dozwolone | Konfigurowalne w VirtualService |
| domyślnaRegułaEksportuDoCelowegoMiejsca | Dozwolone | Możliwe do skonfigurowania w DestinationRule |
| localityLbSetting | Dozwolone | Możliwe do skonfigurowania w DestinationRule |
| częstotliwość odświeżania DNS | Dozwolone | - |
| PolitykaAktualizacji | Dozwolone | Możliwe do skonfigurowania w DestinationRule |
| enablePrometheusMerge | Dozwolone | - |
| discoverySelectors | Wspierany | - |
| normalizacja ścieżki | Dozwolone | - |
| domyślnaPolitykaPonawianiaHttp | Dozwolone | Konfigurowalne w VirtualService |
| ustawienia serwisu | 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 są uwzględnione w poniższej tabeli, są zablokowane.
| Pole | Obsługiwane/Dozwolone | Notatki |
|---|---|---|
| tracingServiceName | Dozwolone | Zaleca się konfigurowanie śledzenia za pomocą API telemetrii. |
| czas osuszania | Wspierany | - |
| statsUdpAddress | Dozwolone | - |
| proxyAdminPort | Dozwolone | - |
| śledzenie | Dozwolone | Zaleca się konfigurowanie śledzenia za pomocą API telemetrii. |
| współbieżność | Wspierany | - |
| usługa dziennika dostępu envoy | Dozwolone | Zaleca się konfigurowanie śledzenia za pomocą API telemetrii. |
| envoyMetricsService | Dozwolone | Zaleca się skonfigurowanie zbierania metryk za pomocą interfejsu API Telemetrii. |
| metadane serwera proxy | Dozwolone | - |
| statusPort | Dozwolone | - |
| extraStatTags | Dozwolone | - |
| gatewayTopology | Dozwolone | - |
| proxyStatsMatcher | Dozwolone | - |
| czasOpróżnianiaPoZakończeniu | Wspierany | - |
| meshId | Dozwolone | - |
| wstrzymajAplikacjęDoCzasuUruchomieniaProxy | Wspierany | - |
| certyfikatyCaPem | Dozwolone | - |
| dostawcaKluczaPrywatnego | Dozwolone | - |
| proxyHeaders | Dozwolone | - |
Ostrzeżenie
Zakres wsparcia konfiguracji: Konfiguracja siatki umożliwia dostawcom rozszerzeń, takim jak zarządzane samodzielnie instance Zipkin lub Apache Skywalking, konfigurację za pomocą dodatku Istio. Jednakże, ci dostawcy rozszerzeń nie są objęci zakresem wsparcia dodatku Istio. Wszelkie problemy związane z narzędziami rozszerzającymi znajdują się poza zakresem wsparcia dodatku Istio.
Typowe błędy i porady dotyczące rozwiązywania problemów
- Upewnij się, że MeshConfig jest wcięty za pomocą spacji zamiast tabulatorów.
- Upewnij się, że edytujesz tylko współdzielony ConfigMap specyficzny dla danej rewizji (na przykład
istio-shared-configmap-asm-1-24), a nie próbujesz edytować domyślnego ConfigMap (na przykładistio-asm-1-24). - ConfigMap musi mieć nazwę
istio-shared-configmap-<asm-revision>i znajdować się w przestrzeni nazwaks-istio-system. - Upewnij się, że wszystkie pola MeshConfig są prawidłowo napisane. Jeśli są nierozpoznane lub nie są częścią dozwolonej listy, kontrola dostępu odrzuca takie konfiguracje.
- Podczas wykonywania uaktualnień kanarkowych, sprawdź specyficzne dla rewizji ConfigMapy, aby upewnić się, że konfiguracje istnieją dla rewizji wdrożonych na twoim klastrze.
- Niektóre opcje
MeshConfig, takie jak accessLogging, mogą zwiększać zużycie zasobów przez Envoy, a wyłączenie niektórych z tych ustawień może zmniejszyć wykorzystanie zasobów płaszczyzny danych w Istio. Zaleca się również użycie poladiscoverySelectorsw MeshConfig, aby pomóc zmniejszyć zużycie pamięci przez Istiod i Envoy. - Jeśli pole
concurrencyw MeshConfig jest błędnie skonfigurowane i ustawione na zero, powoduje, że Envoy zużywa wszystkie rdzenie procesora. Zamiast tego, jeśli to pole nie jest ustawione, liczba wątków roboczych do uruchomienia jest automatycznie określana na podstawie żądań/limitów CPU. -
Warunki wyścigu dla poda i sidecara, w których aplikacja uruchamia się przed Envoyem, można złagodzić, używając pola
holdApplicationUntilProxyStartsw MeshConfig.