KrakenD — kompleksowy przewodnik instalacji i konfiguracji
KrakenD to wysokowydajny API Gateway typu open-source, który upraszcza dostarczanie danych przez scentralizowane zarządzanie żądaniami HTTP i agregację odpowiedzi z wielu mikroserwisów.
Wprowadzenie
KrakenD to wysokowydajny API Gateway typu open-source, który upraszcza i przyspiesza dostarczanie danych przez scentralizowane zarządzanie żądaniami HTTP i gromadzenie odpowiedzi z różnych mikroserwisów. Dzięki jego elastycznym możliwościom, możesz zredukować liczbę zapytań do serwera, poprawić czas odpowiedzi i uprościć infrastrukturę aplikacji. KrakenD sprawdzi się idealnie zarówno w środowiskach deweloperskich, jak i produkcyjnych.
W tym artykule omówimy krok po kroku proces instalacji oraz konfiguracji KrakenD.
Czym jest KrakenD i dlaczego warto go używać?
KrakenD działa jako API Gateway i umożliwia integrację danych z wielu źródeł, ograniczając potrzebę wielokrotnych wywołań API. Jego główne zalety to:
- Wysoka wydajność — dzięki wykorzystaniu technologii Go, KrakenD jest szybki i sprawnie obsługuje duże wolumeny ruchu.
- Modularna architektura — łatwość dostosowania funkcjonalności dzięki dodatkom i integracjom.
- Elastyczność — umożliwia pełną kontrolę nad routingiem, buforowaniem, limitami prędkości i logowaniem.
- Bezpieczeństwo — wsparcie dla JWT, OAuth2, API Key i innych mechanizmów uwierzytelniania.
KrakenD to doskonały wybór dla projektów, które muszą gromadzić dane z wielu źródeł lub ograniczyć liczbę żądań wysyłanych do backendu.
Instalacja KrakenD
KrakenD można zainstalować na kilka sposobów, jednak w poniższym przewodniku skupimy się na instalacji przy użyciu Dockera.
Instalacja KrakenD za pomocą Dockera
1. Utwórz plik docker-compose.yml w katalogu projektu.
services:
krakend:
image: devopsfaith/krakend
container_name: krakend
ports:
- "8080:8080" # Mapowanie portu 8080 na lokalnym hoście
volumes:
- ./krakend.json:/etc/krakend/krakend.json:ro # Montowanie pliku konfiguracyjnego KrakenD2. Utwórz plik konfiguracyjny krakend.json, który będzie zawierał konfigurację dla KrakenD (szczegóły konfiguracji w dalszej części artykułu).
3. Uruchom KrakenD w Dockerze:
docker-compose up -dKrakenD będzie teraz dostępny pod adresem http://localhost:8080.
Konfiguracja KrakenD
KrakenD wykorzystuje do konfiguracji plik JSON, który definiuje, jak aplikacja będzie obsługiwać żądania HTTP, autoryzację, routing i inne ustawienia. Oto przykład podstawowej konfiguracji w pliku krakend.json.
Przykład pliku krakend.json
{
"version": 2,
"name": "KrakenD API Gateway",
"port": 8080,
"cache_ttl": "300s",
"endpoints": [
{
"endpoint": "/api/v1/data",
"method": "GET",
"output_encoding": "json",
"extra_config": {},
"backend": [
{
"url_pattern": "/data",
"host": [
"http://jsonplaceholder.typicode.com"
],
"encoding": "json",
"extra_config": {}
}
]
}
]
}Wyjaśnienie konfiguracji
version— określa wersję konfiguracji. Wersja 2 to najnowsza specyfikacja.name— nazwa API Gateway, która pojawi się w logach.port— port, na którym będzie nasłuchiwać KrakenD (w tym przypadku 8080).cache_ttl— czas życia cache (TTL), domyślnie ustawiony na 300 sekund.endpoints— określa punkty końcowe, które KrakenD wystawi publicznie.endpoint— określa publiczny adres API, który będzie dostępny przez KrakenD.method— definiuje metodę HTTP (np. GET).backend— konfiguracja backendu; w tym przypadku żądanie zostanie skierowane do jsonplaceholder.typicode.com.
Po zapisaniu konfiguracji możesz ponownie uruchomić serwer KrakenD, aby zastosować zmiany.
Rozszerzona konfiguracja: autoryzacja i buforowanie
KrakenD pozwala na dodanie dodatkowych konfiguracji, takich jak autoryzacja JWT, ograniczenie liczby żądań, logowanie oraz zaawansowane buforowanie.
Autoryzacja JWT
Dodanie autoryzacji JWT wymaga dodania sekcji extra_config w backendzie lub endpoincie. Poniżej znajduje się przykład dla autoryzacji JWT w sekcji endpoints:
{
"endpoints": [
{
"endpoint": "/api/v1/data",
"method": "GET",
"output_encoding": "json",
"extra_config": {
"auth/validator": {
"alg": "HS256",
"jwk_url": "https://your-auth-provider/.well-known/jwks.json",
"audience": "your-audience",
"issuer": "your-issuer"
}
},
"backend": [
{
"url_pattern": "/data",
"host": [
"http://jsonplaceholder.typicode.com"
],
"encoding": "json"
}
]
}
]
}Limity żądań
Aby skonfigurować limity żądań, dodajemy sekcję rate_limit:
{
"endpoints": [
{
"endpoint": "/api/v1/data",
"method": "GET",
"output_encoding": "json",
"extra_config": {
"rate_limit/disable": false,
"rate_limit/max_rate": 10,
"rate_limit/period": "1s"
},
"backend": [
{
"url_pattern": "/data",
"host": [
"http://jsonplaceholder.typicode.com"
],
"encoding": "json"
}
]
}
]
}Powyższa konfiguracja ogranicza liczbę żądań do 10 na sekundę dla danego punktu końcowego.
Testowanie i uruchamianie KrakenD
Aby uruchomić KrakenD lokalnie z pliku konfiguracyjnego, wykonaj następujące polecenie:
krakend run -c /etc/krakend/krakend.jsonDzięki temu poleceniu KrakenD załaduje ustawienia z pliku konfiguracyjnego i uruchomi serwer API Gateway.
Podsumowanie
KrakenD to doskonałe rozwiązanie API Gateway, które dzięki swojej elastyczności i wysokiej wydajności może obsłużyć duże wolumeny ruchu i złożone konfiguracje API. W artykule pokazaliśmy, jak uruchomić KrakenD z Docker Compose, a także jak skonfigurować podstawowe ustawienia i zaawansowane funkcje, takie jak autoryzacja JWT oraz limity żądań.
Korzyści z używania KrakenD:
- Redukcja liczby wywołań API i uproszczenie infrastruktury,
- wsparcie dla zaawansowanych funkcji, takich jak autoryzacja JWT, limity żądań i buforowanie odpowiedzi.