microservices
Взаимодействие микросервисов с использованием Kong
Использование Kong API Gateway для управления взаимодействием между микросервисами
•
#microservices
#kong
#api-gateway
#infrastructure
Взаимодействие микросервисов с использованием Kong
Kong — это мощный API Gateway с открытым исходным кодом, построенный на базе Nginx, который упрощает управление микросервисами.
Основные возможности Kong
1. Маршрутизация запросов
# kong.yml
services:
- name: user-service
url: http://user-service:3000
routes:
- name: user-route
paths:
- /api/users
methods:
- GET
- POST
- name: order-service
url: http://order-service:3001
routes:
- name: order-route
paths:
- /api/orders
2. Аутентификация
// Плагин JWT аутентификации
const kongConfig = {
plugins: [{
name: 'jwt',
config: {
key_claim_name: 'kid',
secret_is_base64: false,
claims_to_verify: ['exp']
}
}]
};
// Использование в клиенте
class APIClient {
async makeRequest(endpoint: string) {
const token = await this.getJWTToken();
return fetch(`https://api.example.com${endpoint}`, {
headers: {
'Authorization': `Bearer ${token}`
}
});
}
}
3. Rate Limiting
plugins:
- name: rate-limiting
config:
minute: 100
hour: 1000
policy: local
Плагины Kong
Логирование
plugins:
- name: file-log
config:
path: /var/log/kong/access.log
- name: http-log
config:
http_endpoint: http://logging-service/logs
Трансформация запросов
plugins:
- name: request-transformer
config:
add:
headers:
- X-Service-Name:user-service
querystring:
- version:v1
Кэширование
plugins:
- name: proxy-cache
config:
strategy: memory
content_type:
- application/json
cache_ttl: 300
Service Mesh интеграция
// Kong с Kubernetes
const kubernetesConfig = {
apiVersion: 'configuration.konghq.com/v1',
kind: 'KongPlugin',
metadata: {
name: 'rate-limiting-plugin'
},
config: {
minute: 100,
policy: 'local'
}
};
Мониторинг
// Prometheus метрики
class KongMetrics {
async getMetrics() {
const response = await fetch('http://kong:8001/metrics');
return response.text();
}
}
Best Practices
- Используйте декларативную конфигурацию — храните конфигурацию в Git
- Настройте мониторинг — интегрируйте с Prometheus/Grafana
- Применяйте rate limiting — защитите сервисы от перегрузки
- Централизуйте аутентификацию — используйте JWT или OAuth2
- Кэшируйте ответы — уменьшайте нагрузку на сервисы
Заключение
Kong предоставляет мощные инструменты для управления API и взаимодействием микросервисов, упрощая реализацию кросс-функциональных требований.