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'
Dane wyjściowe:
{ "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 ten domyślny element ConfigMap jest uzgadniany przez zarządzany dodatek Istio, dlatego 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
Pola w tabeli MeshConfig
są klasyfikowane w trzech kategoriach:
- Zablokowane: niedozwolone pola są blokowane za pośrednictwem elementów webhook dostępu zarządzanego przez dodatek. Serwer interfejsu API natychmiast publikuje użytkownikowi komunikat o błędzie, którego pole jest niedozwolone.
- Obsługiwane: Obsługiwane pola (na przykład pola związane z rejestrowaniem dostępu) otrzymują pomoc techniczną od pomoc techniczna platformy Azure.
- Dozwolone: te pola (takie jak proxyListenPort lub proxyInboundListenPort) są dozwolone, ale nie są objęte pomoc techniczna platformy Azure.
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
Pole | Obsługiwane | Uwagi |
---|---|---|
proxyListenPort | fałsz | - |
proxyInboundListenPort | fałsz | - |
proxyHttpPort | fałsz | - |
Connecttimeout | fałsz | Możliwość konfigurowania w elemecie DestinationRule |
tcpKeepAlive | fałsz | Możliwość konfigurowania w elemecie DestinationRule |
defaultConfig | prawda | Służy do konfigurowania konfiguracji serwera proxy |
outboundTrafficPolicy | prawda | Można również konfigurować w przyczepce CR |
extensionProviders | fałsz | - |
defaultProviders | fałsz | - |
accessLogFile | prawda | - |
accessLogFormat | prawda | - |
accessLogEncoding | prawda | - |
enableTracing | prawda | - |
enableEnvoyAccessLogService | prawda | - |
disableEnvoyListenerLog | prawda | - |
trustDomain | fałsz | - |
trustDomainAliases | fałsz | - |
caCertificates | fałsz | Możliwość konfigurowania w elemecie DestinationRule |
defaultServiceExportTo | fałsz | Konfigurowalne w usłudze ServiceEntry |
defaultVirtualServiceExportTo | fałsz | Możliwość konfigurowania w usłudze wirtualnej |
defaultDestinationRuleExportTo | fałsz | Możliwość konfigurowania w elemecie DestinationRule |
localityLbSetting | fałsz | Możliwość konfigurowania w elemecie DestinationRule |
dnsRefreshRate | fałsz | - |
h2UpgradePolicy | fałsz | Możliwość konfigurowania w elemecie DestinationRule |
enablePrometheusMerge | prawda | - |
discoverySelectors | prawda | - |
pathNormalization | fałsz | - |
defaultHttpRetryPolicy | fałsz | Możliwość konfigurowania w usłudze wirtualnej |
usługa Ustawienia | fałsz | - |
meshMTLS | fałsz | - |
tlsDefaults | fałsz | - |
ProxyConfig (meshConfig.defaultConfig)
Pole | Obsługiwane |
---|---|
tracingServiceName | prawda |
opróżnianie | prawda |
statsUdpAddress | fałsz |
proxy Administracja Port | fałsz |
Śledzenia | prawda |
współbieżność | prawda |
envoyAccessLogService | prawda |
envoyMetricsService | prawda |
proxyMetadata | fałsz |
statusPort | fałsz |
extraStatTags | fałsz |
proxyStatsMatcher | fałsz |
terminationDrainDuration | prawda |
meshId | fałsz |
holdApplicationUntilProxyStarts | prawda |
caCertificatesPem | fałsz |
privateKeyProvider | fałsz |
Pola obecne w dokumentacji referencyjnej usługi MeshConfig typu open source, ale nie w powyższej tabeli są blokowane. Na przykład configSources
jest zablokowany.
Uwaga
Zakres konfiguracji pomocy technicznej: Konfiguracja usługi Mesh umożliwia dostawcom rozszerzeń, takim jak wystąpienia własne zipkin lub apache Skywalking, które mają być skonfigurowane 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ź poprawek określoną konfigurację Mapy aby upewnić się, że konfiguracje istnieją dla wersji 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.