สร้าง API Gateway สำหรับ Microservice ด้วย Ocelot

wk
2 min readJan 21, 2020

--

ตัวอย่าง

ต้องการสร้าง API Gateway สำหรับ Microservice สอง Service คือ Service1 และ Service2 โดย Map URL ของ Service1 และ Service2 ผ่าน Gateway ดังนี้

  • http://gateway/s1/wf ให้ชี้ไปที่ http://service1/WeatherForecast
  • http://gateway/s2/wf ให้ชี้ไปที่ http://service2/WeatherForecast

โดยจะ Deploy Service1 Service2 และ Gateway ด้วย Docker Compose

ขั้นตอน

  1. สร้างโปรเจค .NET Core ชื่อ Service1 Service2 และ Gateway
dotnet new webapi --output src/Service1
dotnet new webapi --output src/Service2
dotnet new webapi --output src/Gateway

2. เพิ่ม Dockerfile ของแต่ละโปรเจค ดังนี้

  • src/Service1/Dockerfile
  • src/Service2/Dockerfile
  • src/Gateway/Dockerfile

3. ติดตั้ง Ocelot ในโปรเจค Gateway

dotnet add src/Gateway/Gateway.csproj package Ocelot

4. เพิ่ม Config และโหลด Ocelot ในโปรเจค Gateway

  • เพิ่มไฟล์ src/Gateway/ocelot.json
  • โหลด ocelot.json ในไฟล์ src/Gateway/Program.cs
  • เพิ่ม AddOcelot และ UseOcelot ในไฟล์ src/Gateway/Startup.cs
  • Update ไฟล์ src/Gateway/Gateway.csproj

5. เพิ่ม Config, Build และ Run โปรเจค ด้วย Docker Compose

  • เพิ่มไฟล์ docker-compose.yml
  • Build และ Run
docker-compose build
docker-compose up

6. ทดสอบ Gateway ผ่าน Web Browser

จะเห็นว่า Request ถูก Redirect ไปยัง Service1 และ Service2 ผ่าน Gateway ที่ Config ไว้ในไฟล์ src/Gateway/ocelot.json โดยสังเกตได้จาก Log ของ Docker Compose ดังนี้

--

--

No responses yet