ตัวอย่าง
ต้องการสร้าง 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
ขั้นตอน
- สร้างโปรเจค .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 ดังนี้