Vous consultez la documentation Apigee Edge.
Accédez à la
documentation**Apigee X**. info
Ajouter un plug-in personnalisé
Vous pouvez ajouter de nouvelles fonctionnalités à la microgateway en écrivant des plug-ins personnalisés. Les plug-ins personnalisés vous permettent d'interagir par programmation avec les requêtes et les réponses qui transitent par la microgateway.
Cette section explique comment empaqueter et déployer des plug-ins dans une instance Edge Microgateway exécutée dans votre cluster Kubernetes.
Le reste de cette section suppose que vous savez écrire et configurer des plug-ins pour une configuration Edge Microgateway standard. Si ce n'est pas le cas, consultez Développer des plug-ins personnalisés.
Empaqueter vos plug-ins
Pour empaqueter des plug-ins personnalisés, procédez comme suit :
Écrivez et testez votre plug-in en suivant les instructions de la section Écrire un plug-in simple.
Placez le code de votre plug-in dans la structure de répertoire appropriée. Les répertoires de plug-ins doivent suivre une structure définie. L'exemple suivant montre la structure à suivre, où
response-uppercaseetrequest-headerssont les noms des dossiers contenant le code du plug-in personnalisé (ces noms ne sont que des exemples, les noms de vos dossiers peuvent être différents) :plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.jsoncddans le dossierplugin.Dans le dossier
plugin, compressez l'intégralité du dossierplugins:zip -r plugins.zip plugins/
Créer une image Docker
- Dans le même répertoire que le fichier ZIP, créez un fichier nommé
Dockerfile. Ajoutez le code suivant à
Dockerfileet enregistrez le fichier :FROM gcr.io/apigee-microgateway/edgemicro:latest RUN apt-get install unzip COPY plugins.zip /opt/apigee/ RUN chown apigee:apigee /opt/apigee/plugins.zip RUN su - apigee -c "unzip /opt/apigee/plugins.zip -d /opt/apigee" EXPOSE 8000 EXPOSE 8443 ENTRYPOINT ["entrypoint"]Créez une image Docker Edge Microgateway avec vos plug-ins et transférez-la vers votre registre Docker. Vous pouvez utiliser le registre de votre choix, tel que
docker.ioougcr.io:docker build -t edgemicroplugins .docker tag edgemicroplugins container-registry/your-project/edgemicropluginsdocker push container-registry/your-project/edgemicropluginsExemple :
docker build -t edgemicroplugins .docker tag edgemicroplugins gcr.io/my-project/edgemicropluginsdocker push gcr.io/my-project/edgemicroplugins
Mettre à jour la configuration Edge Microgateway
Ajoutez le ou les plug-ins à votre fichier de configuration Edge Microgateway. Vous trouverez le fichier de configuration ici :
$HOME/.edgemicro/org-env-config.yaml
Exemple :
$HOME/.edgemicro/myorg-test-config.yaml
Dans l'exemple de configuration suivant, le plug-in personnalisé response-uppercase a été ajouté.
Le plug-in oauth était déjà présent par défaut.
edgemicro:
...
plugins:
sequence:
- oauth
- response-uppercase
Mettre à jour votre cluster Kubernetes
La dernière étape consiste à appliquer la modification de configuration à votre cluster Kubernetes. Kubernetes extrait la nouvelle image avec le code de plug-in que vous avez transféré vers le registre de conteneurs et l'utilise pour tous les pods nouvellement créés.
Si vous avez déployé Edge Microgateway en tant que service
Utilisez la commande edgemicroctl pour injecter la configuration Edge Microgateway mise à jour :
Mettez à jour le déploiement Edge Microgateway avec la nouvelle image. Exemple :
kubectl apply -f <(edgemicroctl -org=your_organization -env=your_environment -key=configuration_key -sec=configuration_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest)
où :
your_organization: organisation Apigee que vous avez spécifiée dans la commandeedgemicro configure.your_environment: environnement que vous avez spécifié dans la commandeedgemicro configure.configuration_key: clé renvoyée par la commandeedgemicro configure.configuration_secret: secret renvoyé par la commandeedgemicro configure.config_file_path: chemin d'accès au fichier de configuration Edge Micro renvoyé par la commandeedgemicro configure.container-registry: registre Docker dans lequel vous avez transféré l'image. Par exemple,gcr.iooudocker.io.your_project_name: nom du projet pour le dépôt Docker dans lequel vous avez transféré l'image Docker.image_name: nom de l'image Docker que vous avez transférée.
Exemple :
kubectl apply -f <(edgemicroctl -org=jdoe -env=test -key=f2d2eaa52b758493d00cec656e574ac947bee1d701c5c5f3295e5eaa39a3b -sec=0c38cda3fac6c59152f15657052ba1728f8003c1a763cf08da2a -conf=/Users/jdoe/.edgemicro/apigeesearch-test-config.yaml -img=gcr.io/jdoe-project/edgemicroplugins:latest)
Testez le plug-in. Appelez l'API pour voir si vous obtenez le comportement attendu. Par exemple, pour le plug-in "response uppercase", le texte de la réponse est converti en majuscules, comme illustré ci-dessous :
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
Résultat :
HELLO WORLD
Injecter manuellement la nouvelle configuration
L'injection manuelle est une approche simple qui consiste à injecter la nouvelle configuration à partir de la ligne de commande.
Exécutez la commande suivante :
kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest -svc=service_deployment_file)
où :
your_org: organisation Apigee que vous avez spécifiée dans la commandeedgemicro configure.your_env: environnement que vous avez spécifié dans la commandeedgemicro configure.your_key: clé renvoyée par la commandeedgemicro configure.your_secret: secret renvoyé par la commandeedgemicro configure.config_file_path: chemin d'accès au fichier de configuration Edge Micro renvoyé par la commandeedgemicro configure.container-registry: registre Docker dans lequel vous avez transféré l'image. Par exemple,gcr.iooudocker.io.your_project_name: nom du projet pour le dépôt Docker dans lequel vous avez transféré l'image Docker.image_name: nom de l'image Docker que vous avez transférée.service_deployment_file: chemin d'accès au fichier de déploiement du service auquel le ou les plug-ins s'appliqueront. Exemple :samples/helloworld/helloworld.yaml.
Exemple :
kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -img=gcr.io/myproject/edgemicroplugins:latest -svc=samples/helloworld/helloworld.yaml)
Testez le plug-in. Appelez l'API de service pour voir si vous obtenez le comportement attendu. Par exemple, pour le plug-in "response uppercase", le texte de la réponse est converti en majuscules, comme illustré ci-dessous :
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
Résultat :
HELLO WORLD
Apporter des modifications à la configuration Edge Microgateway
Dans certains cas, vous devrez peut-être modifier votre configuration Edge Microgateway. Par exemple, vous pouvez ajouter un plug-in à Edge Microgateway ou modifier un paramètre de configuration. Cette section explique comment apporter et appliquer des modifications de configuration à Edge Microgateway exécuté dans Kubernetes.
Créez un fichier de configuration
secret.yamlcomme indiqué ci-dessous :apiVersion: v1 kind: Secret metadata: name: mgwsecret type: Opaque data: mgorg: EDGEMICRO_ORG mgenv: EDGEMICRO_ENV mgkey: EDGEMICRO_KEY mgsecret: EDGEMICRO_SECRET mgconfig: EDGEMICRO_CONFIGSpécifiez la valeur encodée en base64 de
EDGEMICRO_ORG,EDGEMICRO_ENV,EDGEMICRO_KEY,EDGEMICRO_SECRET:echo -n "your-org" | base64 | tr -d '\n'echo -n "your-org-env" | base64 | tr -d '\n'echo -n "your-mg-key" | base64 | tr -d '\n'echo -n "your-mg-secret" | base64 | tr -d '\n'Apportez vos modifications au fichier de configuration Edge Microgateway pour votre organisation et votre environnement :
$HOME/.edgemicro/your_org-your_env-config.yaml
Encodez deux fois en base64 le contenu du fichier de configuration :
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
Appliquez les modifications à Kubernetes dans l'espace de noms où votre service est exécuté.
kubectl apply -f secret.yaml -n
Ces nouvelles modifications ne sont pas récupérées automatiquement par les pods de microgateway existants. Toutefois, les nouveaux pods les recevront. Vous pouvez supprimer le pod existant afin que le déploiement crée un pod qui récupère la modification.
Exemple de service
L'exemple suivant illustre comment mettre à jour un déploiement de service avec un nouveau
Obtenez les pods.
kubectl get pods
Exemple de résultat :
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-g7nrg 1/1 Running 0 19h helloworld-6987878fc4-cltc2 1/1 Running 0 1dSupprimez le pod
edge-microgateway.kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
Exemple de résultat :
pod "edge-microgateway-57ccc7776b-g7nrg" deletedObtenez à nouveau les pods. Un nouveau pod est lancé et reçoit vos modifications de configuration.
kubectl get pods
Exemple de résultat :
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-7f6tc 1/1 Running 0 5s helloworld-6987878fc4-cltc2 1/1 Running 0 1d
Faire évoluer votre déploiement
Cette section explique comment utiliser les principes de scaling Kubernetes pour faire évoluer vos déploiements.
Faire évoluer un déploiement de service
Vérifiez les déploiements :
kubectl get deployments
Exemple de résultat :
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 1 1 1 1 18h helloworld 1 1 1 1 1dLe résultat indique qu'un seul réplica est déployé.
Faites évoluer le déploiement de 1 à autant de réplicas que vous le souhaitez. Dans cet exemple, le service
edge-microgatewayest mis à l'échelle.kubectl scale deployment edge-microgateway --replicas=2
(Facultatif) Si vous souhaitez utiliser l'autoscaling, utilisez cette commande :
kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
Vérifiez les déploiements pour vous assurer que le scaling est activé :
kubectl get deployments
Exemple de résultat :
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 2 2 2 2 18h helloworld 1 1 1 1 1dL'état a été modifié pour inclure deux réplicas.
Vérifiez les pods :
kubectl get pods
Exemple de résultat :
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-g7nrg 1/1 Running 0 18h edge-microgateway-57ccc7776b-rvfz4 1/1 Running 0 41s helloworld-6987878fc4-cltc2 1/1 Running 0 1dLe résultat indique que les deux réplicas sont en cours d'exécution.
Utiliser des espaces de noms pour plusieurs configurations Edge Microgateway
Vous pouvez déployer et configurer plusieurs instances de services Edge Microgateway dans votre cluster Kubernetes. Ce cas d'utilisation vous permet de configurer chaque instance de microgateway avec son propre ensemble de plug-ins et de paramètres. Exemple :
- Le service A Edge Microgateway ne nécessite que le plug-in de protection contre les pics de trafic.
- Le service B Edge Microgateway nécessite le plug-in de quota et le plug-in OAuth, mais pas le plug-in de protection contre les pics de trafic.
Pour résoudre ce cas d'utilisation, utilisez les espaces de noms Kubernetes. Par exemple, vous pouvez déployer le service A Edge Microgateway dans l'espace de noms foo et le service B Edge Microgateway dans l'espace de noms bar.
Dans l'exemple suivant, Edge Microgateway configuré dans l'organisation OrgA est déployé en tant que service dans l'espace de noms foo à l'aide de l'option -n :
kubectl apply -f <(edgemicroctl -org=myorgA -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgA-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n foo
De même, dans l'exemple suivant, Edge Microgateway configuré dans l'organisation OrgB est déployé en tant que service dans l'espace de noms bar à l'aide de l'option -n :
kubectl apply -f <(edgemicroctl -org=myorgB -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgB-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n bar