Open Service Mesh mit Azure Arc-Unterstützung

Öffnen des Dienst-Mesh (OSM) ist ein schlankes, erweiterbares, cloudbasiertes Dienst-Mesh, mit dem Benutzer die Standardfunktionen für die Wahrnehmbarkeit für sehr dynamische Microservice-Umgebungen einheitlich verwalten, sichern und erhalten können.

OSM führt eine Envoy-basierte Kontrollebene auf Kubernetes aus, kann mit SMI-APIs konfiguriert werden und funktioniert, indem ein Envoy-Proxy als Sidecar-Container neben jeder Instanz Ihrer Anwendung injiziert wird. Erfahren Sie mehr über die von Open Service Mesh bereitgestellten Service Mesh-Szenarien.

Alle Komponenten von OMS mit Azure Arc-Unterstützung werden in Verfügbarkeitszonen bereitgestellt und sind daher bezüglich der Zone redundant.

Installationsoptionen und -anforderungen

Open Service Mesh mit Azure Arc-Unterstützung kann über das Azure-Portal, Azure CLI, eine ARM-Vorlage oder eine integrierte Azure-Richtlinie bereitgestellt werden.

Voraussetzungen

  • Stellen Sie sicher, dass Sie alle allgemeinen Voraussetzungen für die hier aufgeführten Clustererweiterungen erfüllt haben.
  • Verwenden der az k8s-extension CLI-Erweiterungsversion >= v1.0.4

Aktuelle Einschränkungen bei der Unterstützung

  • In einem mit Azure Arc verbundenen Kubernetes-Cluster kann nur eine Instanz von Open Service Mesh bereitgestellt werden.
  • Der Support steht für die beiden zuletzt veröffentlichten Nebenversionen des Arc-aktivierten Open-Service-Mesh zur Verfügung. Die neueste Version finden Sie hier. Unterstützte Releaseversionen werden mit Hinweisen angefügt. Ignorieren Sie die Tags, die Zwischenversionen zugeordnet sind.
  • Aktuell werden die folgenden Kubernetes-Distributionen unterstützt:
    • AKS-Engine (Azure Kubernetes Service)
    • AKS-Cluster in Azure Stack HCI
    • AKS mit Azure Arc-Unterstützung
    • Cluster API Azure
    • Google Kubernetes Engine
    • Canonical Kubernetes-Verteilung
    • Rancher Kubernetes Engine
    • OpenShift Kubernetes-Verteilung
    • Amazon Elastic Kubernetes-Dienst
    • VMware Tanzu Kubernetes Grid
  • Die Azure Monitor-Integration in Open Service Mesh mit Azure Arc-Unterstützung ist in der Vorschau mit eingeschränktem Support verfügbar.

Basisinstallation über das Azure-Portal

Für die Bereitstellung über das Azure-Portal navigieren Sie zum Abschnitt Open Service Mesh, sobald Sie über einen mit Arc verbundenen Cluster verfügen.

Open Service Mesh located under Settings for Arc enabled Kubernetes cluster

Wählen Sie die Schaltfläche Erweiterung installieren aus, um die aktuelle Version der Erweiterung bereitzustellen.

Alternativ können Sie die hier dargestellte CLI-Umgebung verwenden. Beim Onboarding im großen Umfang lesen Sie die Abschnitte zur Bereitstellung mithilfe einer ARM-Vorlage und mithilfe von Azure Policy in diesem Artikel.

Basisinstallation über die Azure CLI

Bei den folgenden Schritten wird davon ausgegangen, dass Sie bereits über einen Cluster mit einer unterstützten Kubernetes-Distribution verfügen, der mit Azure Arc verbunden ist. Stellen Sie sicher, dass Ihre KUBECONFIG-Umgebungsvariable auf die kubeconfig-Datei des Arc-fähigen Kubernetes-Clusters verweist.

Legen Sie die folgenden Umgebungsvariablen fest:

export CLUSTER_NAME=<arc-cluster-name>
export RESOURCE_GROUP=<resource-group-name>

Wenn Sie einen OpenShift-Cluster verwenden, fahren Sie mit den Schritten zur OpenShift-Installation fort.

