Condividi tramite


Integrazioni con Open Service Mesh nel servizio Azure Kubernetes

Il componente aggiuntivo Open Service Mesh (OSM) si integra con le funzionalità fornite da Azure e alcuni progetti open source.

Nota

Con il ritiro di Open Service Mesh (OSM) dalla Cloud Native Computing Foundation (CNF), è consigliabile identificare le configurazioni OSM e eseguirne la migrazione a una configurazione Istio equivalente. Per informazioni sulla migrazione da OSM a Istio, vedere Indicazioni sulla migrazione per le configurazioni Open Service Mesh (OSM) a Istio.

Importante

Le integrazioni con i progetti open source non sono coperte dai criteri di supporto del servizio Azure Kubernetes.

Dati in ingresso

L'ingresso consente di indirizzare il traffico esterno alla mesh ai servizi all'interno della mesh. Con OSM è possibile configurare la maggior parte delle soluzioni in ingresso per lavorare con la mesh, ma OSM funziona meglio con una delle soluzioni seguenti:

Nota

Al momento, il Controller di ingresso del gateway di Azure (AGIC) funziona solo per i back-end HTTP. Se si configura OSM per l'uso di AGIC, AGIC non verrà usato per altri back-end, ad esempio HTTPS e mTLS.

Usare il Controller di ingresso del gateway di Azure con il componente aggiuntivo OSM per l'ingresso HTTP

Importante

Non è possibile configurare il Controller di ingresso del gateway di Azure (AGIC) per l'ingresso HTTPS.

Creare uno spazio dei nomi e distribuire il servizio dell'applicazione

  1. Installazione del Controller di ingresso del gateway di Azure (AGIC).

  2. Creare uno spazio dei nomi per il servizio dell'applicazione usando il comando kubectl create ns.

    kubectl create ns httpbin
    
  3. Aggiungere lo spazio dei nomi alla mesh usando il comando dell'interfaccia della riga di comando di OSM osm namespace add.

    osm namespace add httpbin
    
  4. Distribuire il servizio dell'applicazione nello spazio dei nomi usando il comando 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. Verificare che i pod siano operativi e che il sidecar envoy sia stato inserito usando il comando kubectl get pods.

    kubectl get pods -n httpbin
    

    L'output dovrebbe essere simile all'esempio di output seguente:

    NAME                      READY   STATUS    RESTARTS   AGE
    httpbin-7c6464475-9wrr8   2/2     Running   0          6d20h
    
  6. Elencare i dettagli del servizio usando il comando kubectl get svc.

    kubectl get svc -n httpbin
    

    L'output dovrebbe essere simile all'esempio di output seguente:

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

Distribuire le configurazioni di ingresso e verificare l'accesso al servizio dell'applicazione

  1. Distribuire le configurazioni Ingress e IngressBackend seguenti per consentire ai client esterni di accedere al servizio httpbin sulla porta 14001 usando il comando kubectl apply.

    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. Verificare che l'oggetto Ingress sia stato distribuito correttamente usando il comando kubectl get ingress e prendere nota dell'indirizzo IP esterno.

    kubectl get ingress -n httpbin
    

    L'output dovrebbe essere simile all'esempio di output seguente:

    NAME      CLASS    HOSTS   ADDRESS         PORTS   AGE
    httpbin   <none>   *       20.85.173.179   80      6d20h
    
  3. Verificare che l'oggetto IngressBackend sia stato distribuito correttamente usando il comando kubectl get ingressbackend.

    kubectl get ingressbackend -n httpbin
    

    L'output dovrebbe essere simile all'esempio di output seguente:

    NAME      STATUS
    httpbin   committed
    
  4. Verificare di poter accedere al servizio httpbin usando l'indirizzo IP esterno del servizio di ingresso e il comandocurl seguente.

    curl -sI http://<external-ip>/get
    
  5. Verificare di ricevere una risposta con status 200.

Osservabilità delle metriche

L'osservabilità delle metriche consente di visualizzare le metriche della mesh e le distribuzioni nella mesh. Con OSM è possibile usare Prometheus e Grafana per l’osservabilità delle metriche, ma tali integrazioni non sono coperte dai criteri di supporto del servizio Azure Kubernetes.

Inoltre è possibile integrare OSM con Monitoraggio di Azure.

Prima di abilitare le metriche nella mesh per l'integrazione con Monitoraggio di Azure, assicurarsi di avere i prerequisiti seguenti:

  • Abilitare Monitoraggio di Azure nel cluster.
  • Abilitare il componente aggiuntivo OSM per il cluster del servizio Azure Kubernetes.
  • Eseguire l'onboarding degli spazi dei nomi dell'applicazione nella mesh.
  1. Abilitare le metriche per uno spazio dei nomi nella mesh usando il comando osm metrics enable.

    osm metrics enable --namespace myappnamespace
    
  2. Creare ConfigMap nello spazio dei nomi kube-system che consente a Monitoraggio di Azure di monitorare gli spazi dei nomi. Ad esempio, creare monitor-configmap.yaml con il contenuto seguente per monitorare 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. Applicare ConfigMap usando il comando kubectl apply.

    kubectl apply -f monitor-configmap.yaml
    
  4. Passare al portale di Azure e selezionare il cluster del servizio Azure Kubernetes.

  5. In Monitoraggio, selezionare Log.

  6. Nella sezione Monitoraggio eseguire una query nella tabella InsightsMetrics per visualizzare le metriche negli spazi dei nomi abilitati. Ad esempio, la query seguente mostra le metriche envoy per lo spazio dei nomi predefinito:

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

Strumenti di automazione e sviluppo

OSM può integrarsi con determinati progetti di automazione e strumenti di sviluppo per aiutare gli operatori e gli sviluppatori a compilare e rilasciare applicazioni. Ad esempio, OSM si integra con Flagger per il recapito progressivo e Dapr per la compilazione di applicazioni. Le integrazioni di OSM con Flagger e Dapr non sono coperte dai criteri di supporto del servizio Azure Kubernetes.

Autorizzazione esterna

L'autorizzazione esterna consente di eseguire l'offload dell'autorizzazione delle richieste HTTP a un servizio esterno. OSM può usare l'autorizzazione esterna tramite l'integrazione con Open Policy Agent (OPA), ma tale integrazione non è coperta dai criteri di supporto del servizio Azure Kubernetes.

Gestione dei certificati

OSM include diversi tipi di certificati usati per operare nel cluster del servizio Azure Kubernetes. OSM include il proprio gestore certificati denominato Tresor, usato per impostazione predefinita. In alternativa, OSM consente di eseguire l'integrazione con Hashicorp Vault e cert-manager, ma tali integrazioni non sono coperte dai criteri di supporto del servizio Azure Kubernetes.

Passaggi successivi

Questo articolo ha illustrato le integrazioni dei componenti aggiuntivi Open Service Mesh (OSM) con le funzionalità fornite da Azure e alcuni progetti open source. Per altre informazioni su OSM, vedere Informazioni su OSM nel servizio Azure Kubernetes.