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
Installazione del Controller di ingresso del gateway di Azure (AGIC).
Creare uno spazio dei nomi per il servizio dell'applicazione usando il comando
kubectl create ns
.kubectl create ns httpbin
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
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
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
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
Distribuire le configurazioni
Ingress
eIngressBackend
seguenti per consentire ai client esterni di accedere al serviziohttpbin
sulla porta14001
usando il comandokubectl 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
Verificare che l'oggetto
Ingress
sia stato distribuito correttamente usando il comandokubectl 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
Verificare che l'oggetto
IngressBackend
sia stato distribuito correttamente usando il comandokubectl get ingressbackend
.kubectl get ingressbackend -n httpbin
L'output dovrebbe essere simile all'esempio di output seguente:
NAME STATUS httpbin committed
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
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.
Abilitare le metriche per uno spazio dei nomi nella mesh usando il comando
osm metrics enable
.osm metrics enable --namespace myappnamespace
Creare ConfigMap nello spazio dei nomi
kube-system
che consente a Monitoraggio di Azure di monitorare gli spazi dei nomi. Ad esempio, crearemonitor-configmap.yaml
con il contenuto seguente per monitoraremyappnamespace
: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
Applicare ConfigMap usando il comando
kubectl apply
.kubectl apply -f monitor-configmap.yaml
Passare al portale di Azure e selezionare il cluster del servizio Azure Kubernetes.
In Monitoraggio, selezionare Log.
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.
Azure Kubernetes Service