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
De AGIC-ingangscontroller installeren.
Maak een naamruimte voor de toepassingsservice met behulp van de
kubectl create ns
opdracht.kubectl create ns httpbin
Voeg de naamruimte toe aan de mesh met behulp van de
osm namespace add
OSM CLI-opdracht.osm namespace add httpbin
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
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
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
Implementeer de volgende
Ingress
enIngressBackend
configuraties om externe clients toegang te geven tot dehttpbin
service op de poort14001
met behulp van dekubectl 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
Controleer of het
Ingress
object is geïmplementeerd met behulp van dekubectl 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
Controleer of het
IngressBackend
object is geïmplementeerd met behulp van dekubectl get ingressbackend
opdracht.kubectl get ingressbackend -n httpbin
De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:
NAME STATUS httpbin committed
Controleer of u toegang hebt tot de
httpbin
service met behulp van het externe IP-adres van de toegangsbeheerobjectservice en de volgendecurl
opdracht.curl -sI http://<external-ip>/get
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.
Schakel met de
osm metrics enable
opdracht metrische gegevens in voor een naamruimte in de mesh.osm metrics enable --namespace myappnamespace
Maak een ConfigMap in de
kube-system
naamruimte waarmee Azure Monitor uw naamruimten kan bewaken. Maak bijvoorbeeld eenmonitor-configmap.yaml
met de volgende inhoud om hetmyappnamespace
volgende 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
Pas de ConfigMap toe met behulp van de
kubectl apply
opdracht.kubectl apply -f monitor-configmap.yaml
Navigeer naar Azure Portal en selecteer uw AKS-cluster.
Selecteer Logboeken onder Bewaking.
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.
Azure Kubernetes Service