Guía breve para la orquestación de plugins de APISIX y la configuración de la puerta de enlace

Apache APISIX es un gateway API robusto y nativo de la nube para gestionar APIs y microservicios. Veremos la orquestación de plugins y la configuración del gateway en este artículo.

Daniel Costa

Daniel Costa

3 July 2025

Guía breve para la orquestación de plugins de APISIX y la configuración de la puerta de enlace

En las arquitecturas modernas de pasarelas API, la capacidad de orquestar dinámicamente los plugins representa un avance crítico en la gestión del tráfico y el procesamiento de solicitudes. El sistema de orquestación de plugins de Apache APISIX implementa un enfoque sofisticado para manejar escenarios API complejos a través de un modelo de ejecución de grafo acíclico dirigido (DAG).

💡
Antes de empezar:

¿Sigues teniendo problemas para escribir la documentación de la API? ¿Quieres crear documentación de API profesional y dinámica en piloto automático?

¡Utiliza APIDog para mantener tu documentación de API actualizada automáticamente!
No te preocupes por actualizar tu documentación cada vez que realices un cambio en el parámetro de la API, o por actualizar a una nueva versión de la API, ¡APIDog mantiene todo actualizado, todo el tiempo!

¡Aumenta la eficiencia de tus pruebas de API con APIDog!
APIDog: Mantén tu documentación de API actualizada, todo el tiempo
button

Orquestación de plugins de APISIX, una visión general rápida

En esencia, la orquestación de plugins en APISIX permite rutas de procesamiento condicionales basadas en los resultados de la ejecución de plugins, lo que permite el manejo dinámico de solicitudes sin necesidad de código personalizado. Este sistema opera a través de una arquitectura distribuida que mantiene la separación entre los planos de control y de datos, al tiempo que garantiza un alto rendimiento a través de la gestión optimizada del estado y el procesamiento en memoria.

Orquestación de plugins en APISIX

El motor de orquestación procesa los plugins a través de un sofisticado sistema de gestión de estado que mantiene el contexto de ejecución al tiempo que permite una lógica condicional compleja. Cada plugin de la cadena puede influir en la ruta de ejecución de los plugins posteriores, creando un flujo de procesamiento dinámico y receptivo. Este enfoque permite escenarios como:

La implementación técnica aprovecha varios componentes clave:

  1. Un motor de ejecución DAG que gestiona las dependencias y el flujo de los plugins
  2. Un sistema de gestión de estado para mantener el contexto de ejecución del plugin
  3. Un sistema de procesamiento en memoria optimizado para un funcionamiento de alto rendimiento
  4. Un sistema de configuración distribuida que utiliza etcd para actualizaciones en tiempo real

Esta arquitectura permite escenarios complejos de gestión de API al tiempo que mantiene un alto rendimiento a través de una cuidadosa optimización de la gestión del estado y las rutas de ejecución de los plugins. El sistema admite la carga dinámica de plugins, la integración de plugins personalizados y la lógica condicional compleja, todo ello manteniendo las características de rendimiento necesarias para las implementaciones de producción.

Los componentes técnicos y el flujo de ejecución del sistema de orquestación de plugins de APISIX

En la orquestación de plugins de APISIX, "Context" representa un estado compartido que persiste durante todo el ciclo de vida de la ejecución del plugin. Este contexto opera a través de múltiples fases de ejecución: rewrite, access, before_proxy, header_filter, body_filter y log. Por ejemplo, el Contexto de Ejecución mantiene:

Al implementar esta arquitectura, APISIX proporciona un sistema flexible pero potente para manejar requisitos complejos de gestión de API a través de la configuración en lugar de código, reduciendo significativamente la complejidad operativa al tiempo que mantiene la fiabilidad y el rendimiento del sistema.

Configuración de la infraestructura, lo primero es lo primero

La base de una implementación segura de APISIX comienza con el aislamiento y la configuración adecuados de la red. Primero, crea una red dedicada con configuraciones de subred específicas:

docker network create \
--driver=bridge \
--subnet=172.18.0.0/16 \
--ip-range=172.18.5.0/24 \
--gateway=172.18.5.254 \
apisix

Esta configuración de red garantiza el aislamiento y la comunicación adecuados entre los componentes de APISIX.

Implementar componentes centrales

Configuración de ETCD

ETCD sirve como centro de configuración. Impleméntalo con la configuración de seguridad adecuada:

docker run -it --name etcd-server \
-v $(pwd)/example/etcd_conf/etcd.conf.yml:/opt/bitnami/etcd/conf/etcd.conf.yml \
-p 2379:2379 \
-p 2380:2380 \
--network apisix \
--ip 172.18.5.10 \
--env ALLOW_NONE_AUTHENTICATION=yes bitnami/etcd:3.4.9

Esta configuración garantiza la persistencia de datos y la accesibilidad a la red adecuadas.

Instalación del núcleo de APISIX

Implementa APISIX con registro y configuración completos:

docker run --name test-api-gateway \
-v $(pwd)/example/apisix_conf/config.yaml:/usr/local/apisix/conf/config.yaml \
-v $(pwd)/example/apisix_log:/usr/local/apisix/logs \
-p 9080:9080 \
-p 9091:9091 \
-p 9443:9443 \
--network apisix \
--ip 172.18.5.11 \
-d apache/apisix

