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
- JWT
- LDAP (được sử dụng nhiều nhất)
- OAuth2
- Puglin Bảo mật:
- CL
- CORS
- Dynamic SSL
- 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:
Như vậy các bạn đã tiến hành cài đặt thành công Kong Api Gateway