1. Introdução

O Apache APISIX fornece recursos avançados de gerenciamento de tráfego, como balanceamento de carga, upstream dinâmico, interrupção de circuito, autenticação, observabilidade, etc.

2. Instalação Manual

2.1. Instalação

Attention

Este método de instalação só é necessário se for preciso instalar o APISIX manualmente e para utilizar os comandos da API por meio da linha de comando. Caso contrário, utilize a instalação via Docker, detalhada na seção APISIX Dashboard.

2.1.1. Instalando etcd

O APISIX usa etcd para salvar e sincronizar a configuração. Antes de instalar o APISIX, você precisa instalar o etcd em sua máquina. Ele será instalado automaticamente se você escolher o método de instalação Docker ou Helm durante a instalação do APISIX.

Se você escolher um método diferente ou precisar instalá-lo manualmente, siga as etapas mostradas abaixo:

<Tabs groupId="os" defaultValue="linux" values={[ {label: 'Linux', value: 'linux'}, {label: 'macOS', value: 'mac'}, ]}>
ETCD_VERSION='3.5.4'
wget https://github.com/etcd-io/etcd/releases/download/v${ETCD_VERSION}/etcd-v${ETCD_VERSION}-linux-amd64.tar.gz
tar -xvf etcd-v${ETCD_VERSION}-linux-amd64.tar.gz && \
cd etcd-v${ETCD_VERSION}-linux-amd64 && \
sudo cp -a etcd etcdctl /usr/bin/
nohup etcd >/tmp/etcd.log 2>&1 &

2.1.2. Instalação via pacote RPM

Se o OpenResty não estiver instalado, você pode executar o comando abaixo para instalar os repositórios OpenResty e APISIX:

sudo yum install -y https://repos.apiseven.com/packages/centos/apache-apisix-repo-1.0-1.noarch.rpm

Com o OpenResty instalado, o comando abaixo instalará os repositórios APISIX:

sudo yum-config-manager --add-repo https://repos.apiseven.com/packages/centos/apache-apisix.repo

Então, para instalar o APISIX, use:

sudo yum install apisix

Tip

Você também pode instalar uma versão específica da API APISIX, especificando-a explicitamente:

sudo yum install apisix-2.13.1

2.1.3. Instalação via pacote RPM offline

Primeiro, faça o download do pacote offline RPM para um repositório APISIX:

sudo mkdir -p apisix
sudo yum install -y https://repos.apiseven.com/packages/centos/apache-apisix-repo-1.0-1.noarch.rpm
sudo yum clean all && yum makecache
sudo yum install -y --downloadonly --downloaddir=./apisix apisix

Em seguida, copie o repositório APISIX ao host desejado e execute:

