<ph type="x-smartling-placeholder"></ph>
Vous consultez la documentation Apigee Edge.
Accédez à la page
Documentation sur Apigee X. En savoir plus
Ajouter un plug-in personnalisé
Vous pouvez ajouter de nouvelles fonctionnalités à la micropasserelle en écrivant des valeurs personnalisées plug-ins. Les plug-ins personnalisés vous permettent d'interagir avec les requêtes de manière programmatique et les réponses qui transitent par la micropasserelle.
Cette section explique comment empaqueter et déployer des plug-ins sur une passerelle Edge Microgateway une instance s'exécutant dans votre cluster Kubernetes.
Le reste de cette section suppose que vous savez écrire et configurer plug-ins pour une configuration Edge Microgateway standard. Si ce n'est pas le cas, consultez la section Développer des plug-ins personnalisés.
Empaqueter vos plug-ins
Pour empaqueter un ou plusieurs 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 des plug-ins doivent respecter une structure définie. L'exemple suivant montre que vous devez suivre, où
response-uppercase
etrequest-headers
sont les noms des dossiers contenant du code de plug-in personnalisé (ces noms ne sont fournis qu'à titre d'exemple, les noms des dossiers peuvent être différents):plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
cd
dans le dossierplugin
.Dans le dossier
plugin
, compressez l'intégralité du dossierplugins
:zip -r plugins.zip plugins/
Créer une image Docker
- Dans le répertoire contenant le fichier ZIP, créez un fichier nommé
Dockerfile
. Ajoutez le code suivant à
Dockerfile
et 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éer une image Docker Edge Microgateway avec vos plug-ins et transférer l'image dans votre registre Docker. Vous pouvez utiliser le registre de votre choix, en tant que
docker.io
ougcr.io
:docker build -t edgemicroplugins .
docker tag edgemicroplugins container-registry/your-project/edgemicroplugins
docker push container-registry/your-project/edgemicroplugins
Exemple :
docker build -t edgemicroplugins .
docker tag edgemicroplugins gcr.io/my-project/edgemicroplugins
docker 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 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 les modifications de configuration à votre cluster Kubernetes. Kubernetes va extraire la nouvelle image avec le code de plug-in que vous avez transféré vers Container Registry et l'utiliser pour toute nouvelle les pods 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.io
oudocker.io
).your_project_name
: nom du projet du dépôt Docker dans lequel vous avez transféré l'image Docker.image_name
: indiquez le 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. Pour exemple, pour "réponse en majuscules" le texte de la réponse est converti en majuscules, comme indiqué ci-dessous:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
Sortie :
HELLO WORLD
Injecter manuellement la nouvelle configuration
L'injection manuelle est une approche simple : vous injectez la nouvelle configuration depuis 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.io
oudocker.io
).your_project_name
: nom du projet du dépôt Docker dans lequel vous avez transféré l'image Docker.image_name
: indiquez le 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 pour 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 pour voir si vous obtenez le comportement attendu. Par exemple, pour "réponse en majuscules", le plug-in, le texte de la réponse est converti entièrement en majuscules, comme indiqué ci-dessous:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
Sortie :
HELLO WORLD
Apporter des modifications à la configuration d'Edge Microgateway
Dans certains cas, vous devrez peut-être modifier votre configuration Edge Microgateway. Par exemple : vous pouvez ajouter un nouveau plug-in à Edge Microgateway ou modifier un paramètre de configuration. Ce explique comment effectuer des modifications de configuration et les appliquer à Edge Microgateway exécutées dans Kubernetes.
Créez un fichier de configuration
secret.yaml
comme 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_CONFIG
Spécifiez la valeur encodée en base64 des éléments
EDGEMICRO_ORG
,EDGEMICRO_ENV
,EDGEMICRO_KEY
etEDGEMICRO_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 environnement:
$HOME/.edgemicro/your_org-your_env-config.yaml
Encodez Base64 deux fois plus contenu du fichier de configuration:
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
Appliquez les modifications à Kubernetes sur l'espace de noms dans lequel votre service est exécuté.
kubectl apply -f secret.yaml -n
Ces nouvelles modifications ne sont pas automatiquement collectées par les pods de micropasserelle existants. Toutefois, les nouveaux pods reçoivent les modifications. Vous pouvez supprimer le pod existant le déploiement crée un nouveau pod qui récupère la modification.
Exemple de service
L'exemple suivant montre comment mettre à jour le déploiement d'un service avec une nouvelle
Récupérez 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 1d
Supprimez le pod
edge-microgateway
.kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
Exemple de résultat :
pod "edge-microgateway-57ccc7776b-g7nrg" deleted
Récupérez à nouveau les pods. Un nouveau pod est lancé et obtient 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
Effectuer le scaling du déploiement
Cette section explique comment utiliser les principes de scaling de Kubernetes pour le scaling de vos déploiements.
Effectuer le scaling d'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 1d
Le résultat indique qu'une instance répliquée est déployée.
Faites passer le déploiement d'une instance répliquée à autant d'instances répliquées que vous le souhaitez. Dans cet exemple, le service
edge-microgateway
fait l'objet d'un scaling.kubectl scale deployment edge-microgateway --replicas=2
(Facultatif) Si vous souhaitez utiliser l'autoscaling, utilisez la commande suivante:
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 1d
L'état a été modifié pour inclure deux instances répliquées.
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 1d
Le résultat montre que les deux instances répliquées 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 vers votre cluster Kubernetes. Ce cas d'utilisation vous permet de configurer chaque instance de micropasserelle avec son propre ensemble de plug-ins et de paramètres. Exemple :
- Le service A Edge Microgateway ne nécessite que le plug-in d'arrêt des pics.
- Le service Edge Microgateway B nécessite le quota et le plug-in OAuth, mais pas la fonctionnalité d'arrêt des pics.
Pour traiter ce cas d'utilisation, utilisez des espaces de noms Kubernetes. Par exemple, vous pouvez déployer
Le service Edge Microgateway A vers l'espace de noms foo
et le service Edge Microgateway B vers
l'espace de noms bar
.
Dans l'exemple suivant, Edge Microgateway configuré dans l'organisation OrgA
est déployé en tant que service vers un espace de noms
foo
avec 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 a été 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