Bài 6: Dùng Kong Gateway để triển khai API Gateway cho hệ thống Microservices trên Microk8s

Chào các bạn, Tiếp tục series microk8s thì đây là phần mình Reseach lâu nhất và cách deploy một kiến trúc microservices KONG là gì? Kong là Cổng API Microservice Dàn hợp. Kong cung cấp một lớp trừu tượng linh hoạt quản lý an toàn giao tiếp giữa máy khách và microservice thông qua API.

Chào các bạn, Tiếp tục series microk8s thì đây là phần mình Reseach lâu nhất và cách deploy một kiến trúc microservices

KONG là gì?

  • Kong là Cổng API Microservice Dàn hợp. Kong cung cấp một lớp trừu tượng linh hoạt quản lý an toàn giao tiếp giữa máy khách và microservice thông qua API. Còn được gọi là cổng API, phần mềm trung gian API hoặc trong một số trường hợp lưới dịch vụ. Nó có sẵn dưới dạng dự án nguồn mở vào năm 2015, các giá trị cốt lõi của nó là hiệu suất cao và khả năng mở rộng.

*Kong là một ứng dụng Lua chạy trong Nginx và được thực hiện nhờ lua-nginx-module

Tại sao chúng ta lại sử dụng KONG

Nếu bạn đang xây dựng cho Web, Mobile hoặc IoT (Internet of Things), bạn có thể sẽ cần phải có chức năng chung để chạy phần mềm thực tế của bạn. Kong có thể giúp bằng cách đóng vai trò là cổng (hoặc sidecar) cho các yêu cầu microservice trong khi cung cấp cân bằng tải, ghi nhật ký, xác thực, giới hạn tốc độ, biến đổi và nhiều hơn nữa thông qua các plugin.

image.png

Nhưng chắc chắn, Kong là công cụ mẫu sẽ giúp tăng tốc thời gian phát triển và nó là hỗ trợ các plugin có thể định cấu hình. Và cộng đồng hỗ trợ phát triển và làm cho nó ổn định.

  • Rất nhiều plugin xác thực
  1. JWT
  2. LDAP (được sử dụng nhiều nhất)
  3. OAuth2
  • Puglin Bảo mật:
  1. CL
  2. CORS
  3. Dynamic SSL
  4. IP Restriction
  • Plugin kiểm soát Traffic là một rất hữu ích cho chi phí hạn chế như giới hạn tỷ lệ, giới hạn kích thước yêu cầu, giới hạn tốc độ phản hồi và những người khác.
  • Plugin Analytics and monitoring trực quan hóa, kiểm tra và giám sát lưu lượng API như Prometheus, Data Dog và RunScope.
  • Transformation plugin that transform request and responses on the fly such as Request Transformer, Response Transformer.
  • Logging plugin that log request and response data using the best transport for your infrastructure: TCP, UDP, HTTP, StatsD, Syslog and others.

Mình đã giới thiệu sơ lượt về Kong API Gateway , bạn có thể tham khảo thêm ở trang chủ https://konghq.com/

Bây giờ mình thực hiện cấu hình như sau:

Trong bài trước thì mình đã hướng dẫn các bạn build 2 image service01 và service02.

Bài 5: Cấu hình Jenkins trên Ubuntu 22.04 và viết Pipeline Build Service

IP Hostname vCPU RAM DISK
127.0.0.1 Host 8 core 32G SSD 500G
192.168.56.2 microk8s-master-1 1 core 2G 50G
192.168.56.3 microk8s-master-2 1 core 2G 50G
192.168.56.4 microk8s-master-3 1 core 2G 50G
192.168.56.5 microk8s-worker-1 1 core 2G 50G
192.168.56.6 microk8s-worker-2 1 core 2G 50G
192.168.56.7 microk8s-worker-3 1 core 2G 50G
192.168.56.8 microk8s-worker-4 1 core 2G 50G

Hiện tại Kong hỗ trợ cài đặt có dùng databases (DB-mode) hoặc không dùng database (DB-less-mode)

image.png

Ở đây mình sử dụng DB-less-mode để lưu cấu hình Kong

Bước 1: Cấu hình Kong Controller Ingress

ssh ubuntu@192.168.56.2

Chúng ta tiến hình apply kong controller ingress, ở đây mình có nghiên cứu nhiều bài viết và đưa ra một file chuẩn bên dưới, các bạn có thể lấy chạy luôn hoặc là custom theo yêu cầu của các bạn, để thực hiện ta sử dụng lệnh như sau

microk8s kubectl apply -f https://gist.githubusercontent.com/tdduydev/2b875c579a2ef53f68053e4e5af5b90b/raw/deef2792d33db7fb62c784421c447731f1d5808d/all-in-one-dbless.yaml

Screenshot 2023-01-22 at 1.11.16 AM.png

Nội dung tiệp all-in-one-dbless.yaml

Tiếp tục apply cấu hình kong ingress

microk8s kubectl apply -f https://gist.githubusercontent.com/tdduydev/1d8c8f270e28d022cd6cdfb06b6a4484/raw/02ba2bdc5c5c6ae0996a40340e6f3a0e6bc965c2/kong-ingress.yaml

Screenshot 2023-01-22 at 1.12.22 AM.png

Nội dung tiệp kong-ingress.yaml

Bước 2: Cấu hình service01 và service02

Service01

microk8s kubectl apply -f  https://gist.githubusercontent.com/tdduydev/e1e50da183eff226f7b2fc5e39781d8c/raw/97eb61e0debbd76a9c42f61e01e47054653334c9/service01-deployment.yaml

Screenshot 2023-01-22 at 1.14.59 AM.png

Nội dung tiệp service01-deployment.yaml

Service02

microk8s kubectl apply -f  https://gist.githubusercontent.com/tdduydev/e3b20b53d33302d654cd1b058a283562/raw/44553ddf0f142431fc1c394a25e89c8a4e513255/service02-deployment.yaml

Nội dung tiệp service02-deployment.yaml

Bước 3: Cấu hình Kong ingress cho Service01 và Service02

Service01

 microk8s kubectl apply -f https://gist.githubusercontent.com/tdduydev/0f43b50aeed7d1a2cd51cc6dcf307ace/raw/f70bab1ac04d98280777e21821ca530690403285/kong-ingress-service01.yaml

Screenshot 2023-01-22 at 1.30.00 AM.png

Nội dung tiệp kong-ingress-service01.yaml

Service02

 microk8s kubectl apply -f https://gist.githubusercontent.com/tdduydev/6e366ab62b4d01e84352f3e616627201/raw/a49523cc901736875e7af33e0b54d633fc2c927c/kong-ingress-service02.yaml

Screenshot 2023-01-22 at 1.32.27 AM.png

Nội dung tiệp kong-ingress-service02.yaml

Sau khi apply cấu hình thành công ta check cấu hình có đúng hay không bằng cách vào đường dẫn:

  1. http://192.168.56.5/service01

Screenshot 2023-01-22 at 1.35.42 AM.png

  1. http://192.168.56.5/service02

Screenshot 2023-01-22 at 1.36.12 AM.png

Như vậy các bạn đã tiến hành cài đặt thành công Kong Api Gateway

❤️❤️❤️ Hôm nay mùng 1 tết năm con Mèo 2023, Chúc mọi người một các tết vui vẻ bên gia đình ❤️❤️❤️

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