sudo yum install ./apisix/*.rpm

2.2. Gerenciando o servidor APISIX

Uma vez que o APISIX tenha sido instalado, você pode iniciar o arquivo de configuração e o etcd executando o comando:

apisix init

Para iniciar o servidor do APISIX, use:

apisix start

Tip

O comando apisix help retorna uma lista de operações disponíveis e pode ser útil em várias ocasiões.

Se você deseja compilar o APISIX a partir do código-fonte, consulte Building APISIX from source.

2.3. Configurando o APISIX

É possível configurar o APISIX de duas maneiras:

  1. Alterando diretamente o arquivo de configuração conf/config.yaml.
  2. Utilizando o comando --config ou a flag -c para especificar o caminho de seu arquivo de configuração enquanto o APISIX está sendo iniciado: apisix start -c <path to config file>.

O APISIX usará as configurações adicionadas nesse arquivo de configuração e retornará à configuração padrão se algo não estiver configurado.

Por exemplo, para configurar a porta de escuta padrão para ser 8000 sem alterar outras configurações, seu arquivo de configuração deve ser alterado da seguinte maneira:

apisix:
  node_listen: 8000

Agora, se você decidir que deseja alterar o endereço etcd para http://foo:2379, você pode adicioná-lo ao seu arquivo de configuração. Isso não alterará outras configurações.

apisix:
  node_listen: 8000

etcd:
  host: "http://foo:2379"

Attention

A configuração só deve ser alterada pelos métodos mencionados acima. A configuração padrão do APISIX pode ser encontrada no arquivo conf/config-default.yaml e não deve ser modificada. A configuração padrão configuração está vinculada ao código fonte.

Attention

O arquivo conf/nginx.conf é gerado automaticamente e não deve ser modificado.

2.3.1. Atualizando a chave de Admin da API

É recomendado alterar a chave de Admin da API para garantir a segurança da aplicação. Para alterar essa configuração, basta modificar o arquivo de configuração como mostrado abaixo:

apisix:
  admin_key
    -
      name: "admin"
      key: newsupersecurekey
      role: admin

Com isso, para acessar a API Admin, utilize a nova chave configurada:

curl http://127.0.0.1:9080/apisix/admin/routes?api_key=newsupersecurekey -i

2.4. Adicionando o arquivo de unidade do systemd APISIX

Se você instalou o APISIX via RPM, o arquivo da unidade APISIX já estará configurado e você poderá iniciar o APISIX por:

systemctl start apisix
systemctl stop apisix

Se você instalou o APISIX por meio de outros métodos, você pode criar /usr/lib/systemd/system/apisix.service e adicionar o template de configuração.

A página Getting Started do APISIX oferece um guia com instruções para utilizar corretamente a API.

2.5. Pacotes instalados

+----------------------------------------------------------------+
| Package          Arch     Version           Repository    Size |
+================================================================+
| Installing:                                                    |
| apisix           x86_64   2.14.1-0.el7      release      2.2 M |
+----------------------------------------------------------------+
| Installing for dependencies:                                   |
| apisix-base      x86_64   1.21.4.1.0-0.el7  release      34 M  |
+----------------------------------------------------------------+
| Updating for dependencies:                                     |
| cyrus-sasl-lib   x86_64   2.1.26-24.el7_9   updates      156 k |
| openldap         x86_64   2.4.44-25.el7_9   updates      356 k |
+----------------------------------------------------------------+

+-------------------------------------------+
| Transaction Summary                       |
+===========================================+
| Install 1 Package (+7 Dependent packages) |
| Upgrade (2 Dependent packages)            |
+-------------------------------------------+
| Total download size: 40 M                 |
+-------------------------------------------+

3. APISIX Dashboard (Recomendado)

3.1. Instalação

3.1.1. Docker

É recomendado usar o Docker para rodar o Dashboard, usando os comandos:

docker pull apache/apisix-dashboard
docker run -d --name dashboard \
           -p 9000:9000        \
           -v <CONFIG_FILE>:/usr/local/apisix-dashboard/conf/conf.yaml \
            apache/apisix-dashboard

Note

Substitua <CONFIG_FILE> com o caminho de seu arquivo de configuração.

3.1.2. RPM

É necessário somente no caso de NÃO utilização de Docker.

Note

Somente CentOS 7 é suportado atualmente.

3.1.2.1. Instalação

Instale o pacote RPM com o seguinte comando:

sudo yum install -y https://github.com/apache/apisix-dashboard/releases/download/v2.13/apisix-dashboard-2.13-0.el7.x86_64.rpm

3.1.2.2. Execução

Execute o Dashboard no shell:

sudo manager-api -p /usr/local/apisix/dashboard/

ou como um serviço:

systemctl start apisix-dashboard

Se a configuração padrão foi utilizada, visite http://127.0.0.1:9000 para usar o Dashboard.

Note

O login e senha padrões são admin.

4. Acesso

Por padrão, a API do APISIX será executada na porta 9080 da máquina.

Por exemplo, na máquina 172.16.0.66:

http://172.16.0.66:9080/apisix/admin/routes?api_key=newsupersecurekey

Em resumo, os serviços executados pelo APISIX podem ser acessados nas seguintes portas padrão: 9080, 9082, 2379, 9000, 3000, 9090 e 9081.

apisix standard ports

O APISIX Dashboard, que permite configurar o barramento através de uma interface gráfica, é executado na porta 9000, por exemplo.

5. Configurando uma API

As APIs das aplicações web implementam uma variedade de endpoints responsáveis por processar e retornar informações referentes aos bancos de dados das aplicações, do GBDS e das operações realizadas. A maioria dos endpoints são específicos à aplicação, mas alguns deles são comuns entre elas e são implementadas no que é chamado de Common Server.

Todas as chamadas de API usadas pela aplicação devem ser configuradas no APISIX. Existem 2 alternativas para configurar uma API, expostas a seguir.

5.1. Configurando a API pelo APISIX Dashboard (Recomendado)

apisix dashboard home screen

A configuração da API através do APISIX Dashboard é recomendada pois a interface gráfica do Dashboard permite a importação da API através de arquivos OpenAPI nos formatos .json ou .yaml. Para possibilitar a importação da API através do Dashboard, é necessário obter o arquivo OpenAPI da aplicação que está sendo configurada.

5.1.1. Gerando o arquivo OpenAPI a partir do servidor

Os servidores das aplicações web implementam o Swagger para documentação de seus endpoints. Para gerar o arquivo de documentação da API, basta acessar o servidor e fazer um GET na rota /service/swagger.yaml.

No ETR, por exemplo, basta acessar:

http://172.16.0.70:8089/gbs-etr-server/service/swagger.yaml

Ao acessar esse endpoint pelo navegador, por exemplo, será feito o download do arquivo .yaml.

Para ser importado no APISIX, esse arquivo deve ser convertido para o formato OpenAPI 3.0. Para tanto, a maneira mais simples é acessar o Swagger Editor e seguir as seguintes etapas:

  1. Importar o arquivo gerado no site clicando em File > Import file.
  2. Converter para OpenAPI 3.0 clicando em Edit > Convert to OpenAPI 3.0.
  3. Salvar o arquivo no formato OpenAPI (como .yaml ou .json) clicando em File > Save as YAML ou Convert and save as JSON.

Note

Em praticamente todas as aplicações existem endpoints que acabam não sendo utilizados/chamados pelo frontend e poluem o arquivo. Recomenda-se então que esses endpoints sejam removidos do arquivo, juntamente com seus respectivos schemas e componentes.

5.1.2. Importando a API pelo Dashboard

Com o APISIX sendo executado, acesse http://localhost:9000 e você será redirecionado para o Dashboard. Caso o login seja necessário, por padrão o acesso é feito utilizando do login e senha admin/admin.

Antes de importar as rotas da API, é recomendado criar um Upstream - que é basicamente o Servidor Backend da API que está sendo configurada. Essa etapa é feita na aba Upstream do Dashboard. Para tanto, é necessário definir um nome para o server, o IP e a porta no qual está rodando.

A seguir, é mostrado um exemplo da configuração do Upstream do ETR que está rodando na máquina 172.16.0.66:

apisix upstream configuration example

Uma vez configurado o Upstream, é possível realizar a importação das rotas da API através do arquivo OpenAPI 3.0 gerado:

  1. Acesse a aba Route.
  2. Clique no menu dropdown Advanced?.
  3. Clique em Import OpenAPI.
  4. Selecione o arquivo e clique no botão Confirmar.

Se estiver tudo correto, as rotas da API serão importadas no dashboard e ficarão listadas como neste exemplo:

apisix dashboard route list

Tip

Em caso de problemas na importação do arquivo OpenAPI, consulte o FAQ.

5.1.3. Configurando as rotas importadas

Uma vez que as rotas tenham sido importadas pelo Dashboard, ainda é necessário fazer alguns ajustes para que os endpoints possam ser acessados pelas aplicações.

5.1.3.1. Mapeando as rotas

O primeiro ponto a ser ajustado é o path da rota, ou seja, o endereço que vai ser acessado para que o APISIX identifique corretamente a chamada do endpoint.

Note

Por padrão, ao gerar a documentação do Swagger de uma aplicação, as rotas mapeadas serão relativas ao default do server.

No ETR, por exemplo, são gerados os endpoints /etr/list ou /commons/version. Porém, para acessar esse endpoint através da aplicação web ou diretamente via linha de comando, é necessário acessar o caminho /gbs-etr-server/service/<caminho_do_endpoint>.

Sendo assim, é necessário alterar o atributo path das rotas importadas e adicionar a rota padrão da API que está sendo configurada, incluindo, por exemplo, o caminho gbs-API-server/service (padrão das aplicações web) antes das rotas mapeadas.

apisix map imported routes

5.1.3.2. Adicionando o método HTTP ‘OPTIONS’

Ao importar as rotas, elas serão mapeadas somente com o método HTTP padrão que executam. Porém, a maioria das chamadas feitas através das aplicações web, por padrão do React, também executam um método OPTIONS - utilizado para que um cliente possa descobrir quais as opções de requisição permitidas para um determinado recurso - e, caso este não seja mapeado no APISIX, pode ocorrer um erro de CORS quando a aplicação executar a chamada.

Portanto, é importante que seja adicionado o método OPTIONS nas rotas para evitar problemas de comunicação da API com o APISIX.

Note

Esta etapa é necessária somente para acessar o barramento através de outras aplicações (Frontend/React, por exemplo) - não necessária para acesso direto - e visa resolver problemas de CORS (Cross-Origin Resource Sharing), porém não é a única alternativa possível.

apisix add http options

5.1.3.3. Definindo o Upstream (Backend API Server)

Além de configurar a rota e os métodos esperados, é necessário definir o endereço do servidor ao qual as chamadas serão redirecionadas pelo APISIX. É nessa etapa que utiliza-se o Upstream definido anteriormente.

Na segunda aba de configuração da rota, é possível definir o Backend API Server e, uma vez que o Upstream já tenha sido previamente configurado, é possível selecioná-lo através do menu dropdown no início da página.

Basta selecionar a opção correta que as chamadas já estarão corretamente configuradas, como mostra a imagem a seguir:

apisix route configuration

5.1.3.4. Configurando Plugins

Em seguida, é possível configurar os plugins do APISIX que serão utilizados pela rota.

Por padrão, toda rota importada já possui o plugin request-validation ativado, que faz uma validação dos parâmetros que estão sendo enviados junto com a requisição, antes de encaminhar para o servidor. Recomenda-se remover esse plugin para todas as rotas, uma vez que a validação já é feita pelos servidores.

Existem vários tipos de plugins que podem ser configurados para as rotas, visando controlar/gerenciar Autenticação, Segurança, Controle de Tráfego, entre outros aspectos da rota, como pode ser visto na tela de configuração:

apisix plugins configuration

Para uso das aplicações da Griaule, alguns plugins interessantes são: limit-conn, limit-count, limit-req, traffic-split, entre outros.

Acesse a página de plugins para mais detalhes sobre cada um dos plugins disponíveis pelo APISIX.

Tip

O APISIX oferece a possibilidade de desenvolvimento plugins próprios. Clique aqui para mais informações.

Note

Na aba Plugin do Dashboard é possível habilitar uma série de plugins para a API que está sendo configurada.

Note

Os plugins habilitados na aba Plugin do Dashboard são habilitados globalmente para a API que está sendo configurada. Nos testes, os plugin globais só funcionaram quando nenhuma das rotas possuía um plugin associado a elas.

5.1.4. Services e Consumers (Não utilizados nos testes)

Através do Dashboard, também é possível definir Services e Consumers, que visam facilitar a configuração de plugins para determinadas rotas.

Ao invés de configurar os plugins individualmente para cada rota, é possível configurar uma série de plugins em um Consumer, por exemplo. Em seguida, uma vez que o APISIX identifica aquele Consumer específico (por meio de um plugin de autenticação), os plugins configurados para aquele Consumer passam a funcionar na rota requisitada.

Outra alternativa é definir um Upstream + Plugins através de um Service.

Para isso, utiliza-se as abas Service e Consumer do Dashboard.

Tip

Para mais detalhes, acesse a documentação do Services e a documentação de Consumers.

Seguindo esses passos, é possível configurar uma API para o APISIX.

Em caso de eventuais dúvidas ou problemas com o Dashboard, é verifique o Guia de Usuário na Documentação oficial do APISIX ou os canais de ajuda especificados na documentação.

Note

Após configurar as rotas, é necessário publicá-las através do dashboard para que elas possam ser corretamente acessadas.

5.2. Configurando a API por linha de comando/configuração

O APISIX permite a configuração da aplicação e suas rotas através da linha de comando e arquivo de configuração, como detalhado aqui. Para tanto, é necessário especificar o servidor (Upstream) e cada uma de suas rota, e seguir o passo a passo a seguir:

5.2.1. Acesso à APISIX Admin

curl "http://127.0.0.1:9080/apisix/admin/services/" -H 'X-API-KEY:edd1c9f034335f136f87ad84b625c8f1'

Resposta esperada (indica que o APISIX está sendo executado corretamente):

{
    "count":0,
    "action":"get",
    "node":{
    "key":"/apisix/services",
    "nodes":[],
    "Dir":true
}

5.2.2. Criando uma Rota

curl "http://127.0.0.1:9080/apisix/admin/routes/1"      \
     -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1"   \
     -X PUT                                             \
     -d '{
            "methods": ["GET"],
            "host": "example.com",
            "uri": "/anything/*",
            "upstream": {
                "type": "roundrobin",
                "nodes": {
                    "httpbin.org:80": 1
                }
            }
        }'

Essa configuração indica que todas as solicitações de entrada correspondentes ao serviço Upstream (httpbin.org:80) serão encaminhadas se atenderem a estes critérios especificados:

  • O método HTTP da solicitação é GET.
  • O cabeçalho da solicitação contém o campo host e seu valor é example.com.
  • O caminho da solicitação corresponde a /anything/*, em que * significa qualquer subcaminho. Por exemplo, /anything/foo?arg=10.

Com a Rota criada, pode-se acessar o serviço Upstream a partir do endereço exposto pelo APISIX:

curl -i -X GET "http://127.0.0.1:9080/anything/foo?arg=10" -H "Host: example.com"

Essa solicitação será encaminhada para http://httpbin.org:80/anything/foo?arg=10 pelo APISIX.

Tip

Em vez de configurar o Upstream diretamente para a Rota, você pode criar um objeto Upstream e usá-lo na Rota.

5.2.3. Criando um Upstream

curl "http://127.0.0.1:9080/apisix/admin/upstreams/1"   \
     -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1"   \
     -X PUT                                             \
     -d '{
            "type": "roundrobin",
            "nodes": {
              "httpbin.org:80": 1
            }
        }'

Note

Esse é o mesmo que o serviço Upstream que foi configurado diretamente na Rota na seção anterior.

5.2.4. Vincular este Upstream à Rota

Pode-se usar o upstream_id como 1:

curl "http://127.0.0.1:9080/apisix/admin/routes/1"      \
     -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1"   \
     -X PUT                                             \
     -d '{
            "methods": ["GET"],
            "host": "example.com",
            "uri": "/anything/*",
            "upstream_id": "1"
        }'

Com a Rota criada, pode-se acessar o serviço Upstream a partir do endereço exposto pelo APISIX:

curl -i -X GET "http://127.0.0.1:9080/anything/foo?arg=10" -H "Host: example.com"

Essa solicitação será encaminhada para http://httpbin.org:80/anything/foo?arg=10 pelo APISIX.

6. Importando uma API exportada pelo APISIX

Visando facilitar a configuração das APIs, juntamente com as releases dos produtos, é disponibilizado um arquivo .yaml gerado através do APISIX com as rotas utilizadas por cada uma das aplicações web.

Com isso, é possível importar as rotas diretamente através do Dashboard, agilizando seu processo de configuração no barramento.

Porém, a funcionalidade de importação/exportação do APISIX apresenta algumas limitações e, por isso, são necessários passos adicionais após a importação para que o barramento funcione como esperado.

Note

Para facilitar a exportação dos arquivos, o plugin de validação de parâmetros foi removido das rotas antes de sua exportação. A validação é feita pelos servidores.

6.1. Criar um Upstream

Ao exportar as rotas da aplicação pelo APISIX, o Upstream de cada rota (Backend API Server) é exportado como se tivesse sido especificado para cada uma das rotas. Esse comportamento acaba dificultando a configuração da API caso haja mudanças no endereço do servidor da aplicação, mudanças de máquina, etc.

Por isso, recomenda-se criar um Upstream referente ao servidor da aplicação que está sendo configurada no barramento, para centralizar o servidor e facilitar possíveis alterações.

Note

Ao criar o Upstream, atente-se aos timeouts especificados para o servidor (é possível configurar timeout de conexão, envio e recebimento). Em servidores lentos, caso o request demore mais que o timeout especificado para retornar, um Erro 504 será retornado pelo próprio APISIX.

Note

Por padrão, as rotas exportadas estarão apontando para o seu respectivo servidor que está rodando no IP 172.16.0.66 (máquina de desenvolvimento).

6.2. Configurando as Rotas

Como citado anteriormente, a funcionalidade de exportar as configurações de uma API através do APISIX apresenta algumas falhas e, por isso, para configurar completamente a API no barramento, é necessário fazer algumas alterações em todas as rotas que foram importadas a partir do arquivo .yaml gerado.

Apesar de estarem especificados no arquivo gerado pelo APISIX, as chamadas com o tipo de requisição HTTP ‘OPTIONS’ não são convertidas para as rotas importadas no APISIX.

Por esse motivo, para acesso às rotas por parte das aplicações web, é necessário modificar rota a rota e adicionar o método OPTIONS como um dos métodos possíveis, a fim de que as requisições funcionem da maneira esperada, evitando erros de CORS.

Note

A adição do método OPTIONS é a única modificação necessária na aba Define API Request.

Em seguida, na aba Define API Backend Server, é necessário alterar o servidor (utilizando o menu dropdown) e selecionar o Upstream relacionado ao servidor da aplicação que está sendo configurada - que deve ter sido criado previamente.

Na aba Plugins, só devem ser adicionados plugins que sejam específicos à rota que está sendo configurada. Caso contrário, é possível ativar os plugins na aba Plugin do Dashboard. Os plugins habilitados na aba Plugin são habilitados globalmente e funcionarão para todas as rotas configuradas no APISIX.

Sendo assim, para cada uma das rotas importadas é necessário:

  1. Adicionar método OPTIONS
  2. Selecionar o Upstream
  3. Configurar plugin (somente se for específico à rota que está sendo configurada)
  4. Publicar

Seguindo esses passos, é possível importar a API exportada através do APISIX e utilizar as funcionalidade do barramento para acessar a aplicação.

6.3. Acessando as Rotas

Após configurar todas as rotas da aplicação e publicá-las, para acessá-las através da aplicação web, é necessário configurar a aplicação para realizar as chamadas pelo barramento.

Se estiver rodando o APISIX em sua máquina, basta configurar para a rota:

http://127.0.0.1:9080/<nome_da_aplicação>/service

Ou então para a porta 9080 da máquina que estiver rodando o APISIX.

7. FAQ

Para mais especificações, passo a passo ou dúvidas, é possível consultar a Documentação Oficial ou acessar os canais de suporte do APISIX.

7.1. Erro ao importar arquivo OpenAPI

7.1.1. APISIX acusa um erro de formatação no arquivo

Ao tentar importar o arquivo OpenAPI através do APISIX Dashboard, se o arquivo gerado não estiver corretamente formatado, um toast de erro será mostrado na tela. Para validar se o arquivo é um OpenAPI válido, utilize o Swagger Editor (que acusa o erro ou parâmetros não utilizados) ou outra ferramenta para validação.

7.1.2. APISIX Dashboard trava e desloga o usuário após importar arquivo

Durante os testes da importação através do Dashboard, foram constatadas 2 situações que levaram a esse erro. Ambas estavam relacionadas à um problema não identificado em schemas declarados no arquivo swagger.yaml.

Um exemplo prático, constatado na importação do ETR, foi identificado no endpoint /commons/version no schema SystemConfiguration declarado como parâmetro do bodyRequest do endpoint:

…
post:
  summary: Set system configuration
  operationId: set
  parameters:
  - name: session-guid
    in: header
    schema:
      type: string
  requestBody:
    content:
      '*/*':
        schema:
          $ref: '#/components/schemas/SystemConfiguration'
    required: false
