ลองเจ้าตัว Kong ทำ api-gate-way[Part0]: Install & concept
What is Kong !?
เจ้า Kong 🦍 เป็น API-gate-way สามารถนำมาประยุกต์ใช้กับตัว microservice-architecture (ติดตามต่อไป part ต่อๆไป part นี้ขอเป็นการอธิบาย concept และการติดตั้ง kong กันก่อน)
เทียบตัว traditional กับตัว Kong
สังเกตจะพบว่าในแบบ Traditional จะเป็นการ reverse proxy ไปยัง route ต่างๆ ของแต่ละ service ซึ่งจะเกิดการซ้ำเกิดขึ้นเช่นการทำ authentication, rate-limit และ logging เป็นต้น ซึ่งปัญหานี้ถูกแก้โดยเจ้าคองนั่นเอง โดยคองจะรวมตัว authen, rate limit… (ในคองเรียกว่า “Plugin”)ไว้ในที่เดียวโดยจะวางคั่นก่อนจะเข้า routeservice ต่างๆ
Kong 4 component
- Service: ปลายทางที่ต้องการให้ kong ส่งต่อ request ไปหา (server / service)
- Route: path ที่ client เรียกเข้ามาหา kong โดย route จะถูกผูกอยู่กับ service (มีมากกว่า 1 route ได้)
- Consumer: ผู้ที่จะเรียกใช้ kong (มองว่าเป็น server / application)
- 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 <<