Udostępnij za pośrednictwem


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

  1. 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"
    }
    
  2. Utwórz ConfigMap z nazwą istio-shared-configmap-<asm-revision> w aks-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, supportedlub 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ład istio-asm-1-18).
  • ConfigMap musi być zgodna z nazwą istio-shared-configmap-<asm-revision> i znajdować się w aks-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życie discoverySelectors 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.