…

Na ocasião, esse schema foi removido do arquivo OpenAPI e a importação ocorreu sem problemas. Após investigação, constatou-se que o schema exportado estava desatualizado com relação ao que o servidor esperava mas, mesmo após o conserto, o erro persistiu.

Nesse caso, a alternativa é remover o schema problemático e realizar a importação novamente.

Ao fazer isso, o schema não será mapeado para o plugin request-validation e uma requisição com parâmetro errado irá passar pelo APISIX. Porém, isto acaba não sendo um problema pois um parâmetro errado irá causar erro no próprio servidor, que será retornado ao usuário, mitigando a falta do schema no arquivo importado.

No caso da configuração do BEST, por exemplo, a alternativa adotada foi substituir todos os atributos ``requestBody`` por um objeto vazio ``{}`` e adicionar algum parâmetro para validação no `header` - isso só é válido caso a validação de parâmetros seja desativada para as rotas. Caso contrário, causará erro Bad request por parte do APISIX quando receber a requisição.

Outra alternativa para tentar solucionar o problema é verificar os canais de dúvidas do APISIX (Slack, GitHub e blogs) em busca de soluções definitivas deste problema. Apesar de constatar que esse problema está relacionado aos `schemas` de dados declarados em nossos servidores, não foi encontrada uma solução definitiva.

7.2. Plugin configurado na rota não está funcionando

Por padrão, ao adicionar um plugin à Rota ou ao Consumer, o plugin é marcado como desabilitado. Por isso, atente-se à flag Habilitado e garanta que ela esteja ativa, para que o plugin funcione corretamente na rota.

apisix plugin editor screen

7.3. Não é possível acessar o barramento do APISIX após executá-lo

Durante os testes do barramento usando o APISIX, constatou-se o comportamento das rotas não serem corretamente reconhecidas/redirecionadas pelo APISIX, mesmo com ele sendo executado corretamente via Docker.

Após investigação do problema, constatou-se que havia uma aplicação rodando na porta 9080 da máquina, que é a porta utilizada pela API do APISIX. Isso faz com que a API do APISIX fique inacessível e as rotas não sejam encontradas ao fazer uma requisição. A solução é encerrar o processo que esteja rodando na porta alvo, ou então alterar a porta padrão do APISIX através do arquivo de configuração.