Estás viendo la documentación de Apigee Edge.
Ve a la
documentación de Apigee X. info
Agrega un complemento personalizado
Para agregar funciones y capacidades nuevas a la micropuerta de enlace, escribe complementos personalizados. Los complementos personalizados te permiten interactuar de forma programática con las solicitudes y respuestas que fluyen a través de la micropuerta de enlace.
En esta sección, se explica cómo empaquetar e implementar complementos en una instancia de Edge Microgateway que se ejecuta en tu clúster de Kubernetes.
En el resto de esta sección, se da por sentado que conoces la escritura y configuración de complementos para una configuración estándar de Edge Microgateway. Si no es así, consulta Cómo desarrollar complementos personalizados.
Empaqueta tus 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 la estructura que debes seguir, en la que
response-uppercase
yrequest-headers
son los nombres de las carpetas que contienen código de complementos personalizados (estos nombres son solo ejemplos, los nombres de tus carpetas pueden diferir):plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
cd
a la carpetaplugin
.En la carpeta
plugin
, comprime toda la carpetaplugins
:zip -r plugins.zip plugins/
Crear una imagen de Docker
- En el mismo directorio donde se encuentra el archivo ZIP, crea un archivo nuevo llamado
Dockerfile
. Agrega el siguiente código a
Dockerfile
y 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 a tu registro de Docker. Puedes usar el registro que desees, como
docker.io
ogcr.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 archivo de configuración 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 allí 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 imagen nueva con el código del complemento que enviaste al registro de contenedores y la usará para los pods creados recientemente.
Si implementaste Edge Microgateway como servicio
Usa el comando edgemicroctl
para insertar la configuración actualizada de la micropuerta de enlace de Edge:
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 comandoedgemicro configure
.your_environment
: Es el entorno que especificaste en el comandoedgemicro configure
.configuration_key
: Es la clave que muestra el comandoedgemicro configure
.configuration_secret
: Es el secreto que muestra el comandoedgemicro configure
.config_file_path
: Es la ruta de acceso al archivo de configuración de Edge Micro que se muestra desde el comandoedgemicro configure
.container-registry
: Es el registro de Docker al que enviaste la imagen. Por ejemplo,gcr.io
odocker.io
.your_project_name
: Es el nombre del proyecto del 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. Por ejemplo, en el complemento "respuesta en mayúsculas", el texto de la respuesta se convierte a mayúsculas, como se muestra a continuación:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
Resultado:
HELLO WORLD
Cómo insertar manualmente la configuración nueva
La inserción manual es un enfoque sencillo en el que insertas 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 comandoedgemicro configure
.your_env
: Es el entorno que especificaste en el comandoedgemicro configure
.your_key
: Es la clave que muestra el comandoedgemicro configure
.your_secret
: Es el secreto que muestra el comandoedgemicro configure
.config_file_path
: Es la ruta de acceso al archivo de configuración de Edge Micro que se muestra desde el comandoedgemicro configure
.container-registry
: Es el registro de Docker al que enviaste la imagen. Por ejemplo,gcr.io
odocker.io
.your_project_name
: Es el nombre del proyecto del 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
: Es la ruta de acceso al archivo de implementación del servicio para el 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, en el caso del complemento "mayúsculas en la respuesta", el texto de la respuesta se convierte en 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 la micropuerta de enlace de Edge. Por ejemplo, es posible que desees agregar un complemento nuevo a la Microgateway de Edge o cambiar un parámetro de configuración. En esta sección, se explica cómo realizar y aplicar cambios de configuración en la Microgateway de Edge que se ejecuta en Kubernetes.
Crea un archivo de configuración
secret.yaml
como 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 la micropuerta de enlace de Edge para tu organización y entorno:
$HOME/.edgemicro/your_org-your_env-config.yaml
Codifica en Base64 el contenido del archivo de configuración dos veces:
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
Aplica los cambios a Kubernetes en el espacio de nombres en el que se ejecuta tu servicio.
kubectl apply -f secret.yaml -n
Los pods de micropuerta de enlace existentes no detectan automáticamente estos cambios nuevos. Sin embargo, los pods nuevos sí los recibirán. Puedes borrar el pod existente para que la implementación cree uno nuevo que detecte el cambio.
Ejemplo de servicio
En el siguiente ejemplo, se muestra cómo actualizar una implementación de servicio con un
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
Vuelve a obtener los pods. Se inicia un nuevo pod y se obtienen 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
Cómo escalar tu implementación
En esta sección, se explica cómo puedes usar los principios de escalamiento de Kubernetes para escalar tus implementaciones.
Escalamiento de 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.
Ajusta 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 comprobar 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
Se cambió el estado 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 están en estado de ejecución.
Usa espacios de nombres para varias configuraciones 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 detención de picos.
- El servicio B de Edge Microgateway requiere el complemento de cuota y OAuth, pero no la detención de picos.
Para abordar este caso de uso, usa los espacios de nombres de Kubernetes. Por ejemplo, puedes implementar el servicio A de Edge Microgateway en el espacio de nombres foo
y el servicio B de Edge Microgateway en el espacio de nombres bar
.
En el siguiente ejemplo, Edge Microgateway configurado en la organización OrgA
se implementa como servicio en el 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 configurado 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