Estás viendo la documentación de Apigee Edge.
  Ve a la
     Documentación de Apigee X. información
Agrega un complemento personalizado
Puedes agregar nuevas funciones y capacidades a microgateway escribiendo personalizado complementos. Los complementos personalizados te permiten interactuar de manera programática con las solicitudes. y las respuestas que fluyen por la micropuerta de enlace.
En esta sección, se explica cómo empaquetar e implementar complementos en una Edge Microgateway que se ejecuta en tu clúster de Kubernetes.
En el resto de esta sección, se supone que que sepas cómo escribir y configurar para una configuración estándar de Edge Microgateway. Si no es así, consulta Cómo desarrollar complementos personalizados.
Cómo empaquetar los complementos
Para empaquetar complementos personalizados, sigue estos pasos:
- Escribe y prueba el complemento según las instrucciones de Cómo escribir un complemento simple. 
- Coloca el código del complemento en la estructura de directorio adecuada. Los directorios de complementos deben seguir una estructura establecida. En el siguiente ejemplo, se muestra el la estructura que debes seguir, en la que - response-uppercasey- request-headersson los los nombres de las carpetas que contienen código de complemento personalizado (estos nombres son solo ejemplos; los nombres de tus carpetas pueden variar):- plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
- cda la carpeta- plugin.
- En la carpeta - plugin, comprime toda la carpeta- plugins:- zip -r plugins.zip plugins/ 
Crear una imagen de Docker
- En el mismo directorio en el que se encuentra el archivo ZIP, crea un archivo nuevo llamado Dockerfile.
- Agrega el siguiente código a - Dockerfiley guarda el archivo:- 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"]
- Crea una nueva imagen de Docker de Edge Microgateway con tus complementos y envíala la imagen a tu registro de Docker. Puedes usar el registro que desees, como como - docker.ioo- gcr.io:- docker build -t edgemicroplugins .- docker tag edgemicroplugins container-registry/your-project/edgemicroplugins- docker push container-registry/your-project/edgemicroplugins- Por ejemplo: - docker build -t edgemicroplugins .- docker tag edgemicroplugins gcr.io/my-project/edgemicroplugins- docker push gcr.io/my-project/edgemicroplugins
Actualiza la configuración de Edge Microgateway
- Agrega los complementos al archivo de configuración de Edge Microgateway. Puedes encontrar el de configuración de Terraform aquí: - $HOME/.edgemicro/org-env-config.yaml - Por ejemplo: - $HOME/.edgemicro/myorg-test-config.yaml 
En la siguiente configuración de ejemplo, se agregó el complemento personalizado response-uppercase.
 El complemento oauth ya estaba ahí de forma predeterminada.
  edgemicro:
    ...
    plugins:
      sequence:
        - oauth
        - response-uppercase
Actualiza tu clúster de Kubernetes
El último paso es aplicar el cambio de configuración a tu clúster de Kubernetes. Kubernetes extraerá la nueva imagen con el código del complemento que envió a Container Registry y la usará para cualquier archivo Pods creados.
Si implementaste Edge Microgateway como servicio
Usa el comando edgemicroctl para incorporar la configuración actualizada de Edge Microgateway:
- Actualiza la implementación de Edge Microgateway con la imagen nueva. Por ejemplo: - 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) - Donde: - your_organization: Es la organización de Apigee que especificaste en el comando- edgemicro configure.
- your_environment: Es el entorno que especificaste en el comando- edgemicro configure.
- configuration_key: Es la clave que muestra el comando- edgemicro configure.
- configuration_secret: el secreto que muestra el comando- edgemicro configure.
- config_file_path: Es la ruta de acceso al archivo de configuración de Edge Micro que muestra el comando- edgemicro configure.
- container-registry: Es el registro de Docker en el que enviaste la imagen. Por ejemplo,- gcr.ioo- docker.io.
- your_project_name: Es el nombre del proyecto para el repositorio de Docker al que enviaste la imagen de Docker.
- image_name: Es el nombre de la imagen de Docker que enviaste.
 - Ejemplo: - 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) 
- Prueba el complemento. Llama a la API para ver si obtienes el comportamiento esperado. Para ejemplo, para "respuesta en mayúsculas" complemento, el texto de respuesta se convierte en todos mayúsculas, como se muestra a continuación: - curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR' - Resultado: - HELLO WORLD
Incorpora la nueva configuración de forma manual
La inyección manual es un enfoque sencillo, en el que se inserta la nueva configuración desde la línea de comandos.
- Ejecuta el siguiente comando: - 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) - Donde: - your_org: Es la organización de Apigee que especificaste en el comando- edgemicro configure.
- your_env: Es el entorno que especificaste en el comando- edgemicro configure.
- your_key: Es la clave que muestra el comando- edgemicro configure.
- your_secret: el secreto que muestra el comando- edgemicro configure.
- config_file_path: Es la ruta de acceso al archivo de configuración de Edge Micro que muestra el comando- edgemicro configure.
- container-registry: Es el registro de Docker en el que enviaste la imagen. Por ejemplo,- gcr.ioo- docker.io.
- your_project_name: Es el nombre del proyecto para el repositorio de Docker al que enviaste la imagen de Docker.
- image_name: Es el nombre de la imagen de Docker que enviaste.
- service_deployment_file: la ruta de acceso al archivo de implementación del servicio para la que se aplicarán los complementos. Por ejemplo:- samples/helloworld/helloworld.yaml.
 - Por ejemplo: - 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) 
