Cette page s'applique à Apigee et à Apigee hybrid.
Consultez la documentation d'
Apigee Edge.
Cette page explique comment appliquer des règles Apigee au trafic transitant par une passerelle Kubernetes en créant une ressource personnalisée APIMExtensionPolicy. L'opérateur Apigee pour Kubernetes surveille les ressources APIMExtensionPolicy et configure la passerelle en conséquence.
Apigee
Suivez ces étapes si vous utilisez Apigee.
Avant de commencer
Avant de commencer cette tâche, effectuez les étapes suivantes :
- Vérifiez que Workload Identity est configuré sur votre cluster GKE. Pour connaître les étapes requises, consultez Configurer la fédération d'identité de charge de travail pour GKE.
- Vérifiez qu'une passerelle GKE est configurée et fonctionne sur votre cluster. Pour en savoir plus, consultez Déployer des passerelles.
- Installez l'opérateur Apigee pour Kubernetes. Pour obtenir des instructions d'installation, consultez Installer l'opérateur Apigee pour Kubernetes.
Créer le APIMExtensionPolicy
Dans cette étape, créez le fichier APIMExtensionPolicy et appliquez-le à la passerelle GKE exécutée dans votre cluster. Cette règle régit tout le trafic transitant par la passerelle et son HTTPRoutes associé, fonctionnant de la même manière qu'un flowhook au niveau de l'environnement dans Apigee aujourd'hui.
Pour créer le APIMExtensionPolicy :
- Créez un fichier nommé
global-ext-lb1-apim-policy.yamlavec le contenu suivant :# global-ext-lb1-apim-policy.yaml apiVersion: apim.googleapis.com/v1 kind: APIMExtensionPolicy metadata: name: global-ext-lb1-apim-policy namespace: apim spec: apigeeEnv: ENV_NAME # optional location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true targetRef: # identifies the Gateway where the extension should be applied name: global-ext-lb1 kind: Gateway namespace: default - Remplacez
ENV_NAMEpar le nom de l'environnement Apigee créé à l'étape d'installation Créer un environnement Apigee.Remarque : Si vous installez l'opérateur Apigee pour Kubernetes à l'aide de l'indicateur
generateEnv=TRUE, le champapigeeEnvn'est pas obligatoire.Vous pouvez afficher tous les environnements disponibles sur la page Environnements de la console Google Cloud .
- Appliquez la règle :
kubectl -n apim apply -f global-ext-lb1-apim-policy.yamlUne fois la règle appliquée, l'opérateur Apigee pour Kubernetes crée des ressources réseau en arrière-plan.
- Vérifiez l'état de
APIMExtensionPolicyà l'aide de la commande suivante :kubectl -n apim get APIMExtensionPolicyLe résultat doit ressembler à ce qui suit, avec un
STATEdeRUNNING:NAME STATE ERRORMESSAGE global-ext-lb1-apim-policy RUNNING
Tester la stratégie
Utilisez la commande suivante pour envoyer une requête à la passerelle :
- Obtenez l'adresse IP de la passerelle :
export GATEWAY_IP=$(kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -n default -o=jsonpath='{.status.addresses[0].value}')echo $GATEWAY_IPRemplacez
GATEWAY_NAMEpar le nom de la passerelle, par exempleglobal-ext-lb1. - Envoyez une requête à un point de terminaison configuré dans votre
HTTPRoute:curl http://$GATEWAY_IP/get -H "Host: HOST_NAME"Remplacez
HOST_NAMEpar le nom d'hôte défini dans la ressourceHTTPRoutede la passerelle, par exempleexample.httpbin.com. - La requête doit échouer, car
defaultSecurityEnabled: truea été défini dans la ressourceAPIMExtensionPolicy, ce qui permet la vérification des clés API et des jetons d'accès. Un résultat semblable à celui-ci doit s'afficher :{"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 vérification des jetons d'accès sont actives.
Étapes suivantes
- Découvrez comment ajouter des stratégies à la passerelle GKE.
- Découvrez comment désinstaller l'opérateur Apigee pour Kubernetes.
Apigee hybrid
Suivez ces étapes si vous utilisez Apigee hybrid.
Avant de commencer
Cette procédure suppose que vous avez installé l'opérateur Apigee pour Kubernetes en suivant les étapes décrites dans Installer l'opérateur Apigee pour Kubernetes pour Apigee hybrid.
Créer un secret de certificat TLS
APIMExtensionPolicy nécessite le certificat public encodé en base64 associé au nom d'hôte du groupe d'environnements. Vous avez créé ce certificat dans Installer l'environnement Apigee hybrid à l'aide de Helm.
Fournissez ce certificat à l'opérateur en créant un secret Kubernetes dans l'espace de noms apim.
- Obtenez la chaîne de certificat encodée en base64 à partir du fichier que vous avez créé lors de l'installation :
cat $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_ENV_GROUP.pem.base64 - Créez un fichier nommé
secret-cert.yamlavec le contenu suivant :# secret-cert.yaml apiVersion: v1 kind: Secret metadata: name: apigee-conf namespace: apim data: ca.crt: BASE64_ENCODED_CERT_STRING - Remplacez
BASE64_ENCODED_CERT_STRINGpar le résultat de la commandecatà l'étape 1. - Appliquez le secret à votre cluster :
kubectl apply -f secret-cert.yaml
Définir et appliquer le APIMExtensionPolicy
Définissez une ressource APIMExtensionPolicy et appliquez-la à la passerelle Istio exécutée dans votre cluster. Cette extension de règle intercepte le trafic géré par la passerelle et son HTTPRoutes associé, et applique les règles Apigee avant de transférer les requêtes à la cible de backend.
- Créez un fichier nommé
istio-gateway-apim-policy.yamlavec le contenu suivant :# istio-gateway-apim-policy.yaml apiVersion: apim.googleapis.com/v1 kind: APIMExtensionPolicy metadata: name: istio-gateway-apim-policy namespace: apim spec: apigeeEnv: ENV_NAME ingressCertSecret: apigee-conf apigeeAuthority: HOST_NAME apigeeIngressIP: INGRESS_IP_ADDRESS location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true targetRef: # identifies the Gateway where the extension should be applied group: gateway.networking.k8s.io kind: Gateway name: istio-gateway namespace: default - Remplacez les variables suivantes :
ENV_NAME: nom de l'environnement Apigee hybrid que vous avez créé avec les extensions de service activées (par exemple,my-hybrid-env).HOST_NAME: nom de domaine utilisé pour le groupe "Environnement", par exemplemy-proxies.example.com.INGRESS_IP_ADDRESS: adresse IP d'entrée pour l'entrée du runtime Apigee Hybrid. Pour savoir comment récupérer cette adresse IP, consultez Exposer l'entrée Apigee.
- Appliquez la règle à votre cluster :
kubectl -n apim apply -f istio-gateway-apim-policy.yaml - Une fois la ressource appliquée, l'opérateur Apigee pour Kubernetes commence à configurer les ressources réseau de la passerelle. Vérifiez l'état du
APIMExtensionPolicy.kubectl -n apim get APIMExtensionPolicy - Attendez que
STATEindiqueRUNNING. Le résultat doit ressembler à ce qui suit :NAME STATE ERRORMESSAGE istio-gateway-apim-policy RUNNING
Tester la stratégie
Dans le APIMExtensionPolicy créé à l'étape précédente, defaultSecurityEnabled a été défini sur true. Cela active automatiquement les règles de vérification des clés API et des jetons OAuth2 pour le trafic correspondant à cette passerelle.
Pour tester cela, envoyez une requête non authentifiée au service httpbin exemple que vous avez configuré lors de la vérification de la configuration d'Istio Gateway dans Vérifier la configuration d'Istio Gateway.
- Obtenez l'adresse IP de la passerelle :
export GATEWAY_IP=$(kubectl get gateways.gateway.networking.k8s.io istio-gateway -n default -o=jsonpath='{.status.addresses[0].value}')echo $GATEWAY_IP - Envoyez une requête au point de terminaison
/getconfiguré dans votre HTTPRoute :curl http://$GATEWAY_IP/get -H "Host: example.httpbin.com" -v - Étant donné que
defaultSecurityEnabled: truenécessite une authentification (par exemple, une clé API valide), Apigee doit rejeter la requête avec une erreur d'authentification. La sortie devrait ressembler à ce qui suit :{"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}Ce résultat confirme que
APIMExtensionPolicyest actif et que les règles Apigee sont appliquées par la passerelle Istio.
Étapes suivantes
Découvrez comment créer des produits d'API, des développeurs et des applications pour obtenir des clés API pour les requêtes authentifiées :