Kong Gateway là gì? Dùng Kong Gateway triển khai API gateway cho hệ thống

1531
07-02-2023
Kong Gateway là gì? Dùng Kong Gateway triển khai API gateway cho hệ thống

Kong Gateway là một API gateway mã nguồn mở phổ biến nhất thế giới. Trong bài viết này, hãy cùng Bizfly Cloud đi sâu vào tìm hiểu Kong Gateway là gì, lợi ích khi sử dụng cũng như cách thiết lập như thế nào nhé!

Kong Gateway là gì?

Kong Gateway là một nền tảng API mã nguồn mở, đóng vai trò là phần mềm trung gian (middleware) và có thể mở rộng bằng cách sử dụng plugin. Kong được các nhà phát triển và doanh nghiệp CNTT sử dụng để tạo các gateway tới API, quản lý chúng và điều chỉnh để mở rộng quy mô.

Kong Admin API là một API RESTful và có thể được sử dụng để định cấu hình nền tảng, quản lý người dùng và bật hoặc tắt plugin.

Kong chạy trước bất kỳ API RESTful nào và được mở rộng thông qua Plugin, cung cấp chức năng và dịch vụ bổ sung ngoài nền tảng cốt lõi.

Để hiểu rõ hơn về hệ thống, đây là quy trình yêu cầu điển hình của API sử dụng Kong:

Khi Kong đang chạy, mọi request được gửi tới API sẽ đến Kong trước tiên và sau đó nó sẽ được ủy quyền cho API cuối cùng. Ở giữa các request và response, Kong sẽ thực thi bất kỳ plugin nào mà bạn đã quyết định cài đặt, trao quyền cho các API của bạn. Kong thực sự trở thành entry point cho mọi API request.

Kong Gateway là gì

Kong Gateway đóng vai trò là phần mềm trung gia và mở rộng bằng cách sử dụng plugin

Kong hoạt động như thế nào?

Kong cần thiết lập 2 thành phần sau để hoạt động:

1. Kong server - Máy chủ HTTP được xây dựng dựa trên NGINX và thực hiện reverse proxy để chuyển các request của client tới các upstream service.

2. Kong datastore - Datastore lưu cấu hình Kong để không cần phải thực hiện database roundtrip trong khi không yêu cầu proxying request. Có thể sử dụng Apache Cassandra hoặc PostgreSQL.

Khi một API đang chạy Kong, mọi request của client gửi tới API sẽ đi qua Kong trước khi được ủy quyền cho API cuối cùng. Khi request đi qua Kong, nó sẽ thực thi bất kỳ plugin nào được cài đặt. Kong có thể được coi là một điểm vào cho các yêu cầu API của khách hàng.

Lợi ích của Kong

Kong Gateway là nền tảng mã nguồn mở, do đó nó miễn phí. Ngoài ra, một số lợi ích tiêu biểu của Kong Gateway là:

  • Kong là nền tảng có thể mở rộng nhanh chóng, hiệu năng cao
  • Dễ dàng tích hợp vào các hệ thống hiện có.
  • Được xây dựng bằng công nghệ đáng tin cậy như NGINX, Apache Cassandra hoặc PostgreSQL.
  • Có thể mở rộng chức năng thông qua các plugin đa dạng.
  • Có thể được triển khai trên đám mây hoặc vật lý.
  • Sử dụng thị trường API lớn của Kong Inc. API hiện có.
Kong Gateway là nền tảng có thể mở rộng nhanh chóng

Kong Gateway là nền tảng có thể mở rộng nhanh chóng

Thiết lập Kong Gateway

Đầu tiên, hãy đảm bảo rằng bạn đã cài đặt Kong trước khi bắt đầu.

Để bắt đầu với Kong gateway cần 3 bước:

  • Thêm một Service. Đây là ID mà Kong Gateway sử dụng để chỉ các API upstream và microservice mà nó quản lý.
  • Thêm một Router đến Service. Các Router chỉ định cách các request được gửi đến Service của chúng sau khi chúng đến API gateway. Một Service có thể có nhiều Router.
  • Thêm Plugin, cung cấp một hệ thống module để sửa đổi và kiểm soát các khả năng của Kong. 

Ví dụ: Để bảo mật API gateway của bạn, bạn có thể yêu cầu khóa truy cập để thiết lập bằng key-auth plugin. Plugin cung cấp nhiều chức năng, bao gồm kiểm soát truy cập, caching, rate limit, logging, v.v.

1. Thêm một Service

Kong hiển thị API Admin RESTful trên cổng 8001 cho phép bạn thay đổi cấu hình Kong, chẳng hạn như thêm Service và Router thông qua command line. Hãy bắt đầu bằng cách tạo một post request đến Admin API/Service Route.

``` curl -i -X POST \ --url http://localhost:8001/services/ \ --data 'tên=ví dụ-dịch vụ' \ --data 'url=http://mockbin.org' ```

Sau đó, tạo một example Service mới trỏ đến Mockbin API. Nhấn enter và hệ thống sẽ tạo mã trạng thái phản hồi là 201. Bạn sẽ thấy tên ví dụ Service trong response JSON cũng như một số thông tin khác.

2. Thêm một Router

