Hướng Dẫn Viết Docker Compose để Xây Dựng API Gateway Với ...
Có thể bạn quan tâm
- Contact
- About
- Rules & Privacy
Header Ads Widget
Ticker
6/recent/ticker-posts HomeLinuxHướng dẫn viết Docker Compose để xây dựng API Gateway với Kong và quản lý Kong bằng giao diện với Konga Hướng dẫn viết Docker Compose để xây dựng API Gateway với Kong và quản lý Kong bằng giao diện với Konga 15:57 Keywords: How to write Docker Compose to build API Gateway with Kong and manage Kong by GUI with KongaTrước khi nói đến Kong thì chúng ta cần phải nói sơ qua về Microservices trước đã và mình sẻ không nói dài dòng lý thuyết mà chỉ nói ngắn gọn ý chính theo cái mà mình hiểu được thôi nên vì vậy, các bạn ai vẫn muốn hiểu rõ hơn về những vấn đề mình chuẩn bị nói đây thì vui lòng tra google giúp mình nhé, mình chỉ hướng dẫn còn giải thích thì đơn giản thôi, ok vậy Microservices là gì?
Theo như mình biết bình thường khi chúng ta xây dựng một Application thì chúng ta sẻ xây dựng dưới dạng tập trung và được gọi là monolitd, nhưng monolitd chỉ có thể giúp ta với những Application nhỏ còn với một Application lớn với hệ thống khổng lồ, yêu cầu nhiều thứ, thì chúng ta cần phải tách từng phần ra thành một services nhỏ và chính vì thế chúng ta sẻ cần đến API Gateway để sử lý và khi chúng ta tách ra từng phần nhỏ như thế thì nó được gọi là Microservices
Thật ra có rất nhiều API Gateway để cho chúng ta lựa chọn, như của Amazon chẳng hạn, vậy tại sao ta lại chon Kong? - Thứ 1: Kong là một Open Sources và đơn nhiên nó miễn phí.
- Thứ 2: Có khả năng mở rộng dễ dàng.
- Thứ 3: Hiệu năng khủng, mình thì nghe nói thôi chứ cũng chưa test nó với Amazon trên thực tế thế nào.
- Thứ 4: Nó có nhiều Plugins hổ trợ.
Cách 1: Cài đặt Kong và Konga với Docker bình thường
Kong sử dụng 2 Database là Cassandra và Postgres nhưng mình sẻ hướng dẫn trên database PostgreSQL- Install Postgres:
- Prepare Database cho Kong:
- Install Kong:
- Prepare Database cho Konga:
- Install Konga (GUI):
Cách 2: Sử dụng Docker Compose
Đây là code của mình: version: '3.8' networks: kong-net: name: kong-net driver: bridge services: kong-database: image: postgres:9.6 container_name: kong-database environment: POSTGRES_USER: kong POSTGRES_DB: kong POSTGRES_PASSWORD: kong ports: - "1000:5432" volumes: - /root/docker-compose/kong/db-data:/var/lib/postgresql/data networks: - kong-net kong-migrations: image: kong:latest container_name: kong-migrations restart: on-failure depends_on: - kong-database links: - kong-database:kong-database environment: KONG_DATABASE: postgres KONG_PG_HOST: kong-database KONG_PG_USER: kong KONG_PG_PASSWORD: kong KONG_CASSANDRA_CONTACT_POINTS: kong-database entrypoint: sh -c "sleep 100 && kong migrations bootstrap --vv" networks: - kong-net kong: image: kong:latest container_name: kong restart: on-failure links: - kong-database:kong-database networks: - kong-net environment: KONG_DATABASE: postgres KONG_PG_HOST: kong-database KONG_PG_USER: kong KONG_PG_PASSWORD: kong KONG_CASSANDRA_CONTACT_POINTS: kong-database KONG_PROXY_ACCESS_LOG: /dev/stdout KONG_ADMIN_ACCESS_LOG: /dev/stdout KONG_PROXY_ERROR_LOG: /dev/stderr KONG_ADMIN_ERROR_LOG: /dev/stderr KONG_ADMIN_LISTEN: 0.0.0.0:8001, 0.0.0.0:8444 ssl ports: - "1001:8000" - "1002:8443" - "1003:8001" - "1004:8444" konga-prepare: image: pantsel/konga container_name: konga-prepare command: "-c prepare -a postgres -u postgresql://kong:kong@kong-database:5432/konga" networks: - kong-net restart: on-failure links: - kong-database:kong-database depends_on: - kong-database konga: image: pantsel/konga container_name: konga restart: on-failure links: - kong-database:kong-database depends_on: - kong-database networks: - kong-net environment: DB_ADAPTER: postgres DB_HOST: kong-database DB_PORT: 5432 DB_USER: kong DB_PASSWORD: kong DB_DATABASE: konga KONGA_HOOK_TIMEOUT: 120000 NODE_ENV: production ports: - "1005:1337"Ghi chú nhỏ tại đây:version: theo như mình hiểu thì đây là phiên bản của docker compose bạn muốn điền phiên bản nào cũng được, mình thì lấy phiên bản hiện tại là 3.8 vì hiện tại docker compose chỉ mới ra version 3.8 thôi
networks: đây là nơi mình sẻ khai báo mạng mình dùng để sử dụng, nếu như mình cho nó tự tạo network thì mình sẻ để là "drive: bridge" nhưng phần networks này thì lát mình sẻ tự tạo nó, nên vì thế mình sẻ để là "external: true".services: đây sẻ là nơi chứa các bản build image của docker, như trên mình đã khai báo các thành phần để cài đặt Kong, giả sử mình muốn build container Postgres thì mình đã khai báo tên service của mình là kong-database- image: mình lấy sẻ là postgres:9.6
- container_name: bạn muốn đặt tên gì cũng được nếu như không thích tên nó tự đặt
- ports: đây là nơi để port (1000:5432) trong đó 1000 chính là port giao tiếp ở máy host với các container trong docker, do docker mình là 1 máy tập trung chung nên mình sẻ sắp sếp port lại cho gọn gàng bằng cách đặt port theo ý mình 1000 tránh bị đụng port, khi ở ngoài mình truy cập 1000 nó sẻ kết nối tới port 5432 trong docker
- volumes: đây là nơi chứa data trong docker với máy ở ngoài của chúng ta (máy host) giả sử nếu mình đặt data trong docker thì khi mình gỡ docker ra đồng nghĩa vớiviệc data sẻ mất hết vì vậy mình sẻ để data ở ngoài bằng cách tạo volumes để khi mình chạy lại nó sẻ lấy data từ máy ngoài và data mình không bị mất, dễ backup nữa
- networks: networks ở đây khác networks mà mình hướng dẫn ở trên nghĩa là nó sẻ khai báo rằng uh tao sử dụng mạng kong-net đã tạo, đơn giản bạn chỉ cần hiểu rằng bạn sẻ lựa chọn mạng nào để sử dụng thế thôi chẳng gì hết
- environment: cái này bạn còn nhớ các dòng -e ở phía trên không? ở đây mình sẻ thêm một số biến vào cho nó như là user và password thay cho các dòng -e ở cách 1 vậy, thì đơn giản -e chính là viết tắt của environment chứ đâu
Tiếp đến mình sẻ tạo 1 file kong-compose.yml (do docker-compose chạy file.yml) với nội dung là đoạn code mà mình đã để ở trên cho các bạn rồi đấy, tạo luôn cả folder db-data để chứa database từ docker postgres nữa nhé
Sau đó mình gõ lệnh docker ps -a để kiểm tra thì như hình phía dưới hoàn toàn chưa có gì
Thực hiện chạy lệnh sau để run file kong-compose.yml docker-compose -f kong-compose.yml up -d --buildBình thường nếu như file có tên là docker-compose.yml thì ta chỉ cần gõ docker-compose up là nó sẻ chạy liền, còn đằng này mình thay đổi file yml thành 1 cái tên khác với cái tên mặt định nên phải sử dụng giá trị -f vào nữa với options -d là để build luôn và không cần kiểm tra lỗi, có show đi nữa cũng ra mấy cái lỗi tào lao mía lao không cần thiết và cũng không ảnh hưởng
Sau khi chạy xong bạn chạy lại lệnh docker ps -a để kiểm tra lại thì thấy nó đã tạo ra các services như những gì chúng ta config trong file compose rồi đấy
Giờ bạn thử test thử kong trước nhé, tại máy linux bạn gõ lệnh sau: curl -i http://localhost:1003Nếu như nó hiện ra 1 nùi chữ thế này nghĩa là ok rồi đó
Chắc cú hơn thì các bạn truy cập trên browser bằng IP của máy bạn với Port 1003 ( Ở đây Port 1003 là do mình tự đặt trong file compose mình nói ở trên ak đáng lý port defaults của nó là 8001 nhưng mình đã trỏ nó về 1003 cho máy host ở ngoài )
Ok như đã test 2 lần thì chắc chắn rằng kong đã được cài đặt rồi đấy, giờ chúng ta thực hiện truy cập konga để test luôn cả konga nha, ở đây konga của mình đặt là port 1005 nên mình chỉ cẩn sửa port lại là xong ak
Như giao diện trên là ngay từ lần đầu đăng nhập đầu tiên nó đã yêu cầu chúng ta tạo tài khoản admin rồi, nên vì thế mình sẻ tạo 1 tài khoản tại đây
Sau khi đăng nhập ta điền Link Access đến server Kong lúc đầu ta check vào, để có thể quản lý Kong bằng Konga
Ok như vậy là mình đã hướng dẫn cho các bạn xong cách thực hiện cài đặt Kong và Konga sử dụng Compose của Docker rồi đấy, trong quá trình chạy file compose up lên mà bạn check docker ps -a thằng kong nó không start mà cứ để restarting (1) giống như hình thì không sao, cứ down nó đi và up lại 1 lần nữa thì nó sẻ lên ak, có thể code của mình viết còn sai sót nhỏ chổ nào đó không đáng kể hoặc do thằng Kong nó cần thời gian để start nhưng nói chung mình thấy nó lâu quá nên mình down nó và up lại cho nó lẹ haha, tại lúc đầu mình test chục cái không sao, không hiểu sao đến lúc viết guide cho các bạn nó lại chậm start lên.Còn việc sử dụng Kong thì mình sẻ gợi ý cho các bạn như sau, "Routes => Services => Upstreams":Routes: các bạn thực hiện trỏ đường dẫn routes đến domain của webServices: sau khi thực hiện routes rồi tiếp tục trỏ đến địa chỉ IP của web nghĩa là trước đây nếu muốn đến web bằng domain thì các bạn chỉ việc khai báo domain add với địa chỉ ip là xong nhưng với kong thì bạn sẻ được đi qua một con server trung gian đó là Kong, nhưng nếu các bạn thực hiện upstream thì phần Host không trỏ đến IP nữa mà phải trỏ đến name của upstreamUpstream: Để bạn có thể trỏ đến 2 IP thực hiện quá trình loadbalancer và high avaiability (Tính sẵn sàng cao) phân chia độ ưu tiên cho từng Web Application
Nên mình sẵn tiện viết cách hướng dẫn luôn, tới đây thì coi như xong rồi Kong và Konga điều ok, chúc các bạn thành công nhé. Nguồn: itblognote.com Tags: Container Linux
Posted by: Yuki Thành Phát (thanhphatit)
You may like these posts
Post a Comment
1 Comments
Unknown6/8/21 09:57Mình đã thử và đã chạy được trên windows với powershell và administator
ReplyDeleteReplies- Reply
Vài lời muốn nói:* Không được nhận xét thô tục bởi mình biết các bạn là những người văn minh.* Pass giải nén mặt định là itblognote hoặc itblognote.com nếu có Pass khác thì mình sẽ ghim trong bài viết.* Click vào quảng cáo và chia sẻ bài viết để mình có thêm động lực viết bài nhé.
Translate
Social Plugin
About Blog
Xin chào các bạn, mình là Phát hiện tại mình là một DevOps Engineer và mình xây dựng Blog này với tiêu chí đúng với cái tên "ITBLOGNOTE.COM" của nó, là nơi mà mình sẻ lưu trữ lại những kiến thức mà bản thân đã tích lũy được trong đó 80% bài viết về IT | System Admin | DevOps | Security | System Programming và 20% bài viết về những điều hay trong cuộc sống lẫn các kiến thức khác để chia sẻ cùng các bạn, đây cũng như là kho lưu trữ Note Public tổng hợp của cá nhân mình, với phương châm: "Nâng cao kiến thức bản thân bằng cách chia sẻ, nhận đóng góp từ mọi người!"
Fanpage
Labels
- Container 7
- DevOps 31
- KaliLinux 6
- Linux 102
- TricksHacking 22
- TricksLinux 48
- TricksOther 55
- TricksWindows 49
My Music
Info
- INFO
- TOOLS
Random Posts
3/random/post-listRecent in Linux
3/Linux/post-listPopular Posts
Phần mềm NSSM tạo services cho Windows
21:58Tắt tính năng Run as administrator trên Windows cho một app chỉ định
13:59
Chia sẻ code deployment ELK single sử dụng Kubernetes (K8S)
09:02
Menu Footer Widget
- Home
- Contact
- About
- Rules & Privacy
Từ khóa » Cài đặt Kong Api
-
Giới Thiệu Và Cài đặt Kong Làm API Gateway Cho Hệ Thống ...
-
Hướng Dẫn Sử Dụng (hơi) Chi Tiết Kong API Gateway để Cân Bằng Tải ...
-
Hướng Dẫn Cách Cài đặt Kong API Gateway
-
Install Kong API Gateway And Service Mesh
-
Hướng Dẫn Sử Dụng Kong API Gateway Bằng Docker - Techmaster
-
Viblo - Giới Thiệu Và Cài đặt Kong Làm API Gateway Cho Hệ...
-
Tập Tành Microservices Với Kong API Gateway Và Https://chickgolden ...
-
Tập Tành Microservices Với Kong API Gateway Và Docker-compose
-
Triển Khai Api Gateway Cho Microservice Với Kong - Medium
-
Api Gateway Là Gì Tại Sao Lại Có Câu Kong Api ...
-
Kong Api Gateway Là Gì ? Lợi Ích Quan Trọng Của Việc Dùng Api ...
-
Kong - Official Image | Docker Hub
-
API Gateway Căn Bản
-
Cấu Hình Prometheus Giám Sát Dịch Vụ Kong API Gateway
Unknown