Cette page s'applique à Apigee, mais pas à Apigee hybrid.
Consultez la documentation d'
Apigee Edge.
Cette page explique comment modifier la passerelle Google Kubernetes Engine (GKE) exécutée dans votre cluster pour appliquer des règles de gestion des API Apigee à l'aide de l'opérateur APIM Apigee pour Kubernetes (version Preview).
Avant de commencer
Avant de commencer cette tâche, assurez-vous d'avoir effectué les étapes suivantes:
- Vérifiez qu'une identité de charge de travail est configurée sur votre cluster GKE. Pour connaître la procédure à suivre, consultez Créer une identité de charge de travail.
- Vérifiez qu'une passerelle GKE est configurée et opérationnelle sur votre cluster. Pour en savoir plus, consultez la section Déployer des passerelles.
- Installez l'opérateur APIM. Pour obtenir des instructions d'installation, consultez Installer l'opérateur APIM Apigee pour Kubernetes.
Rôles requis
Si vous avez attribué les rôles requis à votre compte de service comme décrit dans Installer l'opérateur APIM Apigee pour Kubernetes, aucun rôle ni autorisation IAM supplémentaires ne sont requis pour effectuer ces tâches.
Vous pouvez choisir d'autoriser des actions sur les ressources de votre cluster Google Kubernetes Engine à l'aide du mécanisme intégré de contrôle des accès basé sur les rôles (RBAC) dans Kubernetes. Pour en savoir plus, consultez la section Autoriser des actions dans les clusters à l'aide du contrôle des accès basé sur les rôles.
Présentation
Les sections suivantes décrivent les étapes à suivre pour modifier votre passerelle GKE afin d'utiliser les règles Apigee à l'aide de l'opérateur APIM. Dans ce tutoriel, vous allez:
- Définissez la stratégie d'extension APIM.
- Définissez le produit d'API.
- Définissez l'ensemble d'opérations de l'API.
- Testez l'extension de service Apigee.
- Affichez Apigee API Analytics dans la console Google Cloud.
Définir la règle d'extension APIM
À cette étape, vous allez définir la stratégie d'extension APIM et l'appliquer à la passerelle GKE exécutée dans votre cluster.
Cette règle régit tout le trafic passant par la passerelle et son HTTPRoutes
associé, fonctionnant comme un flowhook au niveau de l'environnement dans Apigee aujourd'hui.
Définissez la règle d'extension APIM:
- Créez un fichier nommé
global-ext-lb1-apim-policy.yaml
dans l'espace de nomsapim
. - Copiez le contenu suivant dans le nouveau fichier:
# global-ext-lb1-apim-policy.yaml apiVersion: apim.googleapis.com/v1alpha1 kind: APIMExtensionPolicy metadata: name: global-ext-lb1-apim-policy namespace: apim spec: apigeeenv: ENV_NAME # optional location: global failOpen: false timeout: 1000ms targetRef: # identifies the Gateway where the extension should be applied name: global-ext-lb1 kind: Gateway namespace: default
Où ENV_NAME correspond au nom de l'environnement Apigee créé à l'étape d'installation Créer un environnement Apigee.
Vous pouvez afficher tous les environnements disponibles sur la page Environnements Apigee de la console Google Cloud:
- Appliquez la règle :
kubectl -n apim apply -f global-ext-lb1-apim-policy.yaml
Une fois le
yaml
appliqué, l'opérateur APIM crée des ressources réseau en arrière-plan. - Vérifiez l'état de la règle d'extension d'API à l'aide de la commande suivante:
kubectl -n apim get APIMExtensionPolicy
Le résultat doit ressembler à ce qui suit, avec un
State
deRUNNING
:NAME STATE ERRORMESSAGE global-ext-lb1-apim-policy RUNNING
- Utilisez la commande suivante pour envoyer une requête à la passerelle:
curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME"
Où :
GATEWAY_IP_ADDRESS
est l'adresse IP de la passerelle. Vous pouvez récupérer l'adresse IP de la passerelle à l'aide de la commande suivante, oùGATEWAY_NAME
est le nom de la passerelle:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
est le nom d'hôte défini dans leHTTPRoute
de la passerelle.
- La requête doit échouer et renvoyer une réponse semblable à celle-ci:
{"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}
Cela indique que la règle d'extension Apigee est active, et que l'application des clés API et la validation des jetons d'accès sont actives.
Définir le produit d'API
Définissez le produit d'API:
- Créez un fichier nommé
api-product.yaml
dans l'espace de nomsapim
. - Copiez le contenu suivant dans le nouveau fichier:
# api-product.yaml apiVersion: apim.googleapis.com/v1alpha1 kind: APIProduct metadata: name: api-product namespace: apim spec: approvalType: auto description: Http bin GET calls displayName: api-product enforcementRefs: - name: global-ext-lb1-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim attributes: - name: access value: private
- Appliquez le fichier à la passerelle à l'aide de la commande suivante :
kubectl -n apim apply -f api-product.yaml
Définir l'ensemble d'opérations de l'API
Définissez l'ensemble d'opérations d'API pour le produit d'API créé à l'étape précédente:
- Créez un fichier nommé
apim-policies.yaml
dans l'espace de nomsapim
. - Copiez le contenu suivant dans le nouveau fichier.
Ce fichier définit une règle de quota et les opérations REST disponibles pour le produit d'API défini à l'étape précédente:
# apim-policies.yaml apiVersion: apim.googleapis.com/v1alpha1 kind: APIOperationSet metadata: name: item-set spec: apiProductRefs: - name: api-product kind: APIProduct group: apim.googleapis.com namespace: apim quota: limit: 10 interval: 1 timeUnit: minute restOperations: - name: GetItems path: /get methods: - GET
- Appliquez le fichier à la passerelle:
kubectl -n apim apply -f apim-policies.yaml
Tester l'extension de service Apigee
Au cours de cette étape, vous allez utiliser l'interface utilisateur d'Apigee dans la console Google Cloud pour tester l'extension de service Apigee et la règle d'extension Apigee appliquée à votre passerelle.
Configuration des tests
Configurez les ressources d'API dont vous avez besoin pour les tests:
Accédez à la page Gestion des API Apigee dans la console Google Cloud:
- Sélectionnez l'organisation Apigee dans laquelle vous avez installé l'opérateur APIM.
- Créez un développeur :
- Sélectionnez Distribution > Développeurs.
- Sur la page Développeurs, cliquez sur + Créer.
- Sur la page Ajouter un développeur, renseignez les champs obligatoires avec les valeurs de votre choix.
- Cliquez sur Ajouter.
- Créez une application :
- Sélectionnez Distribution> Applications.
- Sur la page Applications, cliquez sur + Créer.
- Sur la page Create App (Créer une application), remplissez les champs obligatoires de la section App Details (Détails de l'application) à l'aide des valeurs suivantes :
- Nom de l'application: demo-app
- Développeur: sélectionnez le développeur que vous avez créé à l'étape précédente ou un autre développeur dans la liste.
- Dans la section Identifiants de l'application, cliquez sur + Ajouter un identifiant.
- Dans la section Identifiant, renseignez les champs obligatoires de la section Détails des identifiants avec les valeurs suivantes :
- Credential name (Nom des identifiants) : demo-credential
- Type d'identifiant: sélectionnez Clé API.
- Cliquez sur Créer.
- Dans la section Produits, cliquez sur + Ajouter des produits.
- Sélectionnez le
api-product-1
créé à l'étape précédente. - Cliquez sur Ajouter.
- Cliquez sur Créer.
- Sur la page App Details (Détails de l'application), dans la section Credential (Identifiants), cliquez sur
visibility_off pour afficher la valeur de la Clé.
Copiez la valeur
Key
. Vous utiliserez cette clé pour effectuer des appels d'API vers votre service à une étape ultérieure. - Sur la page App Details (Détails de l'application), dans la section Credential (Identifiants), cliquez sur visibility_off pour afficher la valeur du secret de l'application.
Copiez la valeur du code secret de l'application. Vous utiliserez cette valeur pour générer un jeton d'accès à une étape ultérieure.
Tester l'application de la rotation des clés API
Utilisez la commande suivante pour envoyer une requête à votre passerelle à l'aide de la clé API obtenue à une étape précédente:
curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
Où :
GATEWAY_IP_ADDRESS
est l'adresse IP de la passerelle. Vous pouvez récupérer l'adresse IP de la passerelle à l'aide de la commande suivante, oùGATEWAY_NAME
est le nom de la passerelle:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
est le nom d'hôte défini dans leHTTPRoute
de la passerelle.API_KEY
est la valeur de la clé API obtenue dans Configuration des tests.
La requête doit aboutir et renvoyer une réponse semblable à celle-ci:
{ "args": {}, "headers": { "Accept": "*/*", "Host": "apigee-apim-operator-test.apigee.net", "User-Agent": "curl/8.7.1", "X-Api-Key": "f0N6sXXXclGXXXe0oP5XXXdA20PjgrP2x8xXXh7z4XXXKiYt", "X-Cloud-Trace-Context": "bb3a768787099bda628781188bfb318b/15554891713516675739" }, "origin": "34.54.193.72", "url": "https://34.54.193.72/get" }
Tester l'application des quotas
Pour tester l'application des quotas définie dans votre stratégie d'extension APIM, envoyez la requête de l'étape précédente à la passerelle dix fois en une minute.
Vous pouvez exécuter le script suivant pour générer les requêtes:
#!/bin/sh for i in $(seq 1 11); do curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY" sleep 1 done
Où :
GATEWAY_IP_ADDRESS
est l'adresse IP de la passerelle. Vous pouvez récupérer l'adresse IP de la passerelle à l'aide de la commande suivante, oùGATEWAY_NAME
est le nom de la passerelle:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
est le nom d'hôte défini dans leHTTPRoute
de la passerelle.API_KEY
est la valeur de la clé API obtenue dans Configuration des tests.
Cette action doit déclencher une violation de quota et générer une erreur semblable à celle-ci:
{"fault":{"faultstring":"Rate limit quota violation. Quota limit exceeded. Identifier : _default","detail":{"errorcode":"policies.ratelimit.QuotaViolation"}}}
Tester l'application des opérations REST
Pour tester l'application des opérations REST, utilisez la commande suivante pour envoyer une requête à la passerelle à l'aide d'une URL qui n'est pas incluse dans l'ensemble d'opérations de l'API:
curl http://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
Où :
GATEWAY_IP_ADDRESS
est l'adresse IP de la passerelle. Vous pouvez récupérer l'adresse IP de la passerelle à l'aide de la commande suivante, oùGATEWAY_NAME
est le nom de la passerelle:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
est le nom d'hôte défini dans leHTTPRoute
de la passerelle.API_KEY
est la valeur de la clé API obtenue dans Configuration des tests.
La requête doit échouer et renvoyer une réponse semblable à celle-ci:
{"fault":{"faultstring":"Invalid ApiKey for given resource","detail":{"errorcode":"oauth.v2.InvalidApiKeyForGivenResource"}}}
Afficher Apigee API Analytics dans la console Google Cloud
Vous pouvez afficher le trafic d'API géré par la passerelle GKE et l'APIMExtensionPolicy que vous avez installés à l'aide d'Apigee API Analytics dans la console Google Cloud:
- Accédez à la page Gestion des API Apigee dans la console Google Cloud:
- Sélectionnez l'organisation Apigee dans laquelle vous avez installé l'opérateur APIM.
- Sélectionnez Analyse > Métriques de l'API dans le menu de navigation latéral.
- Dans l'onglet API Proxy Performance (Performances du proxy d'API), sélectionnez l'environnement que vous avez créé à l'étape d'installation facultative
Créer un environnement Apigee ou l'environnement créé par l'opérateur APIM lors de l'installation. Le nom de l'environnement commence par le préfixe
apigee-ext-proc-enabled-env
. - Observez le trafic de l'API enregistré.
Résoudre les problèmes
Si vous rencontrez des problèmes lors de l'utilisation de règles de gestion des API avec l'opérateur APIM, consultez la section Dépannage de l'opérateur APIM pour trouver des solutions aux erreurs courantes.
Étape suivante
- Découvrez comment ajouter des stratégies à la passerelle GKE.
- Découvrez comment désinstaller l'opérateur APIM Apigee pour Kubernetes.