- vừa được xem lúc

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

0 0 32

Người đăng: DUY TRAN

Theo Viblo Asia

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.

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)

Ở đâ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

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

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

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

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

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

  1. http://192.168.56.5/service02

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 ❤️❤️❤️

Bình luận

Bài viết tương tự

- vừa được xem lúc

Performance Optimization 102: Scalability và câu chuyện về ảo tưởng distributed

Performance, scalability cùng câu chuyện nỗi ám ảnh và những ảo tưởng của một developer về cái gọi là hệ thống distributed. .

0 0 63

- vừa được xem lúc

Microservices là gì?

Chào các bạn, sau một thời gian dài bận bịu với các dự án sử dụng các công nghệ cũ, hoặc các công nghệ do khách hàng chọn lựa từ trước, mình bỗng nhiên ngỡ ngàng khi nghe phong phanh dự án mới sẽ làm

0 0 45

- vừa được xem lúc

Tìm hiểu về Microservices - Phần 1: Microservices là gì?

Hiện nay kiến trúc Microservices đang là chủ đề được cộng đồng Developer vô cùng quan tâm. Bạn có thể tìm thấy khá nhiều tài nguyên giới thiệu và nói về tính chất cũng như lợi ích của Microservices tu

0 0 55

- vừa được xem lúc

Keycloak Secure any application

In life, there are many problems posed to the software industry . But most of the software that we create has a security and decentralization mechanism and user management.

0 0 49

- vừa được xem lúc

Microservices: Những sai lầm và chiến lược chuyển đổi từ Monolith

Thay vì viết một bài hoặc một seri về Microservices, mình nghĩ nên recap luôn những vấn đề, thách thức, khó khăn khi chuyển đổi hệ thống Monolith lên Microservices. Microservices là gì.

0 0 68

- vừa được xem lúc

Tìm hiểu về Service Mesh

Mở đầu. Kiến trúc Microservice ngày càng trở nên phổ biến và trở thành lựa chọn hàng đầu trong quá trình phát triển phần mềm.

0 0 42