InfraPlatform

KrakenD - 고성능 API 플랫폼 리눅스 우분투 설치

IT오이시이 2024. 8. 3. 21:26
728x90

 

 

KrakenD - 고성능 API 플랫폼 리눅스 우분투 등에 설치하고 작동하는 상태 확인까지 알아봅니다. 패키지 설치하는 과정에 OS 버전이 맞지 않아서 설치되지 않는 경우들 빼고는 설치는 쉽습니다. 설치하고 helth 체크도 가능한데 설치한 API 화면은 다음에 확인해 보겠습니다.

우선 Krakend를 선택하여 솔루션 특징을 앞에 정리를 했지만 기능이 조금 간단하면서 설치가 간편한듯하여 설치를 해보고 있습니다. 

 

 

 KrakenD API 플랫폼 특징 

 

- 시장에서 가장 빠른 API 게이트웨이
KrakenD는 고객에게 서비스를 백엔드하도록하는 일반적인 프록시 이상이지만 데이터를 변환, 집계 또는 제거 할 수있는 강력한 엔진입니다. KrakenD는 프론트 엔드, 백엔드와 마이크로 프론트 엔드 처리의 여러 REST 서비스를 구현하여 마이크로 서비스 를 구현 하기 용이합니다. 


 - 홈페이지 : https://www.krakend.io/

기능:
    . 고성능 API 게이트웨이
    . 무제한 엔드포인트 및 백엔드 지원
    . 모니터링, 캐싱, 사용자 할당량, 레이트 리미팅 제공
장점:
    . 간단한 설정 및 사용
    . 다양한 프로토콜과의 호환성
단점:
    . 설정 파일을 통한 관리가 필요

 

 

 

KrakenD 다운로드 및 설치

 

KrakenD CE v2.7.0
Community Edition. Latest release: July 18, 2024

* 다운로드 : https://www.krakend.io/download/

* 설치 참고 : https://www.krakend.io/docs/overview/installing/

1. CentOS, Oracle Linux, and Redhat (yum, dnf)
The installation process requires following these steps:
  - Install the repo package
  - Install the KrakenD package
  - Start the KrakenD service

$rpm -Uvh https://repo.krakend.io/rpm/krakend-repo-0.2-0.x86_64.rpm
yum install -y krakend
systemctl start krakend

 

2. Debian, Ubuntu 24.04

   - Key 추가 
   - download sources.list에 repo를 추가하십시오
   - apt update : 패키지 목록 업데이트
   - apt-get 명령으로 KrakenD 서비스 설치

$apt install -y ca-certificates gnupg
apt-key adv --keyserver keyserver.ubuntu.com --recv 5DE6FD698AD6FDD2
echo "deb https://repo.krakend.io/apt stable main" | tee /etc/apt/sources.list.d/krakend.list
apt-get update
apt-get install -y krakend

** 설치가 되지 않는 경우가 있는데 이때를 위해서  페이지 맨 하단에 오류 조치 방안을 추가 해 두었습니다.

 

[apt-get install krakend]

