Integrationen mit Open Service Mesh in Azure Kubernetes Service (AKS)

Das Open Service Mesh-Add-On (OSM) kann mit Funktionen integriert werden, die von Azure und einigen Open-Source-Projekten bereitgestellt werden.

Hinweis

Mit der Einstellung von Open Service Mesh (OSM) durch die Cloud Native Computing Foundation (CNCF) empfehlen wir, Ihre OSM-Konfigurationen zu identifizieren und zu einer entsprechenden Istio-Konfiguration zu migrieren. Informationen zum Migrieren von OSM zu Istio finden Sie im Migrationsleitfaden für Open Service Mesh (OSM)-Konfigurationen zu Istio.

Wichtig

Integrationen mit Open Source-Projekten werden nicht durch die AKS-Supportrichtlinie abgedeckt.

Eingehende Daten

Ingress ermöglicht es, dass Datenverkehr außerhalb des Gitters an Dienste innerhalb des Gitters geroutet wird. Mit OSM können Sie die meisten Eingangslösungen so konfigurieren, dass sie mit Ihrem Gittermodell funktionieren. OSM funktioniert jedoch am besten mit einer der folgenden Lösungen:

Hinweis

Momentan funktioniert Azure Gateway Ingress Controller (AGIC) nur für HTTP-Back-Ends. Wenn Sie OSM für die Verwendung von AGIC konfigurieren, wird AGIC nicht für andere Back-Ends wie HTTPS und mTLS verwendet.

Verwenden von AGIC (Azure Gateway Ingress Controller) mit dem OSM-Add-On für HTTP-Eingangsdaten

Wichtig

Sie können AGIC (Azure Gateway Ingress Controller) nicht für HTTPS-Eingangsdaten konfigurieren.

Erstellen eines Namespace und Bereitstellen des Anwendungsdiensts

  1. Installieren Sie den AGIC-Eingangsdatencontroller.

  2. Erstellen Sie mithilfe des Befehls kubectl create ns einen Namespace für den Anwendungsdienst.

    kubectl create ns httpbin
    
  3. Fügen Sie den Namespace mithilfe des OSM-CLI-Befehls osm namespace add zum Gittermodell hinzu.

    osm namespace add httpbin
    
  4. Stellen Sie den Anwendungsdienst mithilfe des Befehls kubectl apply im Namespace bereit.

    export RELEASE_BRANCH=release-v1.2
    kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm-docs/$RELEASE_BRANCH/manifests/samples/httpbin/httpbin.yaml -n httpbin
    
  5. Überprüfen Sie mit dem Befehl kubectl get pods, ob die Pods ausgeführt werden und der Envoy-Sidecar eingefügt wurde.

    kubectl get pods -n httpbin
    

    Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:

    NAME                      READY   STATUS    RESTARTS   AGE
    httpbin-7c6464475-9wrr8   2/2     Running   0          6d20h
    
  6. Listen Sie die Details des Diensts mithilfe des Befehls kubectl get svc auf.

    kubectl get svc -n httpbin
    

    Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:

    NAME      TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)     AGE
    httpbin   ClusterIP   10.0.92.135   <none>        14001/TCP   6d20h
    

Bereitstellen der Eingangskonfigurationen und Überprüfen des Zugriffs auf den Anwendungsdienst

  1. Stellen Sie mit dem Befehl kubectl apply die folgenden Konfigurationen für Ingress und IngressBackend bereit, um externen Clients den Zugriff auf den Dienst httpbin an Port 14001 zu ermöglichen.

    kubectl apply -f <<EOF
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: httpbin
      namespace: httpbin
      annotations:
        kubernetes.io/ingress.class: azure/application-gateway
    spec:
      rules:
     - http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: httpbin
                port:
                  number: 14001
    ---
    kind: IngressBackend
    apiVersion: policy.openservicemesh.io/v1alpha1
    metadata:
      name: httpbin
      namespace: httpbin
    spec:
      backends:
     - name: httpbin
        port:
          number: 14001 # targetPort of httpbin service
          protocol: http
      sources:
     - kind: IPRange
        name: 10.0.0.0/8
    EOF
    
  2. Vergewissern Sie sich, dass das Objekt Ingress mithilfe des Befehls kubectl get ingress erfolgreich bereitgestellt wurde, und notieren Sie sich die externe IP-Adresse.

    kubectl get ingress -n httpbin
    

    Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:

    NAME      CLASS    HOSTS   ADDRESS         PORTS   AGE
    httpbin   <none>   *       20.85.173.179   80      6d20h
    
  3. Überprüfen Sie mithilfe des Befehls kubectl get ingressbackend, ob das Objekt IngressBackend erfolgreich bereitgestellt wurde.

    kubectl get ingressbackend -n httpbin
    

    Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:

    NAME      STATUS
    httpbin   committed
    
  4. Vergewissern Sie sich, dass Sie mit der externen IP-Adresse des Eingangsdiensts und dem folgenden curl-Befehl auf den Dienst httpbin zugreifen können.

    curl -sI http://<external-ip>/get
    
  5. Stellen Sie sicher, dass Sie eine Antwort mit status 200 erhalten.

