Tâches d'intégration à Kubernetes

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Ajouter un plug-in personnalisé

Vous pouvez ajouter de nouvelles fonctionnalités à la micropasserelle en écrivant des plug-ins personnalisés. Les plug-ins personnalisés vous permettent d'interagir de manière automatisée avec les requêtes et les réponses qui transitent par la micropasserelle.

Cette section explique comment empaqueter et déployer des plug-ins sur 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, reportez-vous à la section Développer des plug-ins personnalisés.

Empaqueter vos plug-ins

Pour créer un package de plug-ins personnalisés, procédez comme suit:

  1. Écrivez et testez votre plug-in en suivant les instructions de l'article Écrire un plug-in simple.

  2. Placez le code de votre plug-in dans la structure de répertoires appropriée. Les répertoires de plug-ins doivent respecter une structure définie. L'exemple suivant montre la structure à suivre, où response-uppercase et request-headers sont les noms des dossiers contenant du code de plug-in personnalisé (ces noms ne sont que des exemples, vos noms de dossiers peuvent différer):

    plugin
      |
      |-- plugins
        |
        |- response-uppercase
        |     |- index.js
        |     |- package.json
        |- request-headers
        |     | - index.js
              | - package.json
    
  3. cd dans le dossier plugin.

  4. Dans le dossier plugin, compressez l'intégralité du dossier plugins:

    zip -r plugins.zip plugins/

Créer une image Docker

  1. Dans le répertoire où se trouve le fichier ZIP, créez un fichier nommé Dockerfile.
  2. 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"]
    
  3. 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.io ou gcr.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

  1. Ajoutez le ou les plug-ins à votre fichier de configuration Edge Microgateway. Le fichier de configuration se trouve 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 extraira la nouvelle image avec le code de plug-in que vous avez transféré vers Container Registry et l'utilisera 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:

  1. 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 : l'organisation Apigee que vous avez spécifiée dans la commande edgemicro configure.
    • your_environment : environnement que vous avez spécifié dans la commande edgemicro configure.
    • configuration_key : la clé renvoyée par la commande edgemicro configure.
    • configuration_secret : le secret renvoyé par la commande edgemicro configure.
    • config_file_path : chemin d'accès au fichier de configuration Edge Micro renvoyé par la commande edgemicro configure.
    • container-registry : registre Docker dans lequel vous avez transféré l'image. (par exemple, gcr.io ou docker.io).
    • your_project_name : nom du projet du 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)
  2. Testez le plug-in. Appelez l'API pour voir si vous obtenez le comportement attendu. Par exemple, pour le plug-in "response en majuscules", le texte de la réponse est converti en majuscules, comme indiqué 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, dans laquelle vous injectez la nouvelle configuration à partir de la ligne de commande.

  1. 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 : l'organisation Apigee que vous avez spécifiée dans la commande edgemicro configure.
    • your_env : environnement que vous avez spécifié dans la commande edgemicro configure.
    • your_key : la clé renvoyée par la commande edgemicro configure.
    • your_secret : le secret renvoyé par la commande edgemicro configure.
    • config_file_path : chemin d'accès au fichier de configuration Edge Micro renvoyé par la commande edgemicro configure.
    • container-registry : registre Docker dans lequel vous avez transféré l'image. (par exemple, gcr.io ou docker.io).
    • your_project_name : nom du projet du 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)
  2. Testez le plug-in. Appelez l'API du service pour voir si vous obtenez le comportement attendu. Par exemple, pour le plug-in "response majuscules", le texte de la réponse est converti en majuscules, comme indiqué ci-dessous:

    curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'

    Résultat :

    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. Cette section explique comment apporter et appliquer des modifications de configuration à Edge Microgateway s'exécutant dans Kubernetes.

  1. 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
    
  2. Spé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'
    
  3. Apportez vos modifications au fichier de configuration Edge Microgateway pour votre organisation et votre environnement:

    $HOME/.edgemicro/your_org-your_env-config.yaml
  4. Encodez en Base64 deux fois le contenu du fichier de configuration:

    cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64  | tr -d '\n'
  5. Appliquez les modifications à Kubernetes sur l'espace de noms sur lequel votre service s'exécute.

    kubectl apply -f secret.yaml -n 

Ces nouvelles modifications ne sont pas récupérées automatiquement par les pods de micropasserelles existants. Toutefois, les nouveaux pods recevront les modifications. Vous pouvez supprimer le pod existant afin que le déploiement crée un nouveau pod qui prenne en compte la modification.

Exemple de service

L'exemple suivant montre comment mettre à jour le déploiement d'un service avec une nouvelle

  1. 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
    
  2. Supprimez le pod edge-microgateway.

    kubectl delete pod edge-microgateway-57ccc7776b-g7nrg

    Exemple de résultat :

    pod "edge-microgateway-57ccc7776b-g7nrg" deleted
    
  3. Récupérez à nouveau les pods. Un nouveau pod démarre et récupère les modifications de votre 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
    

Scaling de votre déploiement

Cette section explique comment utiliser les principes de scaling de Kubernetes pour faire évoluer vos déploiements.

Effectuer le scaling d'un déploiement de service

  1. 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.

  2. Effectuez le scaling du déploiement de 1 instance répliquée à autant que vous le souhaitez. Dans cet exemple, le service edge-microgateway fait l'objet d'un scaling.

    kubectl scale deployment edge-microgateway --replicas=2
  3. (Facultatif) Si vous souhaitez utiliser l'autoscaling, exécutez la commande suivante:

    kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
  4. 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.

  5. 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 des services Edge Microgateway sur 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 Edge Microgateway A 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 l'arrêt des pics.

Pour répondre à ce cas d'utilisation, utilisez les espaces de noms Kubernetes. Par exemple, vous pouvez déployer le service Edge Microgateway A dans l'espace de noms foo et le service Edge Microgateway B dans l'espace de noms bar.

Dans l'exemple suivant, Edge Microgateway configuré dans l'organisation OrgA est déployé en tant que service sur 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 vers 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