Kong API Gateway được thiết kế hỗ trợ cho việc xây dựng hệ thống microservice. Bài viết này hướng dẫn các bạn cài đặt Kong qua docker, đồng thời cài đặt open source dashboard.
Để sử dụng Kong API qua Docker, bạn cần cài đặt Docker. Kong cần kết nối vào database hoặc là Postgresql hoặc là Casandra. Bài này chỉ tập trung hướng dẫn kết nối vào Postgresql
Cài đặt Kong
Sau khi đã có Docker bật terminal lên rồi gõ lệnh như sau:
docker network create my-net
Lệnh này tạo một network bridge cho phép các container chúng ta sắp tạo nhìn thấy nhau và kết nối được với nhau qua tên host.
Tạo container Postgresql dùng baseimage là Alpine cho nhẹ
docker run -d --name kong-database \
--network my-net \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
postgres:alpine
Chạy một container tạm thời (ephemeral, chạy xong rồi xoá). Container này sử dụng image kong:latest sau đó chạy lệnh kong migrations up để khởi tạo dữ liệu vào container kong-database vừa khởi tạo ở bước trên.
docker run --rm \
--network my-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
kong:latest kong migrations up
Thực sử khởi động container kong, chạy ở chế độ detach mode, nối vào container kong-database, đặt giá trị cho một số biến môi trường -e, ánh xạ cổng 8000, 8443, 8001 và 8444 vào host
docker run -d --name kong \
--network my-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
-e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
-e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001" \
-e "KONG_ADMIN_LISTEN_SSL=0.0.0.0:8444" \
-p 8000:8000 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
kong:latest
Nối vào terminal của container kong
docker exec -it kong /bin/sh
Gõ lệnh với kong CLI
sh-4.2# kong health
nginx.......running
Kong is healthy at /usr/local/kong
sh-4.2# kong version
0.12.1
Mấy tay lập trình Kong API Gateway vui tính phết, tạo hẳn một lệnh kong roar (gầm) để in ra console hình Khỉ đột leo tháp.
sh-4.2# kong roar
-- Kong, Monolith destroyer.
--
-- /\ ____
-- <> ( oo )
-- <>_| ^^ |_
-- <> @ \
-- /~~\ . . _ |
-- /~~~~\ | |
-- /~~~~~~\/ _| |
-- |[][][]/ / [m]
-- |[][][[m]
-- |[][][]|
-- |[][][]|
-- |[][][]|
-- |[][][]|
-- |[][][]|
-- |[][][]|
-- |[][][]|
-- |[][][]|
-- |[|--|]|
-- |[| |]|
-- ========
-- ==========
-- |[[ ]]|
-- ==========
Tạo API forward
Bước tiếp theo hãy thực hành theo hướng dẫn ở đây để thêm request routing
Tạo một API forward
curl -i -X POST \
--url http://localhost:8001/apis/ \
--data 'name=example-api' \
--data 'hosts=example.com' \
--data 'upstream_url=http://mockbin.org'
Gõ lệnh để kiểm tra với API forward vừa được tạo
curl -i -X GET \
--url http://localhost:8000/ \
--header 'Host: example.com'
Cài đặt dashboard
Cài Kong Dashboard open source https://github.com/PGBI/kong-dashboard
docker run --rm --network my-net -p 8080:8080 pgbi/kong-dashboard start --kong-url http://kong:8001
KongA cũng là một lựa chọn dashboard open source khác. Cài đặt cần có 2 bước:
docker run -d --name kongadb \
--network my-net \
-e "POSTGRES_USER=konga" \
-e "POSTGRES_PASSWORD=k0ng@123-" \
-e "POSTGRES_DB=konga_database" \
postgres:alpine
docker run -d -p 1337:1337 \
--name konga \
--network my-net \
-e "DB_ADAPTER=postgres" \
-e "DB_HOST=kongadb" \
-e "DB_USER=konga" \
-e "DB_PASSWORD=k0ng@123-" \
-e "DB_DATABASE=kongadb" \
-e "NODE_ENV=development" \
pantsel/konga
Bình luận