Erstellen Sie die Erweiterung:

Hinweis

Wenn Sie eine bestimmte Version von OSM anheften möchten, fügen Sie dem Befehl create das Flag --version x.y.z hinzu. Beachten Sie, dass dadurch der Wert für auto-upgrade-minor-version auf „false“ festgelegt wird.

az k8s-extension create --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --cluster-type connectedClusters --extension-type Microsoft.openservicemesh --scope cluster --name osm

Die Ausgabe sollte folgendem Beispiel entsprechen. Es kann 3 bis 5 Minuten lang dauern, bis das tatsächliche OSM-Helm-Chart im Cluster bereitgestellt wird. Bis zu dieser Bereitstellung wird installStatePending bleiben.

{
  "autoUpgradeMinorVersion": true,
  "configurationSettings": {},
  "creationTime": "2021-04-29T17:50:11.4116524+00:00",
  "errorInfo": {
    "code": null,
    "message": null
  },
  "extensionType": "microsoft.openservicemesh",
  "id": "/subscriptions/<subscription-id>/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Kubernetes/connectedClusters/$CLUSTER_NAME/providers/Microsoft.KubernetesConfiguration/extensions/osm",
  "identity": null,
  "installState": "Pending",
  "lastModifiedTime": "2021-04-29T17:50:11.4116525+00:00",
  "lastStatusTime": null,
  "location": null,
  "name": "osm",
  "releaseTrain": "stable",
  "resourceGroup": "$RESOURCE_GROUP",
  "scope": {
    "cluster": {
      "releaseNamespace": "arc-osm-system"
    },
    "namespace": null
  },
  "statuses": [],
  "type": "Microsoft.KubernetesConfiguration/extensions",
  "version": "x.y.z"
}

Überprüfen Sie als Nächstes Ihre Installation.

Benutzerdefinierte Installationen

In den folgenden Abschnitten werden bestimmte benutzerdefinierte Installationen von OSM mit Azure Arc-Unterstützung beschrieben. Bei benutzerdefinierten Installationen müssen die OSM-Werte in einer JSON-Datei festgelegt und an den CLI-Befehl k8s-extension create übergeben werden.

Installieren von OSM in einem OpenShift-Cluster

  1. Kopieren Sie den folgenden Inhalt, und speichern Sie ihn in einer JSON-Datei. Wenn Sie bereits eine Konfigurationseinstellungsdatei erstellt haben, fügen Sie bitte der vorhandenen Datei die folgende Zeile hinzu, damit Ihre früheren Änderungen erhalten bleiben.

    {
        "osm.osm.enablePrivilegedInitContainer": "true"
    }
    
  2. Installieren von OSM mit benutzerdefinierten Werten.

  3. Fügen Sie jedem Dienstkonto für die Anwendungen im Mesh die privilegierte Sicherheitskontexteinschränkung hinzu.

    oc adm policy add-scc-to-user privileged -z <service account name> -n <service account namespace>
    

Es kann 3 bis 5 Minuten lang dauern, bis das tatsächliche OSM-Helm-Chart im Cluster bereitgestellt wird. Bis zu dieser Bereitstellung wird installStatePending bleiben.

Um sicherzustellen, dass die Einstellung für den privilegierten Init-Container nicht auf die Standardeinstellung zurückgesetzt wird, übergeben Sie die "osm.osm.enablePrivilegedInitContainer" : "true" Konfigurationseinstellung an alle nachfolgenden az k8s-extension create Befehle.

Aktivieren von Hochverfügbarkeitsfeatures bei der Installation

Die Steuerungsebenenkomponenten von OSM wurden unter den Aspekten Hochverfügbarkeit und Fehlertoleranz entworfen. In diesem Abschnitt wird beschrieben, wie Sie die horizontale automatische Podskalierung (Horizontal Pod Autoscaler, HPA) und Budgets für die Unterbrechung von Pods (Pod Disruption Budget, PDB) während der Installation aktivieren. Weitere Informationen zu den Entwurfsüberlegungen für Hochverfügbarkeit unter OSM.

