Configurer le routage du chemin de base

Cet article traite du routage du chemin de base. Le routage du chemin de base vous permet de configurer et de gérer la manière dont Apigee hybrid achemine les appels de proxy d'API vers le bon environnement.

Utiliser le routage de chemin de base pour gérer les déploiements de proxy

Comme vous pouvez mapper un seul hôte virtuel avec plusieurs environnements dans Apigee hybrid, vous devez disposer d'un moyen de spécifier quel chemin de base du proxy correspond à quel environnement.

Par exemple, supposons que vous souhaitiez mapper deux environnements avec le même alias d'hôte : apitest.mydomain.net. Dans votre fichier de remplacement, vous pouvez créer la configuration suivante, où les environnements dev1 et dev2 sont tous deux mappés avec cet hôte. Exemple :

envs:
  - name: dev1
    hostAlias: "apitest.mydomain.net"
    ...
  - name: dev2
    hostAlias: "apitest.mydomain.net"
    ...

Supposons maintenant que vous déployiez des proxys dans ces environnements. Vous déployez :

  • le proxy foo1 avec le chemin de base /foo1 dans dev1 ;
  • le proxy foo2 avec le chemin de base /foo2 dans dev2.

Supposons qu'un client appelle cette API : https://apitest.mydomain.net/foo1. Notez que rien dans ce chemin (ou dans l'en-tête d'hôte généré pour la requête) n'indique à Apigee hybrid vers quel environnement acheminer l'appel. Le proxy foo1 est-il déployé dans dev1 ou dans dev2 ? L'URL de la requête seule ne permet pas de le déterminer. Vous devez mapper explicitement chacun de ces chemins de base avec un ou plusieurs environnements.

Pour spécifier l'environnement vers lequel un appel de proxy doit être acheminé, ajoutez la propriété paths.uri.prefixes à la propriété envs dans votre fichier de remplacement, comme indiqué dans l'exemple suivant :

gcpProjectID: example
k8sClusterName: apigee-hybrid

# Apigee org name.
org: my-org

envs:
    # Apigee environment name.
  - name: dev1
    hostAlias: "apitest.mydomain.net"
    sslCertPath: ./certs/keystore.pem
    sslKeyPath: ./certs/keystore.key
    serviceAccountPaths:
      synchronizer: ./service-accounts/example-apigee-synchronizer.json
      udca: ./service-accounts/example-apigee-udca.json
    paths:
      uri:
        prefixes:
          - /foo1
  - name: dev2
    hostAlias: "apitest.mydomain.net"
    sslCertPath: ./certs/keystore.pem
    sslKeyPath: ./certs/keystore.key
    serviceAccountPaths:
      synchronizer: ./service-accounts/example-apigee-synchronizer.json
      udca: ./service-accounts/example-apigee-udca.json
    paths:
      uri:
        prefixes:
          - /foo2
    ...

Désormais, lorsqu'un appel d'API arrive, par exemple https://apitest.mydomain.net/foo1, le routeur d'entrée sait où l'envoyer. Il sait que le proxy /foo1 est déployé dans l'environnement dev1 et que l'appel est acheminé vers le processeur de messages de dev1.

Si vous envoyez l'appel https://apitest.mydomain.net/foo2, il est également acheminé vers le processeur de messages de dev2, et ainsi de suite.

En résumé, la configuration de paths.uri.prefixes vous permet de gérer les déploiements de proxy entre plusieurs environnements partageant le même alias d'hôte.

Bonne pratique : Utilisez le routage du chemin de base lorsque vous souhaitez que plusieurs environnements partagent le même alias d'hôte. Le routage du chemin de base vous permet de limiter le nombre de proxys déployés dans un même environnement. Pour plus d'informations, consultez la section Limiter le nombre de déploiements de proxy.

Ajouter un nouvel environnement au même domaine

Cette section explique comment ajouter un nouvel environnement à un domaine.

Dans ce scénario, supposons que vous disposiez d'un environnement dev1 déjà déployé sur le cluster. Dans cet exemple de configuration, seuls les proxys dotés du préfixe de chemin de base /foo1 sont autorisés :

gcpProjectID: example
k8sClusterName: apigee-hybrid

# Apigee org name.
org: my-org