Beobachtbarkeit von Metriken

Mit Einblick in Metriken können Sie die Metriken Ihres Gittermodells und die Bereitstellungen in Ihrem Gittermodell anzeigen. Mit OSM können Sie Prometheus und Grafana für die Beobachtbarkeit von Metriken verwenden. Diese Integrationen werden jedoch nicht durch die AKS-Supportrichtlinie abgedeckt.

Eine Integration von OSM mit Azure Monitor ist auch möglich.

Bevor Sie Metriken für Ihr Gittermodell für die Integration in Azure Monitor aktivieren können, stellen Sie sicher, dass Sie über die folgenden Voraussetzungen verfügen:

  • Aktivieren Sie Azure Monitor für Ihren Cluster.
  • Aktivieren Sie das OSM-Add-on für Ihren AKS-Cluster.
  • Binden Sie Ihre Anwendungsnamespaces in das Gittermodell ein.
  1. Aktivieren Sie mit dem Befehl osm metrics enable Metriken für einen Namespace im Gittermodell.

    osm metrics enable --namespace myappnamespace
    
  2. Erstellen Sie eine ConfigMap im Namespace kube-system, damit Azure Monitor Ihre Namespaces überwachen kann. Erstellen Sie z. B. monitor-configmap.yaml mit dem folgenden Inhalt, um myappnamespace 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 = ["myappnamespace"]
    metadata:
      name: container-azm-ms-osmconfig
      namespace: kube-system
    
  3. Wenden Sie die ConfigMap mithilfe des Befehls kubectl apply an.

    kubectl apply -f monitor-configmap.yaml
    
  4. Navigieren Sie zum Azure-Portal, und wählen Sie Ihren AKS-Cluster aus.

  5. Wählen Sie unter Überwachung die Option Protokolle aus.

  6. Fragen Sie im Abschnitt Überwachung die Tabelle InsightsMetrics ab, um Metriken in den aktivierten Namespaces anzuzeigen. Die folgende Abfrage zeigt zum Beispiel die Envoy-Metriken für den Standard-Namespace:

    InsightsMetrics
    |     where Name contains "envoy"
    |     extend t=parse_json(Tags)
    |     where t.namespace == "default"
    

Automatisierungs- und Entwicklertools

OSM kann in bestimmte Automatisierungsprojekte und Entwicklertools integriert werden, um Bedienern und Entwicklern beim Erstellen und Veröffentlichen von Anwendungen zu helfen. OSM lässt sich beispielsweise mit Flagger für die progressive Bereitstellung und mit Dapr zum Erstellen von Anwendungen integrieren. Die OSM-Integrationen mit Flagger und Dapr werden nicht durch die AKS-Supportrichtlinie abgedeckt.

Externe Autorisierung

Mit der externen Autorisierung können Sie die Autorisierung von HTTP-Anforderungen an einen externen Dienst auslagern. OSM kann die externe Autorisierung verwenden, indem es mit dem Open Policy Agent (OPA) integriert wird. Diese Integration wird jedoch nicht durch die AKS-Supportrichtlinie abgedeckt.

Zertifikatverwaltung

OSM verfügt über mehrere Arten von Zertifikaten, die für den Betrieb ihres AKS-Clusters verwendet werden. OSM enthält einen eigenen Zertifikatverwalter namens Tresor, der standardmäßig verwendet wird. Alternativ ermöglicht OSM die Integration mit Hashicorp Vault und cert-manager, aber diese Integrationen werden nicht durch die AKS-Supportrichtlinie abgedeckt.

Nächste Schritte

In diesem Artikel wurden die Open Service Mesh-Add-On-Integrationen (OSM) mit Features von Azure und einigen Open-Source-Projekten behandelt. Weitere Informationen zu OSM finden Sie unter Informationen zu OSM in AKS.