Horizontale automatische Podskalierung (HPA)

HPA skaliert Pods der Steuerungsebene automatisch zentral hoch oder herunter, basierend auf der vom Benutzer definierten durchschnittlichen CPU-Zielauslastung (%) und der durchschnittlichen Arbeitsspeicher-Zielauslastung (%). Um HPA zu aktivieren und während der Installation gültige Werte für Pods auf OSM-Steuerungsebene festzulegen, erstellen Sie Ihre JSON-Einstellungsdatei bzw. fügen Sie an Ihre vorhandene an, wie hier gezeigt, wobei Sie die Schlüssel-Wert-Paare für jeden Pod der Steuerungsebene wiederholen (osmController, injector), für den Sie HPA aktivieren möchten.

{
  "osm.osm.<control_plane_pod>.autoScale.enable" : "true",
  "osm.osm.<control_plane_pod>.autoScale.minReplicas" : "<allowed values: 1-10>",
  "osm.osm.<control_plane_pod>.autoScale.maxReplicas" : "<allowed values: 1-10>",
  "osm.osm.<control_plane_pod>.autoScale.cpu.targetAverageUtilization" : "<allowed values 0-100>",
  "osm.osm.<control_plane_pod>.autoScale.memory.targetAverageUtilization" : "<allowed values 0-100>"
}

Installieren sie nun OSM mit benutzerdefinierten Werten.

Budgets für die Unterbrechung von Pods (PDB)

Um Unterbrechungen während geplanter Ausfälle zu verhindern, verfügen die Pods der Steuerungsebene osm-controller und osm-injector über ein PDB, das sicherstellt, dass immer mindestens ein Pod vorhanden ist, der einer Steuerungsebenenanwendung entspricht.

Um PDB zu aktivieren, erstellen Sie Ihre JSON-Einstellungsdatei wie folgt bzw. fügen an Ihre vorhandene für jeden gewünschten Pod der Steuerungsebene an (osmController, injector):

{
  "osm.osm.<control_plane_pod>.enablePodDisruptionBudget" : "true"
}

Installieren sie nun OSM mit benutzerdefinierten Werten.

Installieren von OSM mit cert-manager zur Zertifikatverwaltung

cert-manager ist ein Anbieter, der zum Ausstellen signierter Zertifikate an OSM verwendet werden kann. Dabei müssen keine privaten Schlüssel in Kubernetes gespeichert werden. Weitere Informationen finden Sie in der Dokumentation zu cert-mamager und der Demo.

Hinweis

Gehen Sie sehr sorgfältig vor, wenn Sie die in der OSM-GitHub-Dokumentation bereitgestellten Befehle verwenden. Stellen Sie sicher, dass Sie den richtigen Namespace in Befehlen verwenden, oder geben Sie ihn mit dem Flag --osm-namespace arc-osm-system an.

Um OSM mit „cert-manager“ als Zertifikatanbieter zu installieren, erstellen Sie Ihre JSON-Einstellungsdatei wie hier gezeigt, bzw. fügen den auf „cert-manager“ festgelegten certificateProvider.kind-Wert an Ihre vorhandene an. Wenn Sie die in der OSM-Dokumentation angegeben Standardwerte für cert-manager ändern möchten, fügen Sie auch die nachfolgenden certmanager.issuer-Zeilen ein, und aktualisieren Sie sie.

{
  "osm.osm.certificateProvider.kind" : "cert-manager",
  "osm.osm.certmanager.issuerName" : "<issuer name>",
  "osm.osm.certmanager.issuerKind" : "<issuer kind>",
  "osm.osm.certmanager.issuerGroup" : "<issuer group>"
}

Installieren sie nun OSM mit benutzerdefinierten Werten.

Installieren von OSM mit Contour für Eingangsdaten

OSM bietet mehrere Optionen, um Meshdienste extern mithilfe von Eingangsdaten verfügbar zu machen. OSM kann Contour verwenden, das mit dem außerhalb des Gittermodells installierten und mit einem Zertifikat für die Teilnahme am Gittermodell ausgestatteten Eingangsdatencontroller arbeitet. Weitere Informationen finden Sie in der Dokumentation zu Eingangsdaten in OSM und der Demo.

