Dela via


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

  1. Installera AGIC-ingresskontrollanten.

  2. Skapa ett namnområde för programtjänsten med hjälp av kubectl create ns kommandot .

    kubectl create ns httpbin
    
  3. Lägg till namnområdet i nätet med hjälp av osm namespace add OSM CLI-kommandot.

    osm namespace add httpbin
    
  4. 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
    
  5. 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
    
  6. 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

  1. Distribuera följande Ingress och IngressBackend konfigurationer för att tillåta externa klienter att komma åt httpbin tjänsten på porten 14001 med hjälp av kubectl 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
    
  2. Kontrollera att objektet Ingress har distribuerats med kommandot kubectl 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
    
  3. Kontrollera att objektet IngressBackend har distribuerats med kommandot kubectl get ingressbackend .

    kubectl get ingressbackend -n httpbin
    

    Dina utdata bör se ut ungefär som följande exempelutdata:

    NAME      STATUS
    httpbin   committed
    
  4. Kontrollera att du kan komma åt httpbin tjänsten med hjälp av den externa IP-adressen för ingresstjänsten och följande curl kommando.

    curl -sI http://<external-ip>/get
    
  5. 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.
  1. Aktivera mått för ett namnområde i nätet med hjälp av osm metrics enable kommandot .

    osm metrics enable --namespace myappnamespace
    
  2. Skapa en ConfigMap i kube-system namnområdet som gör att Azure Monitor kan övervaka dina namnområden. Skapa till exempel en monitor-configmap.yaml med följande innehåll för att övervaka myappnamespace:

    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. Använd ConfigMap med kommandot kubectl apply .

    kubectl apply -f monitor-configmap.yaml
    
  4. Gå till Azure Portal och välj ditt AKS-kluster.

  5. Under Övervakning väljer du Loggar.

  6. 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.