Integreringar med Open Service Mesh i Azure Kubernetes Service (AKS)
Tillägget Open Service Mesh (OSM) integreras med funktioner som tillhandahålls av Azure och vissa öppen källkod projekt.
Kommentar
Med tillbakadragandet av Open Service Mesh (OSM) av Cloud Native Computing Foundation (CNCF) rekommenderar vi att du identifierar dina OSM-konfigurationer och migrerar dem till en motsvarande Istio-konfiguration. Information om hur du migrerar från OSM till Istio finns i Migreringsvägledning för OSM-konfigurationer (Open Service Mesh) till Istio.
Viktigt!
Integreringar med projekt med öppen källkod omfattas inte av AKS-supportpolicyn.
Ingress
Ingress gör att trafik utanför nätet kan dirigeras till tjänster i nätet. Med OSM kan du konfigurera de flesta ingresslösningar så att de fungerar med ditt nät, men OSM fungerar bäst med någon av följande lösningar:
Kommentar
För närvarande fungerar Azure Gateway Ingress Controller (AGIC) endast för HTTP-serverdelar. Om du konfigurerar OSM att använda AGIC används inte AGIC för andra serverdelar, till exempel HTTPS och mTLS.
Använda Azure Gateway Ingress Controller (AGIC) med OSM-tillägget för HTTP-ingress
Viktigt!
Du kan inte konfigurera Azure Gateway Ingress Controller (AGIC) för HTTPS-ingress.
Skapa ett namnområde och distribuera programtjänsten
Installera AGIC-ingresskontrollanten.
Skapa ett namnområde för programtjänsten med hjälp av
kubectl create ns
kommandot .kubectl create ns httpbin
Lägg till namnområdet i nätet med hjälp av
osm namespace add
OSM CLI-kommandot.osm namespace add httpbin
Distribuera programtjänsten till namnområdet med kommandot
kubectl apply
.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
Kontrollera att poddarna är igång och att sidovagnen envoy matas in med kommandot
kubectl get pods
.kubectl get pods -n httpbin
Dina utdata bör se ut ungefär som följande exempelutdata:
NAME READY STATUS RESTARTS AGE httpbin-7c6464475-9wrr8 2/2 Running 0 6d20h
Visa en lista med information om tjänsten med hjälp av
kubectl get svc
kommandot .kubectl get svc -n httpbin
Dina utdata bör se ut ungefär som följande exempelutdata:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE httpbin ClusterIP 10.0.92.135 <none> 14001/TCP 6d20h
Distribuera ingresskonfigurationerna och verifiera åtkomsten till programtjänsten
Distribuera följande
Ingress
ochIngressBackend
konfigurationer för att tillåta externa klienter att komma åthttpbin
tjänsten på porten14001
med hjälp avkubectl apply
kommandot .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
Kontrollera att objektet
Ingress
har distribuerats med kommandotkubectl get ingress
och anteckna den externa IP-adressen.kubectl get ingress -n httpbin
Dina utdata bör se ut ungefär som följande exempelutdata:
NAME CLASS HOSTS ADDRESS PORTS AGE httpbin <none> * 20.85.173.179 80 6d20h
Kontrollera att objektet
IngressBackend
har distribuerats med kommandotkubectl get ingressbackend
.kubectl get ingressbackend -n httpbin
Dina utdata bör se ut ungefär som följande exempelutdata:
NAME STATUS httpbin committed
Kontrollera att du kan komma åt
httpbin
tjänsten med hjälp av den externa IP-adressen för ingresstjänsten och följandecurl
kommando.curl -sI http://<external-ip>/get
Bekräfta att du får ett svar med
status 200
.
Måttobservabilitet
Med måttobservabilitet kan du visa måtten för ditt nät och distributionerna i ditt nät. Med OSM kan du använda Prometheus och Grafana för måttobservabilitet, men dessa integreringar omfattas inte av AKS-supportprincipen.
Du kan också integrera OSM med Azure Monitor.
Innan du kan aktivera mått i ditt nät för att integrera med Azure Monitor kontrollerar du att du har följande förutsättningar:
- Aktivera Azure Monitor i klustret.
- Aktivera OSM-tillägget för ditt AKS-kluster.
- Registrera programnamnrymderna i nätet.
Aktivera mått för ett namnområde i nätet med hjälp av
osm metrics enable
kommandot .osm metrics enable --namespace myappnamespace
Skapa en ConfigMap i
kube-system
namnområdet som gör att Azure Monitor kan övervaka dina namnområden. Skapa till exempel enmonitor-configmap.yaml
med följande innehåll för att övervakamyappnamespace
: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
Använd ConfigMap med kommandot
kubectl apply
.kubectl apply -f monitor-configmap.yaml
Gå till Azure Portal och välj ditt AKS-kluster.
Under Övervakning väljer du Loggar.
I avsnittet Övervakning frågar du
InsightsMetrics
tabellen för att visa mått i de aktiverade namnrymderna. Följande fråga visar till exempel envoy-måtten för standardnamnområdet :InsightsMetrics | where Name contains "envoy" | extend t=parse_json(Tags) | where t.namespace == "default"
Automatiserings- och utvecklarverktyg
OSM kan integreras med vissa automatiseringsprojekt och utvecklarverktyg för att hjälpa operatörer och utvecklare att skapa och släppa program. Till exempel integreras OSM med Flagger för progressiv leverans och Dapr för att skapa program. OSM-integreringarna med Flagger och Dapr omfattas inte av AKS-supportprincipen.
Extern auktorisering
Med extern auktorisering kan du avlasta auktorisering av HTTP-begäranden till en extern tjänst. OSM kan använda extern auktorisering genom att integrera med Open Policy Agent (OPA), men den integreringen omfattas inte av AKS-supportprincipen.
Certifikathantering
OSM har flera typer av certifikat som används för att fungera i ditt AKS-kluster. OSM innehåller en egen certifikathanterare med namnet Tresor, som används som standard. Alternativt kan du med OSM integrera med Hashicorp Vault och cert-manager, men dessa integreringar omfattas inte av AKS-supportpolicyn.
Nästa steg
I den här artikeln beskrivs tilläggsintegrering av Open Service Mesh (OSM) med funktioner som tillhandahålls av Azure och vissa öppen källkod projekt. Mer information om OSM finns i Om OSM i AKS.
Azure Kubernetes Service