Hinweis

Gehen Sie sehr sorgfältig vor, wenn Sie die in der OSM-GitHub-Dokumentation bereitgestellten Befehle verwenden. Stellen Sie sicher, dass Sie den richtigen Namespace in Befehlen verwenden, oder geben Sie ihn mit dem Flag --osm-namespace arc-osm-system an. Um erforderliche Werte für die Konfiguration von Contour während der OSM-Installation festzulegen, fügen Sie Folgendes an Ihre JSON-Einstellungsdatei an:

{
  "osm.osm.osmNamespace" : "arc-osm-system",
  "osm.contour.enabled" : "true",
  "osm.contour.configInline.tls.envoy-client-certificate.name" : "osm-contour-envoy-client-cert", 
  "osm.contour.configInline.tls.envoy-client-certificate.namespace" : "arc-osm-system"
}

Festlegen von Werten während der OSM-Installation

Werte, die während der OSM-Installation festgelegt werden müssen, müssen in einer einzigen JSON-Datei gespeichert und über den Azure CLI-Installationsbefehl übergeben werden.

Nachdem Sie wie in den Abschnitten zur benutzerdefinierten Installation beschrieben eine JSON-Datei mit anwendbaren Werten erstellt haben, legen Sie den Dateipfad als Umgebungsvariable fest:

export SETTINGS_FILE=<json-file-path>

Führen Sie den az k8s-extension create-Befehl aus, um die OSM-Erweiterung zu erstellen, und übergeben Sie die Einstellungsdatei mit dem --configuration-settings-file-Flag:

az k8s-extension create --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --cluster-type connectedClusters --extension-type Microsoft.openservicemesh --scope cluster --name osm --configuration-settings-file $SETTINGS_FILE

Installieren von OSM mit Azure Arc-Unterstützung mithilfe einer ARM-Vorlage

Nachdem Sie Ihren Cluster mit Azure Arc verbunden haben, erstellen Sie eine JSON-Datei mit folgendem Format, wobei Sie darauf achten müssen, die Werte <cluster-name> und <osm-arc-version> zu aktualisieren:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "ConnectedClusterName": {
            "defaultValue": "<cluster-name>",
            "type": "String",
            "metadata": {
                "description": "The Connected Cluster name."
            }
        },
        "ExtensionInstanceName": {
            "defaultValue": "osm",
            "type": "String",
            "metadata": {
                "description": "The extension instance name."
            }
        },
        "ExtensionVersion": {
            "defaultValue": "<osm-arc-version>",
            "type": "String",
            "metadata": {
                "description": "The extension type version."
            }
        },
        "ExtensionType": {
            "defaultValue": "Microsoft.openservicemesh",
            "type": "String",
            "metadata": {
                "description": "The extension type."
            }
        },
        "ReleaseTrain": {
            "defaultValue": "Stable",
            "type": "String",
            "metadata": {
                "description": "The release train."
            }
        }
    },
    "functions": [],
    "resources": [
        {
            "type": "Microsoft.KubernetesConfiguration/extensions",
            "apiVersion": "2020-07-01-preview",
            "name": "[parameters('ExtensionInstanceName')]",
            "properties": {
                "extensionType": "[parameters('ExtensionType')]",
                "releaseTrain": "[parameters('ReleaseTrain')]",
                "version": "[parameters('ExtensionVersion')]"
            },
            "scope": "[concat('Microsoft.Kubernetes/connectedClusters/', parameters('ConnectedClusterName'))]"
        }
    ]
}

Legen Sie die folgenden Umgebungsvariablen fest:

export TEMPLATE_FILE_NAME=<template-file-path>
export DEPLOYMENT_NAME=<desired-deployment-name>

Führen Sie diesen Befehl aus, um die OSM-Erweiterung zu installieren:

az deployment group create --name $DEPLOYMENT_NAME --resource-group $RESOURCE_GROUP --template-file $TEMPLATE_FILE_NAME

