Delen via


Integraties met Open Service Mesh in Azure Kubernetes Service (AKS)

De invoegtoepassing Open Service Mesh (OSM) kan worden geïntegreerd met functies van Azure en enkele opensource-projecten.

Notitie

Met de buitengebruikstelling van Open Service Mesh (OSM) door de Cloud Native Computing Foundation (CNCF) raden we u aan om uw OSM-configuraties te identificeren en te migreren naar een equivalente Istio-configuratie. Zie Migratierichtlijnen voor Open Service Mesh-configuraties (OSM) naar Istio voor meer informatie over het migreren van OSM naar Istio.

Belangrijk

Integraties met open source-projecten vallen niet onder het AKS-ondersteuningsbeleid.

Inkomend verkeer

Met inkomend verkeer buiten de mesh kan worden gerouteerd naar services binnen de mesh. Met OSM kunt u de meeste oplossingen voor inkomend verkeer configureren om met uw mesh te werken, maar OSM werkt het beste met een van de volgende oplossingen:

Notitie

Op dit moment werkt Azure Gateway Ingress Controller (AGIC) alleen voor HTTP-back-ends. Als u OSM configureert voor het gebruik van AGIC, wordt AGIC niet gebruikt voor andere back-ends, zoals HTTPS en mTLS.

De Azure Gateway-ingangscontroller (AGIC) gebruiken met de OSM-invoegtoepassing voor INKOMEND HTTP-verkeer

Belangrijk

U kunt azure Gateway-ingangscontroller (AGIC) niet configureren voor inkomend HTTPS-toegangsbeheerobject.

Een naamruimte maken en de toepassingsservice implementeren

  1. De AGIC-ingangscontroller installeren.

  2. Maak een naamruimte voor de toepassingsservice met behulp van de kubectl create ns opdracht.

    kubectl create ns httpbin
    
  3. Voeg de naamruimte toe aan de mesh met behulp van de osm namespace add OSM CLI-opdracht.

    osm namespace add httpbin
    
  4. Implementeer de toepassingsservice in de naamruimte met behulp van de kubectl apply opdracht.

    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. Controleer of de pods actief zijn en of de sidecar van de envoy is geïnjecteerd met behulp van de kubectl get pods opdracht.

    kubectl get pods -n httpbin
    

    De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:

    NAME                      READY   STATUS    RESTARTS   AGE
    httpbin-7c6464475-9wrr8   2/2     Running   0          6d20h
    
  6. Geef de details van de service weer met behulp van de kubectl get svc opdracht.

    kubectl get svc -n httpbin
    

    De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:

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

De configuraties voor inkomend verkeer implementeren en de toegang tot de toepassingsservice controleren

  1. Implementeer de volgende Ingress en IngressBackend configuraties om externe clients toegang te geven tot de httpbin service op de poort 14001 met behulp van de kubectl apply opdracht.

    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. Controleer of het Ingress object is geïmplementeerd met behulp van de kubectl get ingress opdracht en noteer het externe IP-adres.

    kubectl get ingress -n httpbin
    

    De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:

    NAME      CLASS    HOSTS   ADDRESS         PORTS   AGE
    httpbin   <none>   *       20.85.173.179   80      6d20h
    
  3. Controleer of het IngressBackend object is geïmplementeerd met behulp van de kubectl get ingressbackend opdracht.

    kubectl get ingressbackend -n httpbin
    

    De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:

    NAME      STATUS
    httpbin   committed
    
  4. Controleer of u toegang hebt tot de httpbin service met behulp van het externe IP-adres van de toegangsbeheerobjectservice en de volgende curl opdracht.

    curl -sI http://<external-ip>/get
    
  5. Bevestig dat u een antwoord ontvangt met status 200.

Waarneembaarheid van metrische gegevens

Metrische waarneembaarheid kunt u de metrische gegevens van uw mesh en de implementaties in uw mesh bekijken. Met OSM kunt u Prometheus en Grafana gebruiken voor waarneembaarheid van metrische gegevens, maar deze integraties vallen niet onder het AKS-ondersteuningsbeleid.

U kunt OSM ook integreren met Azure Monitor.

Voordat u metrische gegevens voor uw mesh kunt inschakelen om te integreren met Azure Monitor, moet u ervoor zorgen dat u aan de volgende vereisten voldoet:

  • Schakel Azure Monitor in op uw cluster.
  • Schakel de OSM-invoegtoepassing in voor uw AKS-cluster.
  • Onboarding van uw toepassingsnaamruimten naar de mesh.
  1. Schakel met de osm metrics enable opdracht metrische gegevens in voor een naamruimte in de mesh.

    osm metrics enable --namespace myappnamespace
    
  2. Maak een ConfigMap in de kube-system naamruimte waarmee Azure Monitor uw naamruimten kan bewaken. Maak bijvoorbeeld een monitor-configmap.yaml met de volgende inhoud om het myappnamespacevolgende te controleren:

    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. Pas de ConfigMap toe met behulp van de kubectl apply opdracht.

    kubectl apply -f monitor-configmap.yaml
    
  4. Navigeer naar Azure Portal en selecteer uw AKS-cluster.

  5. Selecteer Logboeken onder Bewaking.

  6. Voer in de sectie Bewaking een query uit op de InsightsMetrics tabel om metrische gegevens weer te geven in de ingeschakelde naamruimten. In de volgende query ziet u bijvoorbeeld de metrische gegevens van de envoy voor de standaardnaamruimte :

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

Automatiserings- en ontwikkelhulpprogramma's

OSM kan worden geïntegreerd met bepaalde automatiseringsprojecten en hulpprogramma's voor ontwikkelaars om operators en ontwikkelaars te helpen bij het bouwen en vrijgeven van toepassingen. OSM kan bijvoorbeeld worden geïntegreerd met Flagger voor progressieve levering en Dapr voor het bouwen van toepassingen. De OSM-integraties met Flagger en Dapr vallen niet onder het AKS-ondersteuningsbeleid.

Externe autorisatie

Met externe autorisatie kunt u autorisatie van HTTP-aanvragen naar een externe service offloaden. OSM kan externe autorisatie gebruiken door te integreren met OPA (Open Policy Agent), maar die integratie wordt niet gedekt door het AKS-ondersteuningsbeleid.

Certificaatbeheer

OSM heeft verschillende typen certificaten die worden gebruikt om te werken op uw AKS-cluster. OSM bevat een eigen certificaatbeheerder met de naam Tresor, die standaard wordt gebruikt. U kunt ook met OSM integreren met Hashicorp Vault en cert-manager, maar deze integraties vallen niet onder het AKS-ondersteuningsbeleid.

Volgende stappen

Dit artikel heeft betrekking op de integraties van de invoegtoepassing Open Service Mesh (OSM) met functies van Azure en enkele opensource-projecten. Zie Over OSM in AKS voor meer informatie over OSM.