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
Installieren Sie den AGIC-Eingangsdatencontroller.
Erstellen Sie mithilfe des Befehls
kubectl create ns
einen Namespace für den Anwendungsdienst.kubectl create ns httpbin
Fügen Sie den Namespace mithilfe des OSM-CLI-Befehls
osm namespace add
zum Gittermodell hinzu.osm namespace add httpbin
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
Ü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
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
Stellen Sie mit dem Befehl
kubectl apply
die folgenden Konfigurationen fürIngress
undIngressBackend
bereit, um externen Clients den Zugriff auf den Diensthttpbin
an Port14001
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
Vergewissern Sie sich, dass das Objekt
Ingress
mithilfe des Befehlskubectl 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
Überprüfen Sie mithilfe des Befehls
kubectl get ingressbackend
, ob das ObjektIngressBackend
erfolgreich bereitgestellt wurde.kubectl get ingressbackend -n httpbin
Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:
NAME STATUS httpbin committed
Vergewissern Sie sich, dass Sie mit der externen IP-Adresse des Eingangsdiensts und dem folgenden
curl
-Befehl auf den Diensthttpbin
zugreifen können.curl -sI http://<external-ip>/get
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.
Aktivieren Sie mit dem Befehl
osm metrics enable
Metriken für einen Namespace im Gittermodell.osm metrics enable --namespace myappnamespace
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, ummyappnamespace
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
Wenden Sie die ConfigMap mithilfe des Befehls
kubectl apply
an.kubectl apply -f monitor-configmap.yaml
Navigieren Sie zum Azure-Portal, und wählen Sie Ihren AKS-Cluster aus.
Wählen Sie unter Überwachung die Option Protokolle aus.
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.
Azure Kubernetes Service