Publication date:

11/6/24

KrakenD: Kompleksowy przewodnik instalacji i konfiguracji

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ą Docker

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 KrakenD

2. 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 -d

KrakenD 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 backend lub endpoint. 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.json

Dzię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 oraz w systemie Linux, a także jak skonfigurować podstawowe ustawienia i zaawansowane funkcje, takie jak autoryzacja JWT oraz limity szybkości.

Korzyści z używania KrakenD:
  • Redukcja liczby wywołań API i uproszczenie infrastruktury,

  • Wsparcie dla zaawansowanych funkcji, takich jak autory

Umów się na bezpłatną konsultację

Porozmawiaj z nami, a z przyjemnością oszacujemy Twój projekt bez żadnych kosztów.

Skontaktuj się z nami

HypeDev Group sp. z o.o.

ul. Jana III Sobieskiego 11/18

40-082 Katowice, Polska

+48 603 675 293

kontakt@hypedevgroup.pl

NIP: 6343019462

© HypeDev Group sp. z o.o.

Umów się na bezpłatną konsultację

Porozmawiaj z nami, a z przyjemnością oszacujemy Twój projekt bez żadnych kosztów.

Skontaktuj się z nami

HypeDev Group sp. z o.o.

ul. Jana III Sobieskiego 11/18

40-082 Katowice, Polska

+48 603 675 293

kontakt@hypedevgroup.pl

NIP: 6343019462

© HypeDev Group sp. z o.o.

Umów się na bezpłatną konsultację

Porozmawiaj z nami, a z przyjemnością oszacujemy Twój projekt bez żadnych kosztów.

Skontaktuj się z nami

HypeDev Group sp. z o.o.

ul. Jana III Sobieskiego 11/18

40-082 Katowice, Polska

+48 603 675 293

kontakt@hypedevgroup.pl

NIP: 6343019462

© HypeDev Group sp. z o.o.