Sie sollten nun die OSM-Ressourcen anzeigen und die OSM-Erweiterung in Ihrem Cluster verwenden können.

Installieren von OSM mit Azure Arc-Unterstützung mithilfe einer integrierten Richtlinie

Eine integrierte Richtlinie ist im Azure-Portal unter der Kategorie Kubernetes verfügbar: Für Azure Arc-fähige Kubernetes-Cluster sollte die Open Service Mesh-Erweiterung installiert sein. Diese Richtlinie kann im Bereich eines Abonnements oder einer Ressourcengruppe zugewiesen werden.

Die Standardaktion dieser Richtlinie ist Bereitstellung, falls nicht vorhanden. Sie können jedoch festlegen, dass die Cluster auf Erweiterungsinstallationen überwacht werden, indem Sie die Parameter während der Zuordnung ändern. Sie werden außerdem aufgefordert, die zu installierende Version (v1.0.0-1 oder höher) als Parameter anzugeben.

Überprüfen der Installation

Führen Sie den folgenden Befehl aus.

az k8s-extension show --cluster-type connectedClusters --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name osm

Die JSON-Ausgabe sollte in etwa wie folgt aussehen:

{
  "autoUpgradeMinorVersion": true,
  "configurationSettings": {},
  "creationTime": "2021-04-29T19:22:00.7649729+00:00",
  "errorInfo": {
    "code": null,
    "message": null
  },
  "extensionType": "microsoft.openservicemesh",
  "id": "/subscriptions/<subscription-id>/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Kubernetes/connectedClusters/$CLUSTER_NAME/providers/Microsoft.KubernetesConfiguration/extensions/osm",
  "identity": null,
  "installState": "Installed",
  "lastModifiedTime": "2021-04-29T19:22:00.7649731+00:00",
  "lastStatusTime": "2021-04-29T19:23:27.642+00:00",
  "location": null,
  "name": "osm",
  "releaseTrain": "stable",
  "resourceGroup": "$RESOURCE_GROUP",
  "scope": {
    "cluster": {
      "releaseNamespace": "arc-osm-system"
    },
    "namespace": null
  },
  "statuses": [],
  "type": "Microsoft.KubernetesConfiguration/extensions",
  "version": "x.y.z"
}

In unserem Leitfaden zur Problembehandlung finden Sie weitere Befehle, die Sie verwenden können, um die Bereitstellung der Erweiterungskomponenten von Open Service Mesh (OSM) in Ihrem Cluster zu überprüfen und Probleme damit zu beheben.

Die OSM-Controllerkonfiguration

OSM stellt eine MeshConfig-Ressource osm-mesh-config als Teil der Steuerungsebene im arc-osm-system-Namespace bereit. Diese Ressource bietet dem Meshbesitzer/-operator die Möglichkeit, einige der Meshkonfigurationen basierend auf seinen spezifischen Anforderungen zu aktualisieren. Verwenden Sie den folgenden Befehl, um die Standardwerte anzuzeigen.

kubectl describe meshconfig osm-mesh-config -n arc-osm-system

Die Ausgabe zeigt die Standardwerte:

  Certificate:
    Cert Key Bit Size:               2048
    Service Cert Validity Duration:  24h
  Feature Flags:
    Enable Async Proxy Service Mapping:  false
    Enable Egress Policy:                true
    Enable Envoy Active Health Checks:   false
    Enable Ingress Backend Policy:       true
    Enable Multicluster Mode:            false
    Enable Retry Policy:                 false
    Enable Snapshot Cache Mode:          false
    Enable WASM Stats:                   true
  Observability:
    Enable Debug Server:  false
    Osm Log Level:        info
    Tracing:
      Enable:  false
  Sidecar:
    Config Resync Interval:            0s
    Enable Privileged Init Container:  false
    Log Level:                         error
    Resources:
  Traffic:
    Enable Egress:                          false
    Enable Permissive Traffic Policy Mode:  true
    Inbound External Authorization:
      Enable:              false
      Failure Mode Allow:  false
      Stat Prefix:         inboundExtAuthz
      Timeout:             1s
    Inbound Port Exclusion List:
    Outbound IP Range Exclusion List:
    Outbound Port Exclusion List:

