Cette page s'applique à Apigee et à Apigee hybrid.
Consultez la documentation d'
Apigee Edge.
Cette page explique comment activer les options par défaut d'application des quotas et de sécurité disponibles avec l'opérateur Apigee pour Kubernetes.
Avant de commencer
Avant de commencer cette tâche, assurez-vous d'avoir effectué les étapes suivantes :
- Installez l'opérateur Apigee pour Kubernetes. Pour obtenir des instructions d'installation, consultez Installer l'opérateur Apigee pour Kubernetes.
- Créez une extension de service de trafic. Pour effectuer cette étape, vous pouvez utiliser
ApigeeBackendService
ouAPIMExtensionPolicy
. Pour en savoir plus sur la création d'une extension de trafic à l'aide deAPIMExtensionPolicy
, consultez Créer une APIMExtensionPolicy. Pour en savoir plus sur la création d'une extension de trafic à l'aide deApigeeBackendService
, consultez Créer un ApigeeBackendService.
Que vous ayez créé une extension de service de trafic pour votre passerelle GKE à l'aide de ApigeeBackendService
ou de APIMExtensionPolicy
, vous devez suivre les étapes de ce tutoriel pour activer les règles de quota et de clé API par défaut ajoutées au APIMExtensionPolicy
de backend.
Rôles requis
Si vous avez attribué les rôles requis à votre compte de service, comme décrit dans Installer l'opérateur Apigee pour Kubernetes, aucun rôle ni autorisation IAM supplémentaires ne sont nécessaires 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 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 comment activer les options par défaut d'application des quotas et de sécurité disponibles avec l'opérateur Apigee pour Kubernetes. Dans ce tutoriel, vous allez :
- Définissez le produit d'API.
- Définissez l'ensemble d'opérations d'API.
- Testez l'extension de service Apigee.
- Affichez Apigee API Analytics dans la console Google Cloud .
Les étapes requises pour définir le produit d'API et l'ensemble d'opérations d'API varient légèrement selon que vous avez créé une extension de trafic pour votre passerelle GKE à l'aide de ApigeeBackendService
ou de APIMExtensionPolicy
.
Définir le produit d'API
À cette étape, vous allez définir le produit d'API qui sera utilisé pour gérer l'application des clés API et des règles de quota.
Utiliser le APIMExtensionPolicy
Définissez le produit d'API :
- Créez un fichier nommé
api-product.yaml
dans l'espace de nomsapim
. - Copiez ce qui suit dans le nouveau fichier :
# api-product.yaml apiVersion: apim.googleapis.com/v1 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
Utiliser le ApigeeBackendService
Définissez le produit d'API :
- Créez un fichier nommé
api-product.yaml
dans l'espace de nomsapim
. - Copiez ce qui suit dans le nouveau fichier :
# api-product.yaml apiVersion: apim.googleapis.com/v1 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: ApigeeBackendService group: apim.googleapis.com namespace: default attributes: - name: access value: private
- Appliquez le fichier à la passerelle à l'aide de la commande suivante :
kubectl -n default apply -f api-product.yaml
Définir l'ensemble d'opérations d'API
Au cours de cette étape, vous allez définir l'ensemble d'opérations d'API qui sera utilisé pour gérer l'application des opérations REST.
Utiliser le APIMExtensionPolicy
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 quotas 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/v1 kind: APIOperationSet metadata: name: item-set namespace: apim 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
Utiliser le ApigeeBackendService
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 nomsdefault
. - Copiez le contenu suivant dans le nouveau fichier.
Ce fichier définit une règle de quotas 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/v1 kind: APIOperationSet metadata: name: item-set namespace: default spec: apiProductRefs: - name: api-product kind: APIProduct group: apim.googleapis.com namespace: default quota: limit: 10 interval: 1 timeUnit: minute restOperations: - name: GetItems path: /get methods: - GET
- Appliquez le fichier à la passerelle :
kubectl -n default apply -f apim-policies.yaml
Tester l'extension de service Apigee
Au cours de cette étape, vous allez utiliser l'interface utilisateur Apigee dans la console Google Cloud pour tester l'extension de service Apigee et le règlement sur les extensions Apigee appliqué à votre passerelle.
Tester la configuration
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 Apigee pour Kubernetes.
- 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éer une application :
- Sélectionnez Distribution> Applications.
- Sur la page Applications, cliquez sur + Créer.
- Sur la page Create App (Créer une application), renseignez les champs obligatoires de la section App Details (Détails de l'application) en utilisant les 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 de la liste.
- Dans la section App Credentials (Identifiants de l'application), cliquez sur + Add Credential (+ Ajouter un identifiant).
- Dans la section Identifiant, renseignez les champs obligatoires de la section Détails de l'identifiant avec les valeurs suivantes :
- Nom de l'identifiant : 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 Informations sur l'application, dans la section Identifiant, 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 lors d'une étape ultérieure. - Sur la page App Details (Informations sur l'application), dans la section Credential (Identifiant), cliquez sur visibility_off pour afficher la valeur de App Secret (Secret de l'application).
Copiez la valeur Secret de l'application. Vous utiliserez cette valeur pour générer un jeton d'accès lors d'une étape ultérieure.
Tester l'application des clés API
Utilisez la commande suivante pour envoyer une requête à votre passerelle à l'aide de la clé API obtenue lors d'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
correspond au nom d'hôte défini dans la ressourceHTTPRoute
de la passerelle.API_KEY
correspond à la valeur de la clé API obtenue dans Tester la configuration.
La requête devrait 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": "f0N6sYYYclGYYYe0oP5YYYdA20PjgrP2x8YYYh7z4YYYKiYt", "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 du quota défini dans votre APIMExtensionPolicy
, envoyez la requête de l'étape précédente à la passerelle dix fois en l'espace d'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
correspond au nom d'hôte défini dans la ressourceHTTPRoute
de la passerelle.API_KEY
correspond à la valeur de la clé API obtenue dans Tester la configuration.
Cette action devrait déclencher un non-respect du 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 dans l'ensemble d'opérations d'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
correspond au nom d'hôte défini dans la ressourceHTTPRoute
de la passerelle.API_KEY
correspond à la valeur de la clé API obtenue dans Tester la configuration.
La requête devrait é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 APIMExtensionPolicy
à 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 Apigee pour Kubernetes.
- Sélectionnez Analytics > Métriques de l'API dans le menu de navigation latéral.
- Dans l'onglet Performances du proxy d'API, choisissez l'environnement que vous avez créé lors de l'étape d'installation facultative
Créer un environnement Apigee ou l'environnement créé par l'opérateur Apigee pour Kubernetes lors de l'installation. Le nom de l'environnement commencera par le préfixe
apigee-ext-proc-enabled-env
. - Observez le trafic d'API enregistré.
Résoudre les problèmes
Si vous rencontrez des problèmes lors de l'utilisation des règles de gestion des API avec l'opérateur Apigee pour Kubernetes, consultez Résoudre les problèmes liés à l'opérateur Apigee pour Kubernetes pour trouver des solutions aux erreurs courantes.
Étapes suivantes
Pour ajouter d'autres règles, consultez Ajouter des règles à GKE Gateway.