Apache APISIX 2.13.0 lançado

Já faz mais de meio ano desde que a última versão LTS do Apache APISIX foi lançada.Hoje, a comunidade Apache APISIX trouxe uma nova versão LTS - 2.13.0. Esta versão LTS não só tem um desempenho mais estável, mas também suporta mais observabilidade, plug-ins de descoberta de serviços e um sistema de desenvolvimento multilíngue mais completo.

Se você quiser experimentar novos recursos enquanto busca estabilidade geral, considere atualizar seu Apache APISIX existente para 2.13.0. As comunidades subsequentes também lançarão uma série de versões de patch baseadas na versão 2.13.0.

Atualização de recurso

Novo: a API não é mais exposta por padrão

Nas versões anteriores a 2.13.0, permitimos que plugins registrassem APIs que poderiam ser chamadas pelos clientes. Por exemplo, o jwt-authplug-in registra uma interface de assinatura JWT que os clientes podem acessar para gerar assinaturas para verificação. Mas esse design tem uma falha potencial - uma vez que a interface é exposta em vez da rota, ela não pode ser protegida tanto quanto a rota. Embora o mecanismo existente permita que os usuários interceptem o acesso à interface escrevendo o interceptor de plug-in correspondente, esse método ainda apresenta riscos de segurança.

Então, a partir da versão 2.13.0, decidimos fazer uma alteração importante e não expor mais a API por padrão **. **Caso o usuário precise expor a interface, ele precisa vincular a interface à rota correspondente através do public-apiplugin . Essa abordagem traz dois benefícios:

  1. A API cadastrada terá maior visibilidade, atualmente, a API cadastrada só entrará em vigor através da configuração de exibição, e o método de acesso também é personalizado pelo usuário.
  2. Permite mais opções de proteção de segurança, APIs cadastradas e rotas possuem o mesmo controle de permissão.

Claro, existem outras novas mudanças na versão 2.13.0, como corrigir o comportamento irracional das versões históricas. Para obter informações específicas de otimização, consulte 2.13.0 Changelog .

Novo recurso: conecte mais sistemas de monitoramento no nível de observabilidade

Como um gateway de API, o Apache APISIX tem o compromisso de conectar mais serviços e conectar mais observabilidade upstream e downstream. Desenvolvemos isso a cada lançamento, e o 2.13.0 não é exceção.

Desta vez adicionamos um plugin de rastreamento:**opentelemetry** **, que permite enviar dados de rastreamento do OpenTelemetry para o coletor configurado. **Vamos dar uma olhada nisso simplesmente através de um exemplo.

O coletor é definido na configuração estática:

plugin_attr:
  opentelemetry:
    resource:
      service.name: APISIX
      tenant.id: business_id
    collector:
      address: "127.0.0.1:4317"
    batch_span_processor:
      drop_on_queue_full: false
      max_queue_size: 6
      batch_timeout: 2
      inactive_timeout: 1
      max_export_batch_size: 2

Em seguida, você pode ativar o rastreamento em uma rota específica:

curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "methods": ["GET"],
    "uris": [
        "/uid/*"
    ],
    "plugins": {
        "opentelemetry": {
            "sampler": {
                "name": "always_on"
            }
        }
    },
    "upstream": {
        "type": "roundrobin",
        "nodes": {
            "127.0.0.1:8089": 1
        }
    }
}'

As solicitações que atingirem essa rota relatarão os dados do OpenTelemetry ao coletor correspondente.

Além disso, adicionamos dois plug-ins de log para oferecer suporte a logs de relatórios para ClickHouse e Loggly.

ClickHouse é um dos bancos de dados OLAP mais rápidos do planeta. Apache APISIX suporta o envio de log de acesso e log de erros para ClickHouse, os exemplos são os seguintes:

curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
      "plugins": {
            "clickhouse-logger": {
                "user": "default",
                "password": "a",
                "database": "default",
                "logtable": "test",
                "endpoint_addr": "http://127.0.0.1:8123"
            }
       },
      "upstream": {
           "type": "roundrobin",
           "nodes": {
               "127.0.0.1:1980": 1
           }
      },
      "uri": "/hello"
}'
curl http://127.0.0.1:9080/apisix/admin/plugin_metadata/error-log-logger -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
  "clickhouse": {
      "user": "default",
      "password": "a",
      "database": "error_log",
      "logtable": "t",
      "endpoint_addr": "http://127.0.0.1:8123"
  }
}'

Loggly é uma plataforma SaaS de processamento de logs da SolarWinds. Oferecemos suporte ao envio de logs de acesso por meio de syslog ou HTTP/HTTPS. Um exemplo é o seguinte:

Configurar o método de relatório

curl http://127.0.0.1:9080/apisix/admin/plugin_metadata/loggly -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
   "protocol": "http"
}'

Configure a rota a ser informada

curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "plugins":{
        "loggly":{
            "customer_token":"xxx",
        }
    },
    "upstream":{
        "type":"roundrobin",
        "nodes":{
            "127.0.0.1:80":1
        }
    },
    "uri":"/index.html"
}'

Um sistema de desenvolvimento multilíngue mais completo

Apache APISIX tem suportado Wasm (Proxy Wasm SDK) desde a versão 2.11, mas a versão LTS não forneceu suporte correspondente. Nesta versão do Apache APISIX 2.13.0, adicionamos e aprimoramos esse recurso.

Após seis meses de desenvolvimento com mais de 10.000 linhas de código (incluindo testes e documentação), o APISIX agora suporta totalmente a execução de código Wasm em quatro estágios de processamento de cabeçalhos de solicitação, corpos de solicitação, cabeçalhos de resposta e corpos de resposta . A versão 2.13.0 é a primeira versão LTS a suportar o Wasm, o que pode ser considerado um novo marco.

Além do Wasm, também estamos desenvolvendo um sistema de plug-in poliglota tradicional baseado em RPC. Não muito tempo atrás, lançamos a versão 0.2.0 do Python Runner. Em alguns dias, também lançaremos o Go Runner 0.3.0.

correção de bug

  • SkyWalking e OpenTelemetry não rastreiam falhas de autenticação.

  • log-rotateO log de corte não suporta a conclusão na hora.

  • deepcopySem copiar metatable.

  • request-validateManipulação de chaves duplicadas em JSON.

  • prometheusCálculo repetido de métricas.

  • Quando conf.headersestá faltando , proxy-rewritein conf.methodnão efeito.

  • traffic-splitFalha ao corresponder quando a primeira regra falha.

  • tempo limite etcd acionado resync_delay.

  • protoConflito de definição.

  • limit-countA configuração permanece inalterada e o contador é reiniciado.

  • As contagens e para plugin-metadataa API Admin estão incorretas.global-rule

  • Os rótulos são perdidos ao mesclar rota e serviço.

mais detalhes

Além dos recursos e componentes acima, a versão Apache APISIX 2.13.0 também atualiza os seguintes recursos:

  • grpc-transcode suporta o tratamento de definições de proto com importações por meio de um .pbarquivo .
  • Suporte para obter nós upstream da configuração do K8s.
  • Adicionado um csrfplug -in para fornecer proteção contra falsificação de solicitação entre sites.
  • Um novo mockingplugin é adicionado para facilitar a geração de dados de teste.

Acho que você gosta

Origin www.oschina.net/news/188799/apache-apisix-2-13-0-released
Recomendado
Clasificación