Esta é a documentação do Apigee Edge.
Acesse
Documentação da Apigee X. informações
Como adicionar um plug-in personalizado
É possível adicionar novos recursos ao microgateway escrevendo recursos personalizados plug-ins. Os plug-ins personalizados permitem que você interaja de maneira programática com as solicitações e as respostas que fluem pelo microgateway.
Nesta seção, explicamos como empacotar e implantar plug-ins em um Edge Microgateway instância em execução no cluster do Kubernetes.
O restante desta seção pressupõe que você já sabe programar e configurar plug-ins para uma configuração padrão do Edge Microgateway. Caso contrário, consulte Desenvolver plug-ins personalizados.
Empacotar seus plug-ins
Para empacotar plug-ins personalizados, siga estas etapas:
Crie e teste seu plug-in, de acordo com as instruções em Criar um plug-in simples.
Coloque o código do plug-in na estrutura de diretórios adequada. Os diretórios de plug-ins precisam seguir uma estrutura definida. O exemplo a seguir mostra estrutura que você precisa seguir, em que
response-uppercase
erequest-headers
são os nomes de pastas contendo código de plug-in personalizado (esses nomes são apenas exemplos, os nomes das pastas podem ser diferentes):plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
cd
para a pastaplugin
.Na pasta
plugin
, compacte toda a pastaplugins
:zip -r plugins.zip plugins/
Criar uma imagem do Docker
- No mesmo diretório em que o arquivo ZIP está localizado, crie um novo arquivo com o nome
Dockerfile
. Adicione o código abaixo ao arquivo
Dockerfile
e salve o arquivo: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"]
criar uma nova imagem Docker do Edge Microgateway com seus plug-ins e enviar por push a imagem para o registro do Docker. Você pode usar o registro que quiser, como como
docker.io
ougcr.io
:docker build -t edgemicroplugins .
docker tag edgemicroplugins container-registry/your-project/edgemicroplugins
docker push container-registry/your-project/edgemicroplugins
Exemplo:
docker build -t edgemicroplugins .
docker tag edgemicroplugins gcr.io/my-project/edgemicroplugins
docker push gcr.io/my-project/edgemicroplugins
Atualizar a configuração do Edge Microgateway
Adicione os plug-ins ao arquivo de configuração do Edge Microgateway. Você encontra arquivo de configuração aqui:
$HOME/.edgemicro/org-env-config.yaml
Exemplo:
$HOME/.edgemicro/myorg-test-config.yaml
No exemplo de configuração a seguir, o plug-in personalizado response-uppercase
foi adicionado.
O plug-in oauth
já estava lá por padrão.
edgemicro:
...
plugins:
sequence:
- oauth
- response-uppercase
Atualizar o cluster do Kubernetes
A etapa final é aplicar a alteração de configuração ao cluster do Kubernetes. Kubernetes. extrai a nova imagem com o código do plug-in que você enviou ao Container Registry e o usa para que criou os pods.
Se você implantou o Edge Microgateway como um serviço
Use o comando edgemicroctl
para injetar a configuração atualizada do Edge Microgateway:
Atualize a implantação do Edge Microgateway com a nova imagem. Exemplo:
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)
em que:
your_organization
: a organização da Apigee que você especificou no comandoedgemicro configure
.your_environment
: o ambiente especificado no comandoedgemicro configure
.configuration_key
: a chave retornada do comandoedgemicro configure
.configuration_secret
: o secret retornado do comandoedgemicro configure
.config_file_path
: o caminho para o arquivo de configuração do Edge Micro retornado do comandoedgemicro configure
.container-registry
: o registro do Docker para onde você enviou a imagem. Por exemplo,gcr.io
oudocker.io
.your_project_name
: o nome do projeto do repositório do Docker para onde você enviou a imagem do Docker.image_name
: o nome da imagem do Docker que você enviou.
Exemplo:
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)
Teste o plug-in. Chame a API para verificar se você obtém o comportamento esperado. Para exemplo, para "resposta em letra maiúscula" plug-in, o texto da resposta é convertido em todos maiúsculas, conforme mostrado abaixo:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
Saída:
HELLO WORLD
Como injetar manualmente a nova configuração
A injeção manual é uma abordagem simples, em que você injeta a nova configuração na linha de comando.
execute o seguinte 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)
em que:
your_org
: a organização da Apigee que você especificou no comandoedgemicro configure
.your_env
: o ambiente especificado no comandoedgemicro configure
.your_key
: a chave retornada do comandoedgemicro configure
.your_secret
: o secret retornado do comandoedgemicro configure
.config_file_path
: o caminho para o arquivo de configuração do Edge Micro retornado do comandoedgemicro configure
.container-registry
: o registro do Docker para onde você enviou a imagem. Por exemplo,gcr.io
oudocker.io
.your_project_name
: o nome do projeto do repositório do Docker para onde você enviou a imagem do Docker.image_name
: o nome da imagem do Docker que você enviou.service_deployment_file
: o caminho para o arquivo de implantação do serviço do em que os plug-ins serão aplicados. Por exemplo,samples/helloworld/helloworld.yaml
.
Exemplo:
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)
Teste o plug-in. Chame a API de serviço para veja se o resultado é o comportamento esperado. Por exemplo, no caso de "resposta em letra maiúscula", plug-in, o texto da resposta é convertido para letras maiúsculas, conforme mostrado abaixo:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
Saída:
HELLO WORLD
Como fazer alterações na configuração do Edge Microgateway
Em alguns casos, talvez seja necessário modificar sua configuração do Edge Microgateway. Por exemplo, Adicione um novo plug-in ao Edge Microgateway ou altere um parâmetro de configuração. Isso explica como fazer e aplicar alterações de configuração ao Edge Microgateway em execução no Kubernetes.
Crie um arquivo de configuração
secret.yaml
, conforme mostrado abaixo: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
Especifique o valor codificado em 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'
Faça as alterações no arquivo de configuração do Edge Microgateway para sua organização e de nuvem:
$HOME/.edgemicro/your_org-your_env-config.yaml
Codifique em Base64 duas vezes conteúdo do arquivo de configuração:
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
Aplique as alterações ao Kubernetes no namespace em que o serviço é executado.
kubectl apply -f secret.yaml -n
Essas novas mudanças não são detectadas automaticamente pelos pods de microgateway atuais. No entanto, os novos pods vão receber as alterações. É possível excluir o pod atual para que implantação cria um novo pod que escolhe a alteração.
Exemplo de serviço
O exemplo a seguir ilustra como atualizar uma implantação de serviço com uma nova
Receba os pods.
kubectl get pods
Exemplo de saída:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-g7nrg 1/1 Running 0 19h helloworld-6987878fc4-cltc2 1/1 Running 0 1d
Exclua o pod
edge-microgateway
.kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
Exemplo de saída:
pod "edge-microgateway-57ccc7776b-g7nrg" deleted
Acesse os pods novamente. Um novo pod será ativado e você receberá as alterações de configuração.
kubectl get pods
Exemplo de saída:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-7f6tc 1/1 Running 0 5s helloworld-6987878fc4-cltc2 1/1 Running 0 1d
Escalonar sua implantação
Nesta seção, explicamos como usar os princípios de escalonamento do Kubernetes para escalonar as implantações.
Como escalonar uma implantação de serviço
Verifique as implantações:
kubectl get deployments
Exemplo de saída:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 1 1 1 1 18h helloworld 1 1 1 1 1d
A resposta indica que uma réplica foi implantada.
Escalone a implantação de uma para quantas réplicas você quiser. Neste exemplo, o serviço
edge-microgateway
é escalonado.kubectl scale deployment edge-microgateway --replicas=2
(Opcional) Se você quiser usar o escalonamento automático, use este comando:
kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
Verifique nas implantações se o escalonamento está ativado:
kubectl get deployments
Exemplo de saída:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 2 2 2 2 18h helloworld 1 1 1 1 1d
O estado foi alterado para incluir duas réplicas.
Verifique os pods:
kubectl get pods
Exemplo de saída:
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
A saída mostra que as duas réplicas estão em um estado de execução.
Usar namespaces para várias configurações do Edge Microgateway
É possível implantar e configurar várias instâncias dos serviços do Edge Microgateway na sua cluster do Kubernetes. Este caso de uso permite configurar cada instância de microgateway com o próprio conjunto de plug-ins e parâmetros. Exemplo:
- O Serviço A do Edge Microgateway requer apenas o plug-in de detenção de pico.
- O serviço B do Edge Microgateway requer a cota e o plug-in OAuth, mas não a prisão de pico.
Para resolver esse caso de uso, utilize os namespaces do Kubernetes. Por exemplo, é possível implantar
Serviço do Edge Microgateway A para o namespace foo
, e Serviço do Edge Microgateway B para
namespace bar
.
No exemplo a seguir, o Edge Microgateway configurado na organização OrgA
é implantado como um serviço para o namespace
foo
usando a opção -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
Da mesma forma, no exemplo a seguir, o Edge Microgateway foi configurado na organização OrgB
é implantado como um serviço no namespace bar
usando a opção -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