- Prueba el complemento. Llama a la API de servicio para ver si obtienes el comportamiento esperado. Por ejemplo, para "respuesta en mayúsculas" complemento, el texto de respuesta se convierte a mayúsculas, como se muestra a continuación: - curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR' - Resultado: - HELLO WORLD
Realiza cambios en la configuración de Edge Microgateway
En algunos casos, es posible que debas modificar la configuración de Edge Microgateway. Por ejemplo, es posible que desees agregar un complemento nuevo a Edge Microgateway o cambiar un parámetro de configuración. Esta en la que se explica cómo realizar y aplicar cambios de configuración en Edge Microgateway que se ejecutan en Kubernetes.
- Crea un archivo de configuración - secret.yamlcomo se muestra a continuación:- 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
- Especifica el valor codificado 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'
- Realiza los cambios en el archivo de configuración de Edge Microgateway para tu organización y entorno: - $HOME/.edgemicro/your_org-your_env-config.yaml 
- Codifica el doble en Base64 Contenido del archivo de configuración: - cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n' 
- Aplica cambios a Kubernetes en el espacio de nombres en el que se ejecuta tu servicio. - kubectl apply -f secret.yaml -n 
Los Pods de microgateway existentes no recogen estos cambios nuevos de forma automática. Sin embargo, los nuevos Pods recibirán los cambios. Puedes borrar el Pod existente para que Deployment crea un Pod nuevo que detecta el cambio.
Ejemplo de servicio
En el siguiente ejemplo, se muestra cómo actualizar una implementación de servicio con una nueva
- Obtén los Pods. - kubectl get pods - Resultado de ejemplo: - NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-g7nrg 1/1 Running 0 19h helloworld-6987878fc4-cltc2 1/1 Running 0 1d
- Borra el Pod - edge-microgateway.- kubectl delete pod edge-microgateway-57ccc7776b-g7nrg - Resultado de ejemplo: - pod "edge-microgateway-57ccc7776b-g7nrg" deleted
- Obtén los Pods nuevamente. Se inicia un nuevo Pod y obtiene los cambios de configuración. - kubectl get pods - Resultado de ejemplo: - NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-7f6tc 1/1 Running 0 5s helloworld-6987878fc4-cltc2 1/1 Running 0 1d
Escala tu implementación
En esta sección, se explica cómo puedes usar los principios de escalamiento de Kubernetes para y escalar las implementaciones.
Escala una implementación de servicio
- Verifica las implementaciones: - kubectl get deployments - Resultado de ejemplo: - NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 1 1 1 1 18h helloworld 1 1 1 1 1d- El resultado indica que se implementó una réplica. 
- Escala la implementación de 1 a tantas réplicas como desees. En este ejemplo, se escala el servicio - edge-microgateway.- kubectl scale deployment edge-microgateway --replicas=2 
- Si deseas usar el ajuste de escala automático, usa este comando (opcional): - kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10 
- Verifica las implementaciones para verificar que el escalamiento esté habilitado: - kubectl get deployments - Resultado de ejemplo: - NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 2 2 2 2 18h helloworld 1 1 1 1 1d- El estado se ha cambiado para incluir dos réplicas. 
- Verifica los Pods: - kubectl get pods - Resultado de ejemplo: - 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- El resultado muestra que ambas réplicas se encuentran en estado de ejecución. 
Usa espacios de nombres para varios parámetros de configuración de Edge Microgateway
Puedes implementar y configurar varias instancias de servicios de Edge Microgateway en tu clúster de Kubernetes. Este caso de uso te permite configurar cada instancia de micropuerta de enlace con su propio conjunto de complementos y parámetros. Por ejemplo:
- El servicio A de Edge Microgateway solo requiere el complemento de protección contra aumentos de tráfico.
- El servicio B de Edge Microgateway requiere el complemento de cuota y de OAuth, pero no la protección contra aumentos de tráfico.
Para abordar este caso de uso, usa los espacios de nombres de Kubernetes. Por ejemplo, puedes implementar
Servicio de Edge Microgateway A al espacio de nombres foo y el servicio B de Edge Microgateway al
espacio de nombres bar.
En el siguiente ejemplo, Edge Microgateway configurada en la organización OrgA se implementa como un servicio al espacio de nombres
foo con la opción -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 manera similar, en el siguiente ejemplo, Edge Microgateway se configuró en la organización OrgB
se implementa como un servicio en el espacio de nombres bar con la opción -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