root@couple:/proc# apt install krakend
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  krakend
0 upgraded, 1 newly installed, 0 to remove and 44 not upgraded.
Need to get 44.5 MB of archives.
After this operation, 117 MB of additional disk space will be used.
Get:1 https://repo.krakend.io/apt stable/main amd64 krakend amd64 2.7.0-1 [44.5 MB]
Fetched 44.5 MB in 27s (1,671 kB/s)
Selecting previously unselected package krakend.
(Reading database ... 83422 files and directories currently installed.)
Preparing to unpack .../krakend_2.7.0-1_amd64.deb ...
Unpacking krakend (2.7.0-1) ...
Setting up krakend (2.7.0-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/krakend.service → /usr/lib/systemd/system/krakend.service.
Scanning processes...
Scanning linux images...

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.

 

3. Docker Run :
  Docker Image  : https://hub.docker.com/r/devopsfaith/krakend/

$docker run -p 8080:8080 -v $PWD:/etc/krakend/ devopsfaith/krakend run --config /etc/krakend/krakend.json

 

3. 패키지로 설치하면 아래와 같이 systemd로 실행 됩니다.

 $ sudo systemctl status krakend 로 확인하면 됩니다.   
 $ sudo systemctl start krakend
 $ sudosystemctl stop krakend

 

$ ps -ef | grep krakend
krakend      735       1  2 12:39 ?        00:00:04 /usr/bin/krakend run -c /etc/krakend/krakend.json

 


KrakenD  실행

 

couple@couple:/$ krakend run -h
 l▄█                          ▄▄▌                               l██████▄µ
▐███  ▄███v▐███▄██Hk██████▄  x██▌ ,▄███v ▄██████▄  a██▌█████ ▄  ███▀mm▀▀███k
▐███▄███▀  ▐█████▀"m▀▀"m▀███ x███▄███j  ███▀""▀███ ████▀m▀██ █H ███     m███
▐██████▌   ▐███⌐  ,▄████████Mx██████▄  x██████████M███▌   ███H ███     ,███
▐███v▀███µ ▐███   ███▌  ,███Mx███m▀███  ███▄```▄▄` ███▌   ███H ███,,,l▄███▀
▐███  m███▄▐███   m█████████Mx██▌  m███▄`▀███████v ███▌   ███H █████████▀
                     ``                     `'`
Version: 2.7.0

Runs the KrakenD server.

Usage:
  krakend run [flags]

Examples:
krakend run -d -c config.json

Flags:
  -c, --config string   Path to the configuration file
  -d, --debug count     Enables the debug endpoint
  -h, --help            help for run
  -p, --port int        Listening port for the http service

 

 

edit "krakend.json"

{
    "$schema": "https://www.krakend.io/schema/v2.7/krakend.json",
    "version": 3
}

 

Krakend 실행

# Krakend 설정 확인

$ krakend check --config  krakend.json
Parsing configuration file: krakend.json
Syntax OK!

# Krakend 실행
$ krakend run -c krakend.json

 

# Krakend 실행

$krakend run -c krakend.json

 

# Krakend docker 로 실행

$docker run -p "8080:8080" -v $PWD:/etc/krakend/ devopsfaith/krakend:2.7.0 run -c krakend.json

 

 

Krakend 실행 상태 확인 health check

# http://localhost:8080/__health 로 상태 체크

$ curl http://localhost:8080/__health
{"agents":{},"now":"2024-08-03 12:47:03.061689953 +0000 UTC m=+426.051234313","status":"ok"}couple@couple:~$

 

 


KraKenD 설치가 안될때 추가 정리

Ubuntu 버전이 최신이라서 KrakenD와 버전차이가 있는지 Key 설치가 안되 패키지 설치가 오류가 났었습니다.

이럴때는 다음과 같은 순서대로 하라고 하는데 " https://repo.krakend.io/apt/gpg.key"  404 Not Found로 작동이 또 안되네요 

[ for Ubuntu24.04 Security]
 - Ubuntu24에서 apt-key command is deprecated and the keyserver is failing 으로 설치가 되지 않는 경우
 
(1) Download the key:
  wget -O- https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x5DE6FD698AD6FDD2 |
     sudo gpg --dearmor -o  /usr/share/keyrings/repository-archive-keyring.gpg

  * 404 Error 
   wget -qO - https://repo.krakend.io/apt/gpg.key | 
    sudo gpg --dearmor -o /usr/share/keyrings/krakend-archive-keyring.gpg


(2) Add the repository with the key:
echo "deb [signed-by=/usr/share/keyrings/krakend-archive-keyring.gpg] https://repo.krakend.io/apt stable main" | sudo tee /etc/apt/sources.list.d/krakend.list

(3) Update your package lists:
  sudo apt-get update

(4) re try install:
  apt-get install -y krakend

 

아래와 같이 키이름을 직접 넣고 작동을 해 보았더니 됩니다. 다만 apt-key는 deprecated 되었으므로 다른 방법으로 실행하면 됩니다.

root@couple:/DevApps/app_src# apt-key adv --keyserver keyserver.ubuntu.com --recv 5DE6FD698AD6FDD2
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Executing: /tmp/apt-key-gpghome.4J7q9Ukhoc/gpg.1.sh --keyserver keyserver.ubuntu.com --recv 5DE6FD698AD6FDD2
gpg: key 5DE6FD698AD6FDD2: public key "Devops Faith Package Manager <packages@devops.faith>" imported
gpg: Total number processed: 1
gpg:               imported: 1

 

정상적으로 Repo가 작동되는지 확인합니다.

Get:6 https://repo.krakend.io/apt stable/main amd64 Packages [8,893 B]

root@couple:/DevApps/app_src# sudo apt-get update
Hit:1 http://kr.archive.ubuntu.com/ubuntu noble InRelease
Hit:2 http://security.ubuntu.com/ubuntu noble-security InRelease
Hit:3 http://kr.archive.ubuntu.com/ubuntu noble-updates InRelease
Get:4 https://repo.krakend.io/apt stable InRelease [4,314 B]
Hit:5 http://kr.archive.ubuntu.com/ubuntu noble-backports InRelease
Get:6 https://repo.krakend.io/apt stable/main amd64 Packages [8,893 B]
Fetched 8,893 B in 2s (4,075 B/s)
Reading package lists... Done
W: https://repo.krakend.io/apt/dists/stable/InRelease: Key is stored in legacy trusted.gpg keyring

 

출처: https://couplewith.tistory.com/619 10가지 API 플랫폼 비교 [AgileBus - IT 기술자를 위한 최신 기술 Trends]

728x90
반응형