Intégrations avec Open service Mesh sur Azure Kubernetes Service (AKS)

Le module complémentaire Open service Mesh (OSM) s’intègre aux fonctionnalités fournies par Azure ainsi qu’à quelques projets open source.

Remarque

Avec la mise hors service d’Open Service Mesh (OSM) par la CNCF (Cloud Native Computing Foundation), nous vous recommandons d’identifier vos configurations OSM et de les migrer vers une configuration Istio équivalente. Pour plus d'informations sur la migration d'OSM vers Istio, consultez les conseils de migration des configurations Open Service Mesh (OSM) vers Istio.

Important

Les intégrations avec des projets open source ne sont pas couvertes par la stratégie de support AKS.

Entrée

L’entrée permet de router le trafic externe au maillage vers des services au sein du maillage. Avec OSM, vous pouvez configurer la plupart des solutions d’entrée pour fonctionner avec votre maillage, mais OSM fonctionne mieux avec l’une des solutions suivantes :

Notes

À ce stade, le contrôleur d’entrée de passerelle Azure (AGIC) fonctionne uniquement pour les back-ends HTTP. Si vous configurez OSM pour utiliser AGIC, AGIC ne sera pas utilisé pour d’autres back-ends tels que HTTPS et mTLS.

Utilisez le contrôleur d’entrée Azure Gateway (AGIC) avec le module complémentaire OSM pour l’entrée HTTP

Important

Vous ne pouvez pas configurer Azure Gateway Ingress Controller (AGIC) pour les entrées HTTPS.

Créez un espace de noms et déployer le service d’application

  1. Installation du contrôleur d’entrée AGIC.

  2. Créez un espace de noms pour le service d’application à l’aide de la commande kubectl create ns.

    kubectl create ns httpbin
    
  3. Ajoutez l’espace de noms au maillage à l’aide de la osm namespace add commande CLI OSM.

    osm namespace add httpbin
    
  4. Déployez le service d’application dans l’espace de noms à l’aide de la commande 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. Vérifiez que les pods sont opérationnels et que le sidecar envoyé est injecté à l’aide de la commande kubectl get pods.

    kubectl get pods -n httpbin
    

    Vous devez obtenir un résultat semblable à l’exemple de sortie qui suit :

    NAME                      READY   STATUS    RESTARTS   AGE
    httpbin-7c6464475-9wrr8   2/2     Running   0          6d20h
    
  6. Répertoriez les détails du service à l’aide de la commande kubectl get svc.

    kubectl get svc -n httpbin
    

    Vous devez obtenir un résultat semblable à l’exemple de sortie qui suit :

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

Déployez les configurations d’entrée et vérifier l’accès au service d’application

  1. Ensuite, déployez les configurations Ingress et IngressBackend suivantes pour permettre aux clients externes d’accéder au service httpbin sur le port 14001 à l’aide de la commande 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. Vérifiez que l’objet Ingress a été correctement déployé à l’aide de la commande kubectl get ingress et notez l’adresse IP externe.

    kubectl get ingress -n httpbin
    

    Vous devez obtenir un résultat semblable à l’exemple de sortie qui suit :

    NAME      CLASS    HOSTS   ADDRESS         PORTS   AGE
    httpbin   <none>   *       20.85.173.179   80      6d20h
    
  3. Vérifiez que l’objet IngressBackend a été déployé avec succès à l’aide de la commande kubectl get ingressbackend.

    kubectl get ingressbackend -n httpbin
    

    Vous devez obtenir un résultat semblable à l’exemple de sortie qui suit :

    NAME      STATUS
    httpbin   committed
    
  4. Vérifiez que vous pouvez accéder au service httpbin à l’aide de l’adresse IP externe du service d’entrée et de la commande curl.

    curl -sI http://<external-ip>/get
    
  5. Vérifiez que vous recevez une réponse avec status 200.

Observation des métriques

L’observation des indicateurs de performance vous permet d’afficher les mesures de votre maillage et les déploiements de votre maillage. Avec OSM, vous pouvez utiliser Prometheus et Grafana pour l’observation des métriques, mais ces intégrations ne sont pas couvertes par la stratégie de support AKS.

Vous pouvez également effectuer une intégration OSM à Azure Monitor.

Avant de pouvoir activer les indicateurs de performance sur votre maillage à intégrer à Azure Monitor, vérifiez que vous disposez des conditions préalables suivantes :

  • Activez Azure Monitor sur votre cluster.
  • Activez le module complémentaire OSM sur votre cluster AKS.
  • Intégrez vos espaces de noms d'application dans le maillage.
  1. Activez les indicateurs de performance pour un espace de noms dans le maillage à l’aide de la commande osm metrics enable.

    osm metrics enable --namespace myappnamespace
    
  2. Créez un Configmap dans l'espace de noms kube-system qui permet à Azure Monitor de surveiller vos espaces de noms. Par exemple, créez un monitor-configmap.yaml avec les éléments suivants pour surveiller 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. Appliquez la ConfigMap avec la commande kubectl apply.

    kubectl apply -f monitor-configmap.yaml
    
  4. Accédez au portail Microsoft Azure et sélectionnez votre cluster AKS.

  5. Sous Supervision, sélectionnez Journaux d’activité.

  6. Dans la section Surveillance, interrogez le tableau InsightsMetrics pour afficher les indicateurs de performance dans les espaces de noms activés. Par exemple, la requête suivante affiche les métriques d'envoyé pour l'espace de noms par défaut :

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

Outils d’automatisation et de développement

OSM peut s’intégrer à certains projets d’automatisation et outils de développement pour aider les opérateurs et les développeurs à créer et à publier des applications. Par exemple, OSM s’intègre à l'indicateur pour la livraison progressive et DAPR pour la création d’applications. L’intégration d’OSM avec Flagger et Dapr n’est pas couverte par la politique de prise en charge AKS.

Autorisation externe

L’autorisation externe vous permet de décharger l’autorisation des requêtes HTTP vers un service externe. OSM peut utiliser l’autorisation externe en s’intégrant à Open Policy Agent (OPA), mais cette intégration n’est pas couverte par la stratégie de support AKS.

Gestion des certificats

OSM possède plusieurs types de certificats qu’il utilise pour fonctionner sur votre cluster AKS. OSM comprend son propre gestionnaire de certificats appelé Tresor, qui est utilisé par défaut. En guise d’alternative, OSM vous permet de procéder à une intégration avec Hashicorp Vault et cert-manager, mais ces intégrations ne sont pas couvertes par la stratégie de support AKS.

Étapes suivantes

Cette article montre les intégrations du module complémentaire Open service Mesh (OSM) avec les fonctionnalités fournies par Azure ainsi qu’à quelques projets open source. Pour en savoir plus sur OSM, consultez À propos d’OSM dans AKS.