ลองเจ้าตัว Kong ทำ api-gate-way[Part0]: Install & concept

Supanut Laddayam
3 min readMar 30, 2021

--

What is Kong !?

เจ้า Kong 🦍 เป็น API-gate-way สามารถนำมาประยุกต์ใช้กับตัว microservice-architecture (ติดตามต่อไป part ต่อๆไป part นี้ขอเป็นการอธิบาย concept และการติดตั้ง kong กันก่อน)

kong architecture

เทียบตัว traditional กับตัว Kong

traditional vs Kong

สังเกตจะพบว่าในแบบ Traditional จะเป็นการ reverse proxy ไปยัง route ต่างๆ ของแต่ละ service ซึ่งจะเกิดการซ้ำเกิดขึ้นเช่นการทำ authentication, rate-limit และ logging เป็นต้น ซึ่งปัญหานี้ถูกแก้โดยเจ้าคองนั่นเอง โดยคองจะรวมตัว authen, rate limit… (ในคองเรียกว่า “Plugin”)ไว้ในที่เดียวโดยจะวางคั่นก่อนจะเข้า routeservice ต่างๆ

Kong 4 component

  1. Service: ปลายทางที่ต้องการให้ kong ส่งต่อ request ไปหา (server / service)
  2. Route: path ที่ client เรียกเข้ามาหา kong โดย route จะถูกผูกอยู่กับ service (มีมากกว่า 1 route ได้)
  3. Consumer: ผู้ที่จะเรียกใช้ kong (มองว่าเป็น server / application)
  4. Plugin: authentication, rate limiting, monitoring service

Kong default port

8000: สำหรับ HTTP request จะวิ่งผ่าน port นี้ แล้วส่งต่อไปยัง microservice / endpoint

8443: สำหรับ HTTPS request จะวิ่งผ่าน port นี้ แล้วส่งต่อไปยัง microservice / endpoint

8001: สำหรับ config การทำงาน HTTP request ให้กับ kong

8444: สำหรับ config การทำงาน HTTPS request ให้กับ kong

กรณีใช้ HTTP จะกำหนด config kong ผ่าน Port 8001 และเรียกใช้งานผ่าน Port 8000

กรณีใช้ HTTPS จะกำหนด config kong ผ่าน Port 8444 และเรียกใช้งานผ่าน Port 8443

Install Kong with Docker

จำเป็นต้องมีตัว docker และตัว postgresQL กันก่อน เมื่อติดตั้งสร็จเรียบร้อยแล้ว มาลุยกันต่อ

**ปล. Kong รองรับ Database เลือก 2 อย่างคือ PostgresQL และ Cassanda (ผมใช้ postgresQL นะครับ อิ___อิ)

1.สร้าง Docker network

$ docker network create kong-net

2.Start database

$ docker run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
-e "POSTGRES_PASSWORD=kong" \
postgres:9.6

3.Migration database

$ docker run --rm \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_USER=kong" \
-e "KONG_PG_PASSWORD=kong" \
kong:latest kong migrations bootstrap

4.Start kong

$ docker run -d --name kong \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_USER=kong" \
-e "KONG_PG_PASSWORD=kong" \
-e "KONG_CASSANDRA_CONTACT_POINTS=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, 0.0.0.0:8444 ssl" \
-p 8000:8000 \
-p 8443:8443 \
-p 127.0.0.1:8001:8001 \
-p 127.0.0.1:8444:8444 \
kong:latest

มาดูผลกัน

http://localhost:8001

มันคืออิหยังวะ ??

มันก็คือ config ของเจ้าตัว kong นั่นเอง

. . . ก็ขอ check point ไว้ตรงนี้ก่อน part ต่อไปเราจะมาทำ api-gate-way ของ kong สรุปกันหน่อยว่าใน part นี้เราได้เรียนรู้เรื่องอะไรบ้าง

  • Kong คืออะไร
  • concept ของ kong
  • ติดตั้ง kong

-ขอบคุณคร้าฟฟ-

ต่อ PART1 >> click <<

--

--