Tiếp theo, tạo một Router cho một Service. Bắt đầu bằng cách gửi post request lên Admin API. Nhấn vào example Service mà bạn đã tạo trước đó và sau đó nhấn vào endpoint của Router cho example Service đó. Chỉ định host headers của example.com.

``` curl -i -X POST \ --url http://localhost:8001/services/example-service/routes \ --data 'hosts[]=example.com' ```

Bây giờ bạn đã có Router và Service, bạn đã sẵn sàng ủy quyền request của mình thông qua Kong Gateway. Hãy tiếp tục và đưa ra lệnh curl, nhưng lần này sử dụng cổng 8000.

``` curl -i -X GET \ --url http://localhost:8000/ \ --header 'Host: example.com' ```

Nếu bạn nhận được phản hồi thành công, giờ đây Kong sẽ chuyển tiếp các request được thực hiện tới localhost port 8000 tới URL mà bạn đã định cấu hình ở bước một - API Mockbin.

Nếu bạn thực hiện lại request tương tự và lần này loại bỏ header, bạn sẽ thấy mã 200, có nghĩa là yêu cầu thành công. Đó là một proxy thông qua Kong 1.3, vì vậy bạn có thể xem instance và bạn cũng có thể xem mức độ trễ mà proxy Kong thêm vào request. Khi bạn thực hiện ngày càng nhiều request, con số này sẽ giảm xuống vì Kong có thể lưu trữ response và request mà bạn thực hiện.

3. Thêm Plugin

Bây giờ, bạn sẽ cần thêm một plugin để bảo mật Service của mình. Để định cấu hình plugin key-auth cho Service mà bạn đã configure trong Kong Gateway, hãy đưa ra curl request như sau (sử dụng Admin API để tạo plugin):

``` curl -i -X POST \ --url http://localhost:8001/services/example-service/plugins/ \ --data 'name=key-auth' ```

Bắt đầu bằng cách nhấn vào Example Service mà bạn đã bắt đầu ở các bước trước đó để thêm plugin có tên là key-auth. Sau khi thực hiện yêu cầu, plugin key-auth sẽ có một số thông tin trong response JSON.

Sau đó, thực hiện request tương tự tới cổng 8000. Ngay lập tức, bạn sẽ nhận được thông báo 401 cho biết yêu cầu đó không được phép. Yêu cầu vẫn được ủy quyền thông qua Kong; Kong chỉ đang tìm kiếm xác thực khóa. Vì vậy, bây giờ bạn đã định cấu hình plugin key-auth, bạn sẽ thấy bạn có thể bảo mật bất kỳ Service nhanh như thế nào. Ngoài ra, bạn có thể chỉ định plugin cho các service, route hoặc consumer. Xác thực khóa cho phép bạn chọn ai có thể truy cập dịch vụ của mình, giúp bạn có nhiều quyền kiểm soát hơn đối với các microservice của mình.

Tiếp theo, định cấu hình plugin key-auth và thêm Consumer vào Service của bạn. Tạo Consumer thông qua restful API. Một lần nữa, sử dụng Admin API để truy cập endpoint của Consumer và thêm Consumer có tên Jason.

``` curl -i -X POST \ --url http://localhost:8001/consumers/ \ --data "username=Jason" ```

Sau đó, bạn sẽ thấy ID 201 được tạo cho Jason.

Để cung cấp thông tin đăng nhập chính cho Consumer của bạn, hãy sử dụng lại admin API dưới dạng yêu cầu sau thông qua endpoint Consumer/Jason/key-auth. Ở chỗ ghi key=ENTER_KEY_HERE, hãy nhập ID mà bạn thấy trong response JSON của Jason.

``` curl -i -X POST \ --url http://localhost:8001/consumers/Jason/key-auth/ \ --data 'key=ENTER_KEY_HERE' ```

Sau khi tạo thành công, Jason hiện có thông tin đăng nhập cần thiết để thực hiện yêu cầu. Nếu bạn quay lại và thực hiện yêu cầu đến cổng 8000, bạn vẫn giữ host header, ví dụ.com, nhưng bây giờ bạn phải thêm một trường có tên là apikey. Lấy key của Jason và điền vào. Bây giờ bạn thấy request bắt đầu hoạt động trở lại. Bạn sẽ nhận được phản hồi là 200.

Chúc các bạn thao tác thành công và đừng quên cập nhật các bài viết tiếp theo của Bizfly Cloud nhé!

>> Tìm hiểu thêm: API gateway là gì? Khi nào cần sử dụng API gateway?

Bizfly Cloud là nhà cung cấp dịch vụ điện toán đám mây với chi phí thấp, được vận hành bởi VCCorp.

BizFly Cloud là một trong 4 doanh nghiệp nòng cốt trong "Chiến dịch thúc đẩy chuyển đổi số bằng công nghệ điện toán đám mây Việt Nam" của Bộ TT&TT; đáp ứng đầy đủ toàn bộ tiêu chí, chỉ tiêu kỹ thuật của nền tảng điện toán đám mây phục vụ Chính phủ điện tử/chính quyền điện tử.

Độc giả quan tâm đến các giải pháp của BizFly Cloud có thể truy cập tại đây.

DÙNG THỬ MIỄN PHÍ và NHẬN ƯU ĐÃI 3 THÁNG tại: Manage.bizflycloud

SHARE