envs:
    # Apigee environment name.
  - name: dev1
    hostAlias: "apitest.mydomain.net"
    sslCertPath: ./certs/keystore.pem
    sslKeyPath: ./certs/keystore.key
    serviceAccountPaths:
      synchronizer: ./service-accounts/example-apigee-synchronizer.json
      udca: ./service-accounts/example-apigee-udca.json
    paths:
      uri:
        prefixes:
          - /foo1

mart:
  hostAlias: "mart.apigee-hybrid-docs.net"
  serviceAccountPath: ./service-accounts/example-apigee-mart.json
  sslCertPath: ./certs/fullchain.pem
  sslKeyPath: ./certs/privkey.key

metrics:
  serviceAccountPath: ./service-accounts/willwitman-istio-25240157d44a.json

Pour ajouter un autre environnement partageant le même domaine, procédez comme suit :

  1. Créez un fichier de remplacement avec la nouvelle configuration d'environnement. Par exemple, cette configuration crée un environnement appelé dev2. Dans cet environnement, seuls les proxys dotés du suffixe de chemin /foo2 sont autorisés :
    gcpProjectID: example
    k8sClusterName: apigee-hybrid
    
    # Apigee org name.
    org: my-org
    
    envs:
        # Apigee environment name.
      - name: dev2
        hostAlias: "apitest.mydomain.net"
        sslCertPath: ./certs/keystore.pem
        sslKeyPath: ./certs/keystore.key
        serviceAccountPaths:
          synchronizer: ./service-accounts/example-apigee-synchronizer.json
          udca: ./service-accounts/example-apigee-udca.json
        paths:
          uri:
            prefixes:
              - /foo2
    
    mart:
      hostAlias: "mart.apigee-hybrid-docs.net"
      serviceAccountPath: ./service-accounts/example-apigee-mart.json
      sslCertPath: ./certs/fullchain.pem
      sslKeyPath: ./certs/privkey.key
    
    metrics:
      serviceAccountPath: ./service-accounts/willwitman-istio-25240157d44a.json
    
  2. Exécutez les commandes suivantes dans n'importe quel ordre :
    1. apigeectl apply -f overrides/overrides-dev2.yaml -c udca
    2. apigeectl apply -f overrides/overrides-dev2.yaml -c synchronizer
    3. apigeectl apply -f overrides/overrides-dev2.yaml -c runtime
  3. Déployez le proxy foo2 dans l'environnement dev2.
  4. Appelez le proxy pour tester la configuration.
    curl https://apitest.mydomain.net/foo2

Ajouter un nouveau chemin de base de proxy à un environnement existant

Pour ajouter un nouveau chemin de base à un environnement existant, il vous suffit d'ajouter une entrée prefixes pour chaque nouveau chemin de base. Par exemple, si vous créez un proxy avec le chemin d'accès de base /foo4 et que vous souhaitez le déployer dans l'environnement appelé dev2, procédez comme suit :

  1. Ouvrez le fichier de remplacement contenant la définition de l'environnement dev2.
  2. Ajoutez le chemin de base /foo4 à l'élément paths.uri.prefixes :
    gcpProjectID: example
    k8sClusterName: apigee-hybrid
    
    # Apigee org name.
    org: my-org
    
    envs:
        # Apigee environment name.
      - name: dev2
        hostAlias: "apitest.mydomain.net"
        sslCertPath: ./certs/keystore.pem
        sslKeyPath: ./certs/keystore.key
        serviceAccountPaths:
          synchronizer: ./service-accounts/example-apigee-synchronizer.json
          udca: ./service-accounts/example-apigee-udca.json
        paths:
          uri:
            prefixes:
              - /foo2
              - /foo4
    
    mart:
      hostAlias: "mart.apigee-hybrid-docs.net"
      serviceAccountPath: ./service-accounts/example-apigee-mart.json
      sslCertPath: ./certs/fullchain.pem
      sslKeyPath: ./certs/privkey.key
    
    metrics:
      serviceAccountPath: ./service-accounts/willwitman-istio-25240157d44a.json
    
  3. Appliquez le composant runtime au cluster :
    apigeectl apply -f overrides/overrides-dev2.yaml -c runtime
  4. Appelez le proxy pour tester la configuration.
    curl https://apitest.mydomain.net/foo4

    Si un appel d'API arrive pour https://apitest.mydomain.net/foo4, Apigee hybrid sait qu'il doit l'acheminer vers l'environnement dev2.