Utiliser Apigee Connect (version bêta)

Cette section décrit l'utilisation d'Apigee Connect (version bêta) pour la communication entre le plan de gestion hybride et le service MART dans le plan d'exécution.

Introduction

Apigee Connect permet au plan de gestion hybride d'Apigee de se connecter en toute sécurité au service MART dans le plan d'exécution sans avoir à exposer le point de terminaison MART sur Internet. Si vous utilisez Apigee Connect, vous n'avez pas besoin de configurer la passerelle d'entrée MART avec un alias d'hôte et un certificat DNS autorisé.

Services principaux qui s'exécutent sur le plan d'exécution hybride montrant Apigee Connect

Prérequis

Apigee hybrid version 1.2.0 ou ultérieure doit être installé et configuré avant de configurer Apigee Connect.

  • Si vous installez Apigee hybrid pour la première fois, suivez les instructions d'installation indiquées dans la documentation d'Apigee hybrid.
  • Si vous utilisez actuellement la version 1.1.x d'Apigee hybrid, vous devez mettre à niveau votre installation vers la version 1.2.0 avant de continuer. Pour connaître la procédure de mise à niveau, consultez la page Mettre à niveau Apigee hybrid.

Ajouter Apigee Connect à l'environnement d'exécution hybride

Dans cette section, nous partons du principe que vous avez installé et configuré Apigee hybrid version 1.2.0 ou ultérieure, ou que vous avez effectuez une mise à niveau vers cette version.

Lorsque Apigee Connect est configuré et activé, l'entrée MART est ignorée : le plan de gestion se connecte uniquement à MART à l'aide d'Apigee Connect. Tout le trafic MART entre le plan d'exécution hybride passe par la connexion sécurisée Apigee Connect.

Pour activer et utiliser Apigee Connect avec Apigee hybrid, procédez comme suit :

  1. Activez l 'API Apigee Connect dans la bibliothèque d'API Google Cloud. Vous pouvez activer l'API dans la console Google Cloud (GCP) ou avec gcloud. Pour obtenir des instructions sur l'activation des API dans Google Cloud Console, consultez la section Étape 3 : Activer les API. Pour utiliser gcloud afin d'activer l'API, procédez comme suit :
    $ gcloud config set project YOUR_GCP_PROJECT_ID
    $ gcloud services enable apigeeconnect.googleapis.com

    YOUR_GCP_PROJECT_ID correspond au projet GCP pour lequel Apigee a été activé et une organisation Apigee a été provisionnée pour vous.
  2. Ajoutez le rôle Agent Apigee Connect au compte de service MART que vous avez créé à l'étape Créer des comptes de service dans les instructions d'installation d'Apigee hybrid :
    $ gcloud projects add-iam-policy-binding YOUR_GCP_PROJECT_ID
    --member serviceAccount:YOUR_MART_SERVICE_ACCOUNT_EMAIL --role roles/apigeeconnect.Agent

    YOUR_GCP_PROJECT_ID correspond au projet GCP pour lequel Apigee a été activé et une organisation Apigee a été provisionnée pour vous. YOUR_MART_SERVICE_ACCOUNT_EMAIL correspond au nom du compte de service MART. Le nom se présente sous la forme d'une adresse e-mail. Exemple : apigee-mart@my-project.iam.gserviceaccount.com.

    Le rôle Agent Apigee Connect est prédéfini et l'autorisation suivante lui est attribuée :
    Permission Description
    apigeeconnect.endpoints.connect Il s'agit de l'autorisation de configurer l'agent Apigee Connect.

    Pour en savoir plus sur l'attribution d'autorisations d'accès via la console GCP ou les API, consultez les pages suivantes :

  3. Assurez-vous que le fichier de clé du compte de service MART se trouve dans le répertoire hybrid_files/service_accounts, comme expliqué dans la section Créer des comptes de service.
  4. Ouvrez votre fichier de remplacement et ajoutez les stanzas suivants. La configuration nécessite que vous fournissiez le chemin d'accès à la clé de compte de service téléchargée. La clé doit correspondre à un compte de service doté du rôle Agent Apigee Connect.
    # Apigee Connect Agent
    connectAgent:
      enabled: true
      serviceAccountPath: ./service-accounts/connect_agent_sa_key.json

    Ajoutez le stanza sous l'en-tête k8sCluster, par exemple :
    k8sCluster:
      name: your_cluster_name
      region: your_cluster_region
    
    # Apigee Connect Agent
    connectAgent:
      enabled: true
      serviceAccountPath: ./service-accounts/connect_agent_sa_key.json
    # Apigee Connect Agent
    connectAgent:
      enabled: true
      replicaCountMin: 3
      serviceAccountPath: ./service-accounts/connect_agent_sa_key.json
  5. Localisez la clé de compte de service dotée du rôle Administrateur de l'organisation Apigee que vous avez téléchargée lors de l'installation initiale d'Apigee hybrid, comme décrit dans la section Activer l'accès au synchroniseur. Vous avez besoin de cette clé pour générer un jeton nécessaire à un appel d'API, comme expliqué ci-dessous.
  6. Exécutez ces deux commandes pour obtenir un jeton :
    $ export GOOGLE_APPLICATION_CREDENTIALS=org-admin-service-account-file
    $ export TOKEN=$(gcloud auth application-default print-access-token)

    org-admin-service-account-file correspond au chemin d'accès sur votre système à la clé de compte de service que vous avez téléchargée et dotée du rôle Administrateur de l'organisation Apigee.
  7. Appelez l'API Apigee suivante afin d'activer Apigee Connect pour votre organisation :
    curl -v -X PUT \
       https://apigee.googleapis.com/v1/organizations/your_org_name \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $TOKEN" \
      -d '{
      "name" : "your_org_name",
      "properties" : {
        "property" : [ {
          "name" : "features.hybrid.enabled",
          "value" : "true"
        }, {
          "name" : "features.mart.connect.enabled",
          "value" : "true"
        } ]
      }
    }'

  8. Démarrez l'agent Apigee Connect dans le cluster :

    $ $APIGEECTL_HOME/apigeectl apply -f your_overrides_file.yaml -c connect-agent

  9. mart:
      hostAlias: "mart.apigee-hybrid-docs.net"
      serviceAccountPath: ./service-accounts/example-project-apigee-mart.json
      sslCertPath: ./certs/fullchain.pem
      sslKeyPath: ./certs/privkey.key
    
  10. Consultez le journal de l'agent Apigee Connect. Si aucune erreur n'est signalée, la mise à niveau a réussi :
    $ kubectl logs -n namespace apigee-connect-agent-pod-name

    L'agent Apigee Connect signale les catégories de journal suivantes :
    Catégorie de journaux d'audit Opérations
    DATA_READ ConnectionService.ListConnections
    DATA_WRITE Tether.Egress
    Pour obtenir de l'aide sur l'affichage des journaux d'audit dans Apigee hybride, consultez la section Informations sur les journaux d'audit.
  11. Avec cette mise à niveau, le plan d'exécution hybride communique avec le plan de gestion via Apigee Connect.

  12. Testez l'installation.

