Налаштування Apache APISIX як API Gateway для мікросервісів

Коли мікросервісна архітектура розростається, звичайні проксі-сервери перестають справлятися з динамічною маршрутизацією, а ручні правки конфігів сповільнюють кожен деплой. Ми налаштовуємо Apache APISIX як API Gateway, щоб ви керували трафіком гнучко та без простоїв. Наша команда реалізує проєкт під ключ — від аудиту до впровадження та подальшої підтримки, забезпечуючи стабільну роботу й масштабування разом із вашим бізнесом.
Часті запитання

Налаштування Apache APISIX як API Gateway для мікросервісів

Ми постійно стикаємося з ситуацією, коли мікросервісна архітектура розростається, а звичайний Nginx або HAProxy перестають справлятися з динамічною маршрутизацією. Багаторічний досвід з API-шлюзами показав: Apache APISIX — найкраще рішення для гнучкого керування трафіком без простоїв. Гарантуємо, що після налаштування ви забудете про ручні правки конфігів і простій при кожному деплої.

APISIX — високопродуктивний API gateway на базі OpenResty (Nginx + LuaJIT) з etcd як сховищем конфігурації. Його головна відмінність від Kong та інших рішень — конфігурація застосовується без перезавантаження, а latency на зміну роутів вимірюється мілісекундами. Для динамічних мікросервісних середовищ, де деплої відбуваються десятки разів на день, це суттєво. Наші інженери сертифіковані та налаштували APISIX на проектах з навантаженням 50 000 RPS.

Чому Apache APISIX швидший за інші API Gateway?

APISIX у 2 рази швидший за Kong у сценаріях частого оновлення маршрутів завдяки etcd та hot-reload плагінів. Плагіни виконуються на LuaJIT без перемикання контексту. Це дає latency близько 1 мс на запит навіть з десятком активних плагінів. Для високонавантажених систем — критично.

Архітектура та компоненти

APISIX складається з трьох ключових частин: data plane (обробка трафіку), control plane (Admin API + Dashboard) та etcd (зберігання конфігурації). У production-середовищі data plane розгортається як мінімум у двох екземплярах за load balancer, control plane ізолюється від зовнішнього доступу. Etcd-кластер повинен включати не менше трьох реплік для відмовостійкості та швидкої консистентності.

Kubernetes-деплой через Helm:

helm repo add apisix https://charts.apiseven.com
helm repo update
helm install apisix apisix/apisix \
  --namespace ingress-apisix \
  --create-namespace \
  --set gateway.type=LoadBalancer \
  --set ingress-controller.enabled=true \
  --set etcd.replicaCount=3 \
  --set apisix.replicaCount=2

Після встановлення Admin API доступний на 9180/tcp — тільки всередині кластера. Ніколи не виставляємо його назовні.

Роутинг та upstream-конфігурація

Створення upstream та route через Admin API:

# Upstream — пул бекендів
curl -X PUT http://apisix:9180/apisix/admin/upstreams/1 \
    -H "X-API-KEY: $ADMIN_KEY" \
    -d '{
        "type": "roundrobin",
        "nodes": {
            "orders-svc.default.svc.cluster.local:8080": 1,
            "orders-svc-v2.default.svc.cluster.local:8080": 1
        },
        "checks": {
            "active": {
                "http_path": "/health",
                "interval": 5,
                "successes": 2,
                "http_failures": 3
            }
        }
    }'

# Route — правило матчингу трафіку
curl -X PUT http://apisix:9180/apisix/admin/routes/1 \
    -H "X-API-KEY: $ADMIN_KEY" \
    -d '{
        "uri": "/api/v1/orders/*",
        "host": "api.example.com",
        "upstream_id": 1,
        "plugins": {
            "rate-limiting": {
                "count": 1000,
                "time_window": 60,
                "key": "consumer_name"
            },
            "jwt-auth": {},
            "prometheus": {}
        }
    }'

Health checks вбудовані в upstream — APISIX автоматично виключає нездорові ноди з балансування. Це критично при rolling deploy: поки новий pod ще не пройшов readiness probe, старі ноди приймають трафік.

Плагінна архітектура

Сила APISIX — у плагінах. З коробки: аутентифікація (JWT, OAuth 2.0, API key, LDAP), rate limiting з кількома стратегіями (consumer, IP, service), трансформація запитів/відповідей, circuit breaker, трасування через OpenTelemetry та Zipkin, метрики для Prometheus.

Приклад конфігурації circuit breaker для захисту від каскадних відмов:

"api-breaker": {
  "break_response_code": 503,
  "max_breaker_sec": 30,
  "unhealthy": {
    "http_statuses": [500, 502, 503],
    "failures": 5
  },
  "healthy": {
    "http_statuses": [200],
    "successes": 3
  }
}

П'ять помилок поспіль — circuit відкривається, запити отримують 503 без звернення до бекенду. Три успішні відповіді після таймауту — circuit закривається. Бекенд-сервіс отримує час відновитися.

Кастомні плагіни пишуться на Lua або через plugin runner на Go/Python/Java. Це відрізняє APISIX від рішень, де розширення потребує форку коду.

Як налаштувати канаркове розгортання з APISIX?

У Kubernetes-середовищі конфігурація через CRD органічніша за прямі API-виклики:

---
apiVersion: apisix.apache.org/v2
kind: ApisixRoute
metadata:
  name: orders-route
spec:
  http:
    - name: orders
      match:
        hosts:
          - api.example.com
        paths:
          - /api/v1/orders/*
      backends:
        - serviceName: orders-svc
          servicePort: 8080
          weight: 90
        - serviceName: orders-svc-v2
          servicePort: 8080
          weight: 10
      plugins:
        - name: jwt-auth
          enable: true
        - name: prometheus
          enable: true

Canary 10%/90% між версіями сервісу керується через weight — жодних ручних змін при поступовому викочуванні нової версії.

Як APISIX масштабується під навантаження?

Data plane APISIX горизонтально масштабується за рахунок додавання реплік за load balancer. Для динамічного масштабування в Kubernetes використовуємо HPA за метриками CPU або RPS. Etcd-кластер також масштабується — рекомендуємо 3, 5 або 7 вузлів залежно від навантаження. При зростанні кількості роутів (до 5000+) etcd зберігає стабільну продуктивність.

Що входить в роботу

Оцінимо ваш проект. В рамках налаштування під ключ:

  • Проектування топології: кількість data plane реплік, ізоляція control plane, схема зберігання конфігурації в etcd.
  • Встановлення в Kubernetes або bare metal.
  • Міграція існуючих nginx/HAProxy правил в APISIX-конфігурацію.
  • Налаштування аутентифікації, rate limiting та спостережуваності (Prometheus + Grafana dashboard).
  • Тестування під навантаженням з імітацією failover.
  • Документація адміністративних процедур.
Масштаб Термін
Один кластер, до 20 сервісів 3-5 днів
Мультикластер, міграція з існуючого GW 1-2 тижні
Плагін Призначення Швидкість (latency add)
jwt-auth Аутентифікація JWT ~0.1 ms
rate-limiting Обмеження запитів ~0.2 ms
prometheus Метрики ~0.05 ms
api-breaker Circuit breaker ~0.1 ms

Вартість розраховується індивідуально після аудиту. Напишіть нам — отримайте консультацію по вашому проекту. Замовте аудит вашої інфраструктури — визначимо вузькі місця та підберемо оптимальну конфігурацію. 5+ років досвіду з APISIX та 30+ впроваджень гарантують результат.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139