Weitere Informationen finden Sie in der Konfigurations-API-Referenz. Beachten Sie, dass spec.traffic.enablePermissiveTrafficPolicyMode auf true festgelegt ist. Wenn sich OSM im permissiven Richtlinienmodus befindet, wird die Durchsetzung der SMI-Datenverkehrsrichtlinie umgangen. In diesem Modus erkennt OSM automatisch Dienste, die Teil des Dienstnetzes sind, und programmiert Regeln für Datenverkehrsrichtlinien auf jedem Envoy-Proxy-Sidecar, um mit diesen Diensten kommunizieren zu können.

osm-mesh-config kann auch im Azure-Portal angezeigt werden, indem Sie im Abschnitt „Open Service Mesh“ des Clusters die Option Konfiguration bearbeiten auswählen.

Edit configuration button located on top of the Open Service Mesh section

Änderungen an der OSM-Controllerkonfiguration

Hinweis

Die Werte in der MeshConfig-Ressource osm-mesh-config werden upgradeübergreifend beibehalten.

Änderungen an osm-mesh-config können mithilfe des kubectl patch Befehls vorgenommen werden. Im folgenden Beispiel wird der „permissive traffic policy mode“ auf diese Weise in FALSE geändert.

kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"enablePermissiveTrafficPolicyMode":false}}}' --type=merge

Wenn ein falscher Wert verwendet wird, verhindert die Überprüfung der MeshConfig-CRD die Übernahme der Änderung und es erscheint eine Fehlermeldung, in der erläutert wird, warum der Wert ungültig ist. Dieser Befehl zeigt z. B., was geschieht, wenn enableEgress auf einen nicht booleschen Wert festgelegt wird:

kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"enableEgress":"no"}}}'  --type=merge
# Validations on the CRD will deny this change
The MeshConfig "osm-mesh-config" is invalid: spec.traffic.enableEgress: Invalid value: "string": spec.traffic.enableEgress in body must be of type boolean: "string"

Wählen Sie alternativ zum Bearbeiten von osm-mesh-config im Azure-Portal im Abschnitt „Open Service Mesh“ des Clusters die Option Konfiguration bearbeiten aus.

Edit configuration button in the Open Service Mesh section

Verwenden von OSM mit Azure Arc-Unterstützung

Um mit der Verwendung von den OSM-Funktionen zu beginnen, müssen Sie zunächst die Anwendungs-Namespaces in das Dienst-Mesh integrieren. Laden Sie die OSM-CLI von der OSM-GitHub-Release-Seite herunter. Nachdem die Namespaces dem Mesh hinzugefügt wurden, können Sie die SMI-Richtlinien konfigurieren, um die gewünschte OSM-Funktion zu erreichen.

So integrieren Sie die Namespaces in das Dienst-Mesh

Fügen Sie dem Mesh Namespaces hinzu, indem Sie den folgenden Befehl ausführen:

osm namespace add <namespace_name>

Namespaces können auch über das Azure-Portal integriert werden, indem Sie im Abschnitt „Open Service Mesh“ des Clusters die Option +Hinzufügen auswählen.

+Add button located on top of the Open Service Mesh section

Weitere Informationen zu Onboardingdiensten finden Sie in der Open Service Mesh-Dokumentation.

Konfigurieren Sie das OSM mit den SMI-Richtlinien (Service Mesh Interface)

Sie können mit einer Beispielanwendung beginnen oder Ihre Testumgebung verwenden, um die SMI-Richtlinien auszuprobieren.

Hinweis

Wenn Sie Beispielanwendungen verwenden, stellen Sie sicher, dass ihre Versionen der in Ihrem Cluster installierten OSM-Erweiterung entsprechen. Wenn Sie beispielsweise die Version 1.0.0 der OSM-Erweiterung verwenden, benötigen Sie das Bookstore-Manifest aus dem Branch „release-v1.0“ des OSM-Upstream-Repositorys.

Konfigurieren Sie Ihre eigenen Jaeger-, Prometheus- und Grafana-Instanzen