Voir aussi Suppression d'Apigee Connect.

Tester l'installation

  1. Ouvrez l'interface utilisateur Apigee hybride.
  2. Vérifiez que tous les développeurs et applications de développeur que vous avez créés précédemment sont présents dans l'interface utilisateur. Comme ces entités sont interrogées à partir du serveur MART, elles ne seront présentes que si la communication entre les plans de gestion et d'exécution est correctement configurée.
  3. Pour vous assurer que les requêtes transitent par Apigee Connect et non via l'entrée MART, consultez le journal du serveur MART. Vous devriez voir des entrées pour l'agent Apigee Connect nommé apigee-connect-agent-1.0 :
    $ kubectl logs -n apigee apigee-mart-orgname-rc101-q72tl -c apigee-mart | grep connect

    Exemple :
    "2019-12-11 04:59:52,321 org: env: target: action: context-id: mode: pool-1-thread-1 INFO MART_AUDITLOG - MartAuditListener.eventOccurred() : Type:Audit edge-gaambo-controlplane@system.gserviceaccount.com 1576040392317 /v1/organizations/apigee-connect-hybrid-prod/developers/ count=100&expand=true&startKey=4ee9e8f7-12b2-4cde-bf10-32d991469876 200 GET apigee-connect-hybrid-prod 10.40.11.3 10.40.0.5 apigee-connect-agent-1.0 null"
  4. Dans l'UI Apigee hybrid, créez un produit d'API, un développeur et une application de développeur. Ensuite, consultez le journal du service MART pour vérifier que les entrées de journal confirment que les entités ont bien été envoyées au plan d'exécution. Par exemple, l'entrée de journal suivante indique que le produit d'API nommé foo-product a été reçu :
    $ kubectl logs -n apigee apigee-mart-orgname-rc101-q72tl -c apigee-mart

    2019-12-16 22:15:29,572 org: env: target: action: context-id: mode: pool-1-thread-1 INFO  MART_AUDITLOG - MartAuditListener.eventOccurred() : Type:Audit edge-gaambo-controlplane@system.gserviceaccount.com 1576534529566 /v1/organizations/myorg/apiproducts/foo-product/ -NA- 201 CREATE myorg 10.16.1.61  10.16.1.64 apigee-connect-agent-1.0 null
    
    2019-12-16 22:15:30,412 org: env: target: action: context-id: mode: pool-1-thread-1 INFO  MART_AUDITLOG - MartAuditListener.eventOccurred() : Type:Audit edge-gaambo-controlplane@system.gserviceaccount.com 1576534530407 /v1/organizations/myorg/apps/ apiProduct=foo-product&expand=false 200 GET myorg 10.16.1.61  10.16.1.64 apigee-connect-agent-1.0 null
  5. Essayez de créer et de déployer un nouveau proxy, comme expliqué sur la page Créer et déployer un proxy.
  6. Configurez votre proxy avec la validation de clé API en suivant les étapes décrites sur la page Sécuriser un proxy d'API en exigeant des clés API. L'environnement d'exécution obtient les données requises pour valider une clé API à partir du plan de gestion via Apigee Connect. Par conséquent, si la validation de la clé API fonctionne, vous savez qu'Apigee Connect fonctionne correctement. Vous pouvez également consulter les journaux Apigee Connect pour voir un rapport sur les transferts de données.

Supprimer Apigee Connect

Si vous supprimez le déploiement d'Apigee Connect, l'état du pod peut rester à l'état "Arrêt" pendant sept minutes au maximum. Cette durée est prévue. Les agents Apigee Connect attendent que les connexions existantes expirent, au lieu de les arrêter soudainement. Le délai garantit que les requêtes en cours ne sont pas perdues.