Integraciones con Open Service Mesh en Azure Kubernetes Service (AKS)
El complemento Open Service Mesh (OSM) se integra con las características proporcionadas por Azure, así como con algunos proyectos de código abierto.
Nota:
Con la retirada de Open Service Mesh (OSM) de Cloud Native Computing Foundation (CNCF), se recomienda identificar las configuraciones de OSM y migrarlas a una configuración equivalente de Istio. Para obtener información sobre la migración de OSM a Istio, consulte Guía de migración para configuraciones de Open Service Mesh (OSM) a Istio.
Importante
Las integraciones con proyectos de código abierto no están cubiertas por la directiva de compatibilidad de AKS.
Entrada
La entrada permite que el tráfico externo se dirija a la malla para que se enrute a los servicios dentro de la malla. Con OSM, puede configurar la mayoría de las soluciones de entrada para que funcionen con la malla, pero OSM funciona mejor con una de las siguientes soluciones:
Nota
En este momento, el controlador de entrada de puerta de enlace de Azure (AGIC) solo funciona para los back-end HTTP. Si configura OSM para que use AGIC, AGIC no se utilizará para otros back-end como HTTPS y mTLS.
Uso del controlador de entrada de la puerta de enlace de Azure (AGIC) con el complemento OSM para la entrada HTTP
Importante
No se puede configurar el controlador de entrada de puerta de enlace de Azure (AGIC) para la entrada HTTPS.
Creación de un espacio de nombres e implementación del servicio de aplicación
Instalación del controlador de entrada de AGIC.
Cree un espacio de nombres para el servicio de aplicación mediante el comando
kubectl create ns
.kubectl create ns httpbin
Agregue el espacio de nombres a la malla mediante el comando
osm namespace add
de la CLI de OSM.osm namespace add httpbin
Implemente el servicio de aplicación en el espacio de nombres mediante el 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
Compruebe que los pods estén en funcionamiento y que el sidecar de Envoy se haya insertado mediante el comando
kubectl get pods
.kubectl get pods -n httpbin
El resultado debería ser similar al ejemplo siguiente:
NAME READY STATUS RESTARTS AGE httpbin-7c6464475-9wrr8 2/2 Running 0 6d20h
Enumere los detalles del servicio mediante el comando
kubectl get svc
.kubectl get svc -n httpbin
El resultado debería ser similar al ejemplo siguiente:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE httpbin ClusterIP 10.0.92.135 <none> 14001/TCP 6d20h
Implementación de las configuraciones de entrada y comprobación del acceso al servicio de aplicación
A continuación, implemente las siguientes configuraciones
Ingress
yIngressBackend
para permitir que los clientes externos accedan al serviciohttpbin
en el puerto14001
mediante el 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
Compruebe que el objeto
Ingress
se haya implementado correctamente mediante el comandokubectl get ingress
y anote la dirección IP externa.kubectl get ingress -n httpbin
El resultado debería ser similar al ejemplo siguiente:
NAME CLASS HOSTS ADDRESS PORTS AGE httpbin <none> * 20.85.173.179 80 6d20h
Compruebe que el objeto
IngressBackend
se haya implementado correctamente mediante el comandokubectl get ingressbackend
.kubectl get ingressbackend -n httpbin
El resultado debería ser similar al ejemplo siguiente:
NAME STATUS httpbin committed
Compruebe que pueda acceder al servicio
httpbin
mediante la dirección IP externa del servicio de entrada y el comandocurl
.curl -sI http://<external-ip>/get
Confirme que recibe una respuesta con
status 200
.
Observabilidad de métricas
La observabilidad de las métricas permite ver las métricas de la malla y las implementaciones en ella. Con OSM, puede usar Prometheus y Grafana para la observabilidad de métricas, pero esas integraciones no están cubiertas por la directiva de compatibilidad de AKS.
También puede realizar la integración de OSM con Azure Monitor.
Antes de habilitar las métricas en la malla para integrarse con Azure Monitor, asegúrese de tener los siguientes requisitos previos:
- Habilite Azure Monitor en el clúster.
- Habilite el complemento de OSM para el clúster de AKS.
- Incorpore los espacios de nombres de la aplicación a la malla.
Para habilitar las métricas de un espacio de nombres en la malla, use el comando
osm metrics enable
.osm metrics enable --namespace myappnamespace
Cree un ConfigMap en el espacio de nombres
kube-system
que permita que Azure Monitor supervise los espacios de nombres. Por ejemplo, cree unmonitor-configmap.yaml
con el siguiente contenido para supervisarmyappnamespace
: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
Aplique ConfigMap mediante el comando
kubectl apply
.kubectl apply -f monitor-configmap.yaml
Vaya a Azure Portal y seleccione su clúster de AKS.
En Supervisión, seleccione Registros.
En la sección Supervisión, consulte la tabla
InsightsMetrics
para ver las métricas en los espacios de nombres habilitados. Por ejemplo, la consulta siguiente muestra las métricas de Envoy para el espacio de nombres default:InsightsMetrics | where Name contains "envoy" | extend t=parse_json(Tags) | where t.namespace == "default"
Herramientas de automatización y desarrollo
OSM se puede integrar con determinados proyectos de automatización y herramientas de desarrollo para ayudar a los operadores y desarrolladores a compilar y publicar aplicaciones. Por ejemplo, OSM se integra con Flagger para la entrega progresiva y Dapr para compilar aplicaciones. La integración de OSM con Flagger y Dapr no está cubierta por la directiva de compatibilidad de AKS.
Autorización externa
La autorización externa permite descargar la autorización de solicitudes HTTP en un servicio externo. OSM puede usar la autorización externa mediante la integración con Open Policy Agent (OPA), pero esa integración no está cubierta por la directiva de compatibilidad de AKS.
Administración de certificados
OSM tiene varios tipos de certificados que usa para operar en el clúster de AKS. OSM incluye su propio administrador de certificados denominado Tresor, que se usa de forma predeterminada. Como alternativa, OSM permite la integración con Hashicorp Vault y cert-manager, aunque estas integraciones no están cubiertas por la directiva de compatibilidad de AKS.
Pasos siguientes
En este artículo se trataron las integraciones de complementos de Open Service Mesh (OSM) con características proporcionadas por Azure y algunos proyectos de código abierto. Para más información sobre OSM, consulte Acerca de OSM en AKS.
Azure Kubernetes Service