Esta configuración incluye montajes de volumen para la configuración y los registros.

Implementar seguridad

Capa de autenticación

APISIX proporciona una autenticación robusta basada en claves. Aquí tienes una implementación completa:

# Create a consumer with authentication
curl http://127.0.0.1:9180/apisix/admin/consumers -H "X-API-KEY: $admin_key" -X PUT -d '
{
    "username": "jack",
    "plugins": {
        "key-auth": {
            "key": "auth-one"
        }
    }
}'

# Configure route with authentication
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H "X-API-KEY: $admin_key" -X PUT -d '
{
    "methods": ["GET"],
    "uri": "/index.html",
    "plugins": {
        "key-auth": {}
    },
    "upstream": {
        "type": "roundrobin",
        "nodes": {
            "127.0.0.1:1980": 1
        }
    }
}'

Esta configuración crea una capa de autenticación segura que requiere claves API para el acceso.

Implementación de la limitación de velocidad

Protege tus API del abuso con una sofisticada limitación de velocidad:

curl http://127.0.0.1:9180/apisix/admin/routes/1 -H "X-API-KEY: $admin_key" -X PUT -d '
{
    "uri": "/index.html",
    "plugins": {
        "limit-count": {
            "count": 2,
            "time_window": 60,
            "rejected_code": 503,
            "key": "remote_addr",
            "policy": "redis",
            "redis_host": "127.0.0.1",
            "redis_port": 6379,
            "redis_password": "password",
            "redis_database": 1,
            "redis_timeout": 1001
        }
    },
    "upstream": {
        "type": "roundrobin",
        "nodes": {
            "127.0.0.1:1980": 1
        }
    }
}'

Esta configuración implementa la limitación de velocidad distribuida basada en Redis.

Estrategias avanzadas de limitación de velocidad

Para la limitación de velocidad a nivel de clúster con diferenciación de consumidores:

curl -i http://127.0.0.1:9180/apisix/admin/routes/1 \
-H "X-API-KEY: $admin_key" -X PUT -d '
{
    "uri": "/index.html",
    "plugins": {
        "limit-count": {
            "count": 2,
            "time_window": 60,
            "rejected_code": 503,
            "key_type": "var_combination",
            "key": "$consumer_name $remote_addr"
        }
    },
    "upstream": {
        "type": "roundrobin",
        "nodes": {
            "127.0.0.1:9001": 1
        }
    }
}'

Esta configuración permite una sofisticada limitación de velocidad basada tanto en la identidad del consumidor como en la dirección IP.

Monitorización de la salud y métricas

Integración de Prometheus

Habilita la recopilación de métricas integrales:

curl -i http://127.0.0.1:9180/apisix/admin/routes/1 \
-H "X-API-KEY: $admin_key" -X PUT -d '
{
    "uri": "/metrics",
    "plugins": {
        "prometheus": {
            "prefer_name": true,
            "metrics": {
                "http_status": true,
                "latency": true,
                "bandwidth": true
            }
        }
    },
    "upstream": {
        "type": "roundrobin",
        "nodes": {
            "prometheus:9090": 1
        }
    }
}'

Esta configuración habilita la recopilación de métricas detalladas para la monitorización y el análisis.

Gestión del sistema

Inicialización del servicio

Después de la instalación, inicializa el sistema con las configuraciones adecuadas:

# Initialize configuration
sudo apisix init

# Start the service
sudo apisix start

# For systemd-based systems
systemctl start apisix

Estos comandos garantizan la inicialización adecuada del sistema y la gestión del servicio.

Actualizaciones de configuración

Actualiza la clave API de administrador para mejorar la seguridad:

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

Esta configuración mejora la seguridad de la API de administrador.

Conclusión

La implementación integral de estas configuraciones crea una infraestructura de pasarela API robusta, segura y escalable. La combinación de autenticación, limitación de velocidad y monitorización garantiza tanto la seguridad como la fiabilidad. El mantenimiento regular, incluida la actualización de las claves de administrador y la monitorización de las métricas del sistema, es crucial para mantener la salud de la implementación.

Recuerda ajustar estas configuraciones en función de tus requisitos específicos y necesidades de seguridad. La naturaleza modular de APISIX permite una fácil expansión y personalización a través de su sistema de plugins, lo que lo hace adecuado tanto para escenarios de gestión de API simples como complejos.

Explore more

Cómo usar Lovable AI (Alternativa a Cursor para desarrolladores web)

Cómo usar Lovable AI (Alternativa a Cursor para desarrolladores web)

Aprende a crear cualquier web con Lovable en esta guía completa. Descubre procesos paso a paso, funciones innovadoras e integra herramientas gratuitas como Apidog para gestión API.

15 April 2025

Cómo usar n8n con servidores MCP

Cómo usar n8n con servidores MCP

Automatiza flujos con n8n y servidores MCP para IA. Guía técnica: configuración, APIs, nodo "MCP Server Trigger" y Apidog para pruebas.

14 April 2025

Cómo añadir claves API personalizadas a Cursor: Una guía completa

Cómo añadir claves API personalizadas a Cursor: Una guía completa

Este tutorial te guiará para configurar y gestionar claves API personalizadas en Cursor (OpenAI, Anthropic, Google y Azure).

11 April 2025

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs