Cette page s'applique à Apigee, mais pas à Apigee hybrid.
Consultez la documentation d'Apigee Edge.
À mesure que vos besoins en gestion d'API évolueront, vous devrez peut-être ajouter de nouveaux services à votre cluster, ou mettre à jour les routes et les options d'entrée existantes. Dans cette page, nous expliquons comment mettre à jour votre cluster pour effectuer les tâches suivantes :
- Ajouter une passerelle et une ressource HTTPRoute
- Mettre à jour un produit d'API
- Créer un produit d'API
- Créer un ensemble d'opérations d'API
- Tester la nouvelle configuration de la passerelle
Avant de commencer
Avant de commencer cette tâche, assurez-vous de suivre les étapes décrites dans Appliquer une stratégie avec l'opérateur Apigee APIM pour Kubernetes. Sur cette page, nous supposons que vous avez configuré un cluster Google Kubernetes Engine (GKE), installé l'opérateur Apigee APIM pour Kubernetes, créé une passerelle Google Kubernetes Engine (GKE) et appliqué au moins une stratégie de gestion des API à la passerelle.
Rôles requis
Si vous avez attribué les rôles requis à votre compte de service, comme décrit dans Installer l'opérateur Apigee APIM 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.
Ajouter une passerelle et une ressource HTTPRoute
Dans cette section, vous allez ajouter une passerelle et une ressource HTTPRoute à votre cluster. Dans les guides de tâches précédents, les exemples de configurations utilisaient une passerelle GKE externe. Si plusieurs passerelles sont déployées dans la même région, elles doivent être du même type (toutes externes ou toutes internes). C'est pourquoi l'exemple de configuration de ce guide utilisera également une passerelle externe.
L'opérateur APIM peut être utilisé avec des passerelles GKE internes ou externes, mais vous ne pouvez pas déployer les deux types de passerelles dans la même région.
Pour ajouter une passerelle et une ressource HTTPRoute à votre cluster, procédez comme suit :
- Configurez une nouvelle passerelle GKE externe. Pour en savoir plus et découvrir la procédure à suivre, consultez Déployer une passerelle externe.
- Créez une ressource
SslCertificate
globale gérée par Google :gcloud compute ssl-certificates create CERT_NAME \ --domains=HOST_NAME \ --global
Où :
CERT_NAME
est le nom du certificat que vous souhaitez créer.HOST_NAME_2
est le nom d'hôte de la nouvelle passerelle.
- Créez un fichier nommé
gateway2.yaml
dans l'espace de nomsapim
. - Copiez ce qui suit dans le nouveau fichier :
# gateway2.yaml apiVersion: gateway.networking.k8s.io/v1beta1 kind: Gateway metadata: name: global-ext-lb2 spec: gatewayClassName: gke-l7-global-external-managed listeners: - name: https protocol: HTTPS allowedRoutes: kinds: - kind: HTTPRoute namespaces: from: All port: 443 tls: options: networking.gke.io/pre-shared-certs: CERT_NAME
- Ajoutez une ressource HTTPRoute pour
/post
au même fichier, comme indiqué ci-dessous :# http-route2.yaml apiVersion: gateway.networking.k8s.io/v1beta1 kind: HTTPRoute metadata: name: http-bin-route-post namespace: http spec: parentRefs: - kind: Gateway name: global-ext-lb2 namespace: default hostnames: - HOST_NAME_2 rules: - matches: - path: type: PathPrefix value: "/post" backendRefs: - name: httpbin kind: Service port: 80 namespace: http
- Appliquez la nouvelle passerelle et la nouvelle ressource HTTPRoute :
kubectl apply -f gateway2.yaml
- Vérifiez l'état de la ressource HTTPRoute à l'aide de la commande suivante :
kubectl -n http get HttpRoute
La sortie devrait ressembler à ce qui suit :
NAME HOSTNAMES AGE http-bin-route ["my-hostname-2"] 12d
- Vérifiez l'état de la passerelle à l'aide de la commande suivante :
kubectl get gateway global-ext-lb2
La sortie devrait ressembler à ce qui suit :
NAME CLASS ADDRESS PROGRAMMED AGE global-ext-lb2 gke-l7-global-external-managed 34.54.193.92 True 11d
Vérifiez que la colonne
Address
contient une adresse IP valide et que l'étatProgrammed
est défini surTrue
. - Décrivez la passerelle pour vous assurer que la route est associée :
kubectl describe gateway global-ext-lb2
La sortie devrait ressembler à ce qui suit :
... Listeners: Attached Routes: 1 Conditions: Last Transition Time: 2024-10-03T03:10:17Z ...
Vérifiez que la valeur
Attached Routes
est définie sur1
.- Envoyez une requête à la passerelle pour vérifier que la route fonctionne :
curl -k -X POST https://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME_2"
Où :
GATEWAY_IP_ADDRESS
correspond à l'adresse IP de la passerelle, comme indiqué dans la colonneAddress
de la réponse renvoyée à l'étape 7.HOST_NAME_2
correspond au nom d'hôte défini dans la ressourceHTTPRoute
de la passerelle.
- La sortie devrait ressembler à ce qui suit :
{ "args": {}, "headers": { "Accept": "*/*", "Host": "apigee-apim-operator-test.apigee.net", "User-Agent": "curl/8.7.1", "X-Cloud-Trace-Context": "2bb8a80e29e80662ff9cb89971c447d9/13083106619927322701" }, "origin": "67.164.1.10,34.54.193.72", "url": "https://apigee-apim-operator-test.apigee.net/post" }
- Créez une règle d'extension APIM qui référence la ressource HTTPRoute de la nouvelle passerelle créée lors d'une étape précédente :
- Créez un fichier nommé
apim-policy2.yaml
dans l'espace de nomsapim
. - Copiez ce qui suit dans le nouveau fichier :
# apim-policy2.yaml apiVersion: apim.googleapis.com/v1 kind: APIMExtensionPolicy metadata: name: global-ext-lb2-apim-policy-2 namespace: apim spec: location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true targetRef: # identifies the Gateway where the extension should be installed name: global-ext-lb2 kind: Gateway namespace: default
- Appliquez la nouvelle règle d'extension APIM :
kubectl apply -f apim-policy2.yaml
Une fois le fichier 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 APIM :
kubectl -n apim get APIMExtensionPolicy
La sortie devrait ressembler à ce qui suit :
NAME STATE ERRORMESSAGE global-ext-lb2-apim-policy-2 RUNNING
Vérifiez que la valeur
STATE
estRUNNING
. - Attendez cinq minutes pour vous assurer que les modifications sont propagées à toutes les instances à équilibreur de charge, puis utilisez la commande suivante pour vérifier qu'une requête adressée à la nouvelle passerelle échoue :
curl -k -X POST https://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME_2"
Où :
GATEWAY_IP_ADDRESS
correspond à l'adresse IP de la passerelle obtenue à une étape précédente.HOST_NAME_2
correspond au nom d'hôte défini dans la ressourceHTTPRoute
de la passerelle.
La requête devrait é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 signifie que l'extension du service à Apigee est active et que la vérification des clés API et des jetons d'accès est appliquée. Pour savoir comment créer une application de développeur, obtenir une clé API et tester votre nouvelle passerelle avec cette clé, consultez Tester l'extension de service Apigee.
- Créez un fichier nommé
Mettre à jour un produit d'API
Modifiez un produit d'API existant pour référencer la nouvelle règle d'extension APIM :
- Créez un fichier nommé
api-product-2.yaml
dans l'espace de nomsapim
. - Copiez ce qui suit dans le nouveau fichier :
# api-product-2.yaml apiVersion: apim.googleapis.com/v1 kind: APIProduct metadata: name: api-product-2 namespace: apim spec: name: api-product-2 approvalType: auto description: Http bin GET calls displayName: api-product-2 EnforcementRefs: - name: global-ext-lb1-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim - name: global-ext-lb2-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim attributes: - name: access value: private
- Appliquez le nouveau fichier de produit d'API comme suit :
kubectl apply -f api-product-2.yaml
L'application des modifications à l'ensemble du cluster prendra environ trois minutes.
Dans cet exemple, la section EnforcementRefs
du produit d'API api-product-2
est mise à jour pour référencer à la fois global-ext-lb1-apim-policy
et global-ext-lb2-apim-policy
, comme indiqué dans les parties du fichier yaml
mises en surbrillance.
Créer un produit d'API
Créez un produit d'API comme suit :
- Créez un fichier nommé
api-product-2.yaml
dans l'espace de nomsapim
. - Copiez ce qui suit dans le nouveau fichier :
# api-product-2.yaml apiVersion: apim.googleapis.com/v1 kind: APIProduct metadata: name: api-product-2 namespace: apim spec: name: api-product-2 approvalType: auto description: Http bin GET calls displayName: api-product-2 enforcementRefs: - name: global-ext-lb2-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim attributes: - name: access value: private
- Appliquez le nouveau fichier de produit d'API comme suit :
kubectl apply -f api-product-2.yaml
L'application des modifications à l'ensemble du cluster prendra environ trois minutes.
Dans cet exemple, la section EnforcementRefs
du nouveau produit d'API api-product-2
est créée pour référencer global-ext-lb2-apim-policy
, comme indiqué dans les parties du fichier yaml
mises en surbrillance.
Créer un ensemble d'opérations d'API
Créez un ensemble d'opérations d'API comme suit :
- Créez un fichier nommé
item-set-post.yaml
dans l'espace de nomsapim
. - Copiez ce qui suit dans le nouveau fichier :
# item-set-post.yaml apiVersion: apim.googleapis.com/v1 kind: APIOperationSet metadata: name: item-set-post namespace: apim spec: apiProductRefs: - name: api-product-2 kind: APIProduct group: apim.googleapis.com namespace: apim quota: limit: 1 interval: 1 timeUnit: minute restOperations: - name: PostItems path: "/post" methods: - POST
- Appliquez le nouveau fichier d'ensemble d'opérations d'API comme suit :
kubectl apply -f item-set-post.yaml
L'application des modifications à l'ensemble du cluster prendra environ trois minutes.
Dans cet exemple, la valeur restOperations
du nouvel ensemble d'opérations d'API item-set-post
est créée pour faire référence au chemin d'accès /post
, comme indiqué dans les parties mises en surbrillance du fichier.
Tester la nouvelle configuration de la passerelle
Pour tester la nouvelle configuration de la passerelle, envoyez la requête suivante au nouveau chemin d'accès /post
:
curl -k -X POST https://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME_2"
Où :
- GATEWAY_IP_ADDRESS correspond à l'adresse IP de la passerelle, obtenue à une étape précédente.
- HOST_NAME correspond au nom d'hôte défini dans la ressource
HTTPRoute
de la passerelle.
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": "f0N6sXXXclGXXXe0oP5XXXdA20PjgrP2x8xXXh7z4XXXKiYt", "X-Cloud-Trace-Context": "bb3a768787099bda628781188bfb318b/15554891713516675739" }, "origin": "34.54.193.72", "url": "https://34.54.193.72/post" }
Résoudre les problèmes
Si vous rencontrez des problèmes lors de la mise à jour et de l'extension des règles de gestion des API utilisées avec l'opérateur APIM, consultez Résoudre les problèmes liés à l'opérateur APIM pour trouver des solutions pour les erreurs courantes.
Étapes suivantes
- Découvrez comment désinstaller l'opérateur Apigee APIM pour Kubernetes.
- En savoir plus sur les options de déploiement des passerelles