Compartir a través de


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

  1. Instalación del controlador de entrada de AGIC.

  2. Cree un espacio de nombres para el servicio de aplicación mediante el comando kubectl create ns.

    kubectl create ns httpbin
    
  3. Agregue el espacio de nombres a la malla mediante el comando osm namespace add de la CLI de OSM.

    osm namespace add httpbin
    
  4. 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
    
  5. 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
    
  6. 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

  1. A continuación, implemente las siguientes configuraciones Ingress y IngressBackend para permitir que los clientes externos accedan al servicio httpbin en el puerto 14001 mediante el 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. Compruebe que el objeto Ingress se haya implementado correctamente mediante el comando kubectl 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
    
  3. Compruebe que el objeto IngressBackend se haya implementado correctamente mediante el comando kubectl get ingressbackend.

    kubectl get ingressbackend -n httpbin
    

    El resultado debería ser similar al ejemplo siguiente:

    NAME      STATUS
    httpbin   committed
    
  4. Compruebe que pueda acceder al servicio httpbin mediante la dirección IP externa del servicio de entrada y el comando curl.

    curl -sI http://<external-ip>/get
    
  5. 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.
  1. Para habilitar las métricas de un espacio de nombres en la malla, use el comando osm metrics enable.

    osm metrics enable --namespace myappnamespace
    
  2. Cree un ConfigMap en el espacio de nombres kube-system que permita que Azure Monitor supervise los espacios de nombres. Por ejemplo, cree un monitor-configmap.yaml con el siguiente contenido para supervisar 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. Aplique ConfigMap mediante el comando kubectl apply.

    kubectl apply -f monitor-configmap.yaml
    
  4. Vaya a Azure Portal y seleccione su clúster de AKS.

  5. En Supervisión, seleccione Registros.

  6. 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.