Kong API Gateway ทำความรู้จัก และการติดตั้ง (ตอนที่ 1)
Table of contents
Intro
สวัสดีครับ บทความนี้พามารู้จักกับ Kong API Gateway โดยจะเน้นพาทำแต่จะไม่บรรยายอะไรมาก ซึ่งจะแบ่งออกเป็น 2 ตอนดังนี้
ทำความรู้จัก
Kong API Gateway คือ Open-source Software โดยเป็นเครื่องมือที่ทำหน้าที่เป็น API Gateway ที่เป็นตัวกลางในการจัดการ Microservices ต่าง ๆ มาไว้ที่เดียว เพื่อควบคุมและจัดการให้ง่ายขึ้น ไม่ว่าจะเป็นเรื่องความปลอดภัย สิทธิ์การเข้าถึง การ Monitoring การกำหนด Rate Limiting เป็นต้น
Kong API Gateway จะมี 2 รุ่น ดังนี้
- Kong EE (Enterprise Edition) รุ่นเสียเงิน (มีทดลองใช้งาน) มีหน้า Admin (GUI) ให้ใช้งาน
- Kong CE (Community Edition) รุ่นฟรี ไม่มีหน้า Admin (GUI) ให้ใช้งาน
รูปภาพ แสดงการเชื่อมต่อกับ Clients กับ API Gateway และเป็นเครื่องมือช่วยสำหรับจัดการกับ Microservices
รูปภ าพ แสดงการเชื่อมต่อกับ Clients กับ Microservices แบบตรง ๆ
จะเห็นว่าแบบที่มี API Gateway เข้ามาช่วยจัดการจะทุก Microservices จะมารวมที่ API Gateway จากนั้น Clients ต่างจะเข้าถึง Microservices ผ่าน API Gateway ดังนั้นข้อดีที่สำคัญมีดังนี้
- ง่ายต่อการบริหารจัดการ
- ความสะดวกในการพัฒนา Clients เพราะ API Gateway ไม่ได้เปลี่ยนบ่อย ทำให้สามารถเปลี่ยน Endpoints (URL) ของ Microservices จาก Resources ได้ตลอดโดยไม่กระทบกับ Clients ที่ยังใช้งานอยู่ เพราะ Endpoints ของ API Gateway ไม่ได้เปลี่ยนแปลง
การติดตั้ง
ต่อไปจะเป็นการติดตั้ง Kong CE
(Community Edition) โดยใช้ Docker เป็นตัวช่วยในการติดตั้ง สิ่งที่ต้องเตรียมและต้องมีมีดังนี้
- Docker
- Public IP (หากต้องการให้ Public)
- สร้าง Docker Network
docker network create kong-net
- สร้าง Database และเชื่อมต่อเข้ากับ Docker Network
docker volume create pg_data
docker run -d --name kong-database \
--network=kong-net \
--restart unless-stopped \
-v pg_data:/var/lib/postgresql/data \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
-e "POSTGRES_PASSWORD=kong" \
postgres:9.6
- สั่ง 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" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
kong:latest kong migrations bootstrap
- สั่งให้ Kong เชื่อมโยงกับ Database พร้อมกับ Start Kong
docker run -d --name kong \
--restart unless-stopped \
--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_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 8001:8001 \
-p 8444:8444 \
kong:latest
สามารถใช้งาน Kong ผ่าน http://localhost:8001
คำอธิบายการใช้งาน Port ต่าง ๆ ของ Kong
- 8000 สำหรับการเข้าถึง API Gateway ผ่าน HTTP Request
- 8443 สำหรับการเข้าถึง API Gateway ผ่าน HTTPS Request
- 8001 สำหรับการตั้งค่า Kong ผ่าน HTTP Request
- 8444 สำหรับการตั้งค่า Kong ผ่าน HTTPS Request
เสร็จแล้วแต่...
เสร็จแล้วครับ แต่ Kong จะไม่มี GUI ให้เข้าใช้งานนะครับ การใช้งาน Kong ต้องใช้งานผ่านการสั่ง CURL และอาจจะไม่ค่อยสะดวกเท่าไหร่ดังนั้นจึงมีนักพัฒนาหลายคนช่วยทำ Web UI เพื่อจะช่วยใช้งาน Kong ให้ง่ายขึ้น เช่น Konga