Die OSM-Erweiterung installiert keine Add-Ons wie Jaeger, Prometheus, Grafana und Flagger. Sie können OSM stattdessen in Ihre eigenen ausgeführten Instanzen dieser Tools integrieren. Informationen zur der Integration in Ihre eigenen Instanzen finden Sie in der folgenden Dokumentation:

Hinweis

Gehen Sie sehr sorgfältig vor, wenn Sie die in der OSM-GitHub-Dokumentation bereitgestellten Befehle verwenden. Achten Sie darauf, dass Sie den richtigen Namespacenamen arc-osm-system verwenden, wenn Sie Änderungen an osm-mesh-config vornehmen.

Überwachen Sie Ihre Anwendungen mit Azure Monitor und Anwendungs-Insights (Vorschau)

Sowohl Azure Monitor als auch Azure Application Insights helfen Ihnen, die Verfügbarkeit und Leistung Ihrer Anwendungen und Dienste zu maximieren, indem sie eine umfassende Lösung zum Sammeln, Analysieren und Verarbeiten von Telemetriedaten aus Ihren cloudbasierten und lokalen Umgebungen bereitstellen. Azure Arc-aktiviertes Open Service Mesh verfügt über umfassende Integrationen in beide Azure-Dienste. Diese Integration bietet eine nahtlose Azure-Erfahrung zum Anzeigen und Reagieren auf kritische KPIs, die von OSM-Metriken bereitgestellt werden.

Wichtig

Previewfunktionen von Kubernetes mit Azure Arc-Unterstützung stehen gemäß dem Self-Service-Prinzip und Aktivierungsprinzip zur Verfügung. Vorschauversionen werden „wie besehen“ und „wie verfügbar“ bereitgestellt und sind von den Vereinbarungen zum Service Level und der eingeschränkten Garantie ausgeschlossen. Vorschauversionen von Kubernetes mit Azure Arc-Unterstützung werden teilweise vom Kundensupport auf Grundlage der bestmöglichen Leistung abgedeckt.

Führen Sie diese Schritte aus, damit Azure Monitor die Prometheus-Endpunkte zum Sammeln von Anwendungsmetriken erfassen kann.

  1. Befolgen Sie diesen Leitfaden, um sicherzustellen, dass die Anwendungsnamespaces, die überwacht werden sollen, in das Mesh integriert sind.

  2. Machen Sie die Prometheus-Endpunkte für die Anwendungsnamespaces verfügbar.

    osm metrics enable --namespace <namespace1>
    osm metrics enable --namespace <namespace2>
    
  3. Installieren Sie die Azure Monitor-Erweiterung mithilfe der hier verfügbaren Anleitung.

  4. Erstellen Sie eine Configmap im kube-system-Namespace, mit der Azure Monitor Ihre Namespaces überwachen kann. Erstellen Sie z. B. container-azm-ms-osmconfig.yaml mit folgendem Inhalt, um <namespace1> und <namespace2> zu überwachen:

    kind: ConfigMap
    apiVersion: v1
    data:
      schema-version: v1
      config-version: ver1
      osm-metric-collection-configuration: |-
        # OSM metric collection settings
        [osm_metric_collection_configuration]
          [osm_metric_collection_configuration.settings]
              # Namespaces to monitor
              monitor_namespaces = ["<namespace1>", "<namespace2>"]
    metadata:
      name: container-azm-ms-osmconfig
      namespace: kube-system
    
  5. Führen Sie den folgenden kubectl-Befehl aus

    kubectl apply -f container-azm-ms-osmconfig.yaml
    

Es kann bis zu 15 Minuten lang dauern, bis die Metriken in Log Analytics angezeigt werden. Sie können versuchen, die Tabelle InsightsMetrics abzufragen.

InsightsMetrics
| where Name contains "envoy"
| extend t=parse_json(Tags)
| where t.app == "namespace1"
  1. Greifen Sie über diesen Link auf Ihren mit Arc-verbundenen Kubernetes-Cluster zu.
  2. Wechseln Sie zu „Azure Monitor“, und navigieren Sie zur Registerkarte Berichte, um auf die OSM-Arbeitsmappe zuzugreifen.
  3. Wählen Sie den Zeitbereich und den Namespace aus, um den Bereich Ihrer Dienste zu erweitern.

OSM workbook

Registerkarte „Anforderungen“

Die Registerkarte Anforderungen zeigt eine Zusammenfassung aller HTTP-Anforderungen, die über die Funktion „Dienst zu Dienst“ in OSM gesendet wurden.

  • Sie können alle Dienste anzeigen, indem Sie den Dienst im Raster auswählen.
  • Sie können die Gesamtanzahl der Anforderungen, die Anforderungsfehlerrate und die P90-Latenz anzeigen.
  • Sie können sich das Ziel detaillierter anzeigen lassen und Trends für den HTTP-Fehler-/Erfolgscode, die Erfolgsrate, die Pod-Ressourcenauslastung und die Latenzen in verschiedenen Perzentilen anzeigen.

Registerkarte „Verbindungen“

Die Registerkarte Verbindungen zeigt eine Zusammenfassung aller Verbindungen zwischen Ihren Diensten in Open Service Mesh.

  • Ausgehende Verbindungen: Die Gesamtanzahl der Verbindungen zwischen den Quell- und Zieldiensten
  • Ausgehende aktive Verbindungen: Die letzte Anzahl der aktiven Verbindungen zwischen der Quelle und dem Ziel im ausgewählten Zeitbereich
  • Fehler bei ausgehenden Verbindungen: Die Gesamtanzahl der fehlerhaften Verbindungen zwischen den Quell- und Zieldiensten

Aktualisieren auf eine bestimmte OSM-Version

Während der Aktualisierungen kann es zu Ausfallzeiten der Steuerungsebene kommen. Die Datenebene ist nur während den CRD-Aktualisierungen betroffen.

Unterstützte Upgrades

Die OSM-Erweiterung kann manuell über Neben- und Hauptversionen hinweg aktualisiert werden. Automatische Upgrades (falls aktiviert) funktionieren jedoch nur bei Nebenversionen.

Manuelles Aktualisieren auf eine bestimmte OSM-Version

Der folgende Befehl aktualisiert die OSM-Arc-Erweiterung auf eine bestimmte Version:

az k8s-extension update --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --cluster-type connectedClusters --release-train stable --name osm --version x.y.z

Aktivieren eines automatischen Upgrades

Wenn automatische Upgrades standardmäßig nicht aktiviert sind, kann der folgende Befehl ausgeführt werden, um sie zu aktivieren. Der aktuelle Wert von --auto-upgrade-minor-version kann überprüft werden, indem Sie den Befehl az k8s-extension show wie im Schritt Überprüfen der Installation beschrieben ausführen.

az k8s-extension update --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --cluster-type connectedClusters --release-train stable --name osm --auto-upgrade-minor-version true

Deinstallieren von OSM mit Azure Arc-Unterstützung

Verwenden Sie den folgenden Befehl:

az k8s-extension delete --cluster-type connectedClusters --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name osm -y

Überprüfen Sie, ob die Erweiterungsinstanz gelöscht wurde:

az k8s-extension list --cluster-type connectedClusters --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP

Diese Ausgabe sollte kein OSM enthalten. Wenn Sie keine anderen Erweiterungen in Ihrem Cluster installiert haben, ist dies nur ein leeres Array.

Wenn Sie den Befehl az k8s-extension verwenden, um die OSM-Erweiterung zu löschen, wird der Namespace arc-osm-system nicht entfernt. Das Löschen der tatsächlichen Ressourcen im Namespace (z. B. das Ändern der Webhook-Konfiguration und des OSM-Controller-Pods) dauert ca. 10 Minuten.

Hinweis

Verwenden Sie die CLI „az k8s-Erweiterung“ um von Arc verwaltete OSM-Komponenten zu deinstallieren. Die Verwendung der OSM-CLI zur Deinstallation wird von Arc nicht unterstützt und kann zu unerwünschtem Verhalten führen.

Nächste Schritte