Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
tài liệu về Apigee X. info
Edge Microgateway phiên bản 3.1.x
Chủ đề này thảo luận về cách quản lý và định cấu hình Edge Microgateway.
Nâng cấp Edge Microgateway nếu bạn có kết nối Internet
Phần này giải thích cách nâng cấp bản cài đặt hiện có của Edge Microgateway. Nếu bạn đang hoạt động mà không có kết nối Internet, hãy xem phần Tôi có thể cài đặt Edge Microgateway mà không có kết nối Internet không?.
Apigee khuyên bạn nên kiểm thử cấu hình hiện có bằng phiên bản mới trước khi nâng cấp môi trường thực tế.
- Thực thi lệnh
npmsau đây để nâng cấp lên phiên bản mới nhất của Edge Microgateway:npm upgrade edgemicro -g
Để nâng cấp lên một phiên bản cụ thể của Edge Microgateway, bạn cần chỉ định số phiên bản trong lệnh nâng cấp. Nếu bạn không chỉ định số phiên bản, thì phiên bản mới nhất sẽ được cài đặt. Ví dụ: để nâng cấp lên phiên bản 3.1.0, hãy sử dụng lệnh sau:
npm upgrade edgemicro@3.1.0 -g
- Kiểm tra số phiên bản. Ví dụ: nếu bạn đã cài đặt phiên bản 3.1.0:
edgemicro --version current nodejs version is v12.5.0 current edgemicro version is 3.1.0 - Cuối cùng, hãy nâng cấp lên phiên bản mới nhất của proxy edgemicro-auth:
edgemicro upgradeauth -o $ORG -e $ENV -u $USERNAME
Thay đổi cấu hình
Các tệp cấu hình bạn cần biết bao gồm:
- Tệp cấu hình hệ thống mặc định
- Tệp cấu hình mặc định cho một phiên bản Edge Microgateway mới khởi chạy
- Tệp cấu hình động cho các phiên bản đang chạy
Phần này thảo luận về các tệp này và những điều bạn cần biết về việc thay đổi chúng.
Tệp cấu hình hệ thống mặc định
Khi bạn cài đặt Edge Microgateway, tệp cấu hình hệ thống mặc định sẽ được đặt tại đây:
prefix/lib/node_modules/edgemicro/config/default.yaml
Trong đó, prefix là thư mục tiền tố npm. Hãy xem phần
Where is Edge Microgateway installed (Edge Microgateway được cài đặt ở đâu) nếu bạn không tìm thấy thư mục này.
Nếu thay đổi tệp cấu hình hệ thống, bạn phải khởi động lại, định cấu hình lại và khởi động lại Edge Microgateway:
edgemicro initedgemicro configure [params]edgemicro start [params]
Tệp cấu hình mặc định cho các phiên bản Edge Microgateway mới khởi chạy
Khi bạn chạy edgemicro init, tệp cấu hình hệ thống (được mô tả ở trên) default.yaml sẽ được đặt trong thư mục ~/.edgemicro.
Nếu thay đổi tệp cấu hình trong ~/.edgemicro, bạn phải định cấu hình lại và khởi động lại Edge Microgateway:
edgemicro stopedgemicro configure [params]edgemicro start [params]
Tệp cấu hình động cho các thực thể đang chạy
Khi bạn chạy edgemicro configure [params], một tệp cấu hình động sẽ được tạo trong ~/.edgemicro. Tệp được đặt tên theo mẫu sau: org-env-config.yaml, trong đó org và env là tên tổ chức và môi trường Apigee Edge của bạn. Bạn có thể sử dụng tệp này để thay đổi cấu hình, sau đó tải lại mà không cần thời gian ngừng hoạt động. Ví dụ: nếu thêm và định cấu hình một trình bổ trợ, bạn có thể tải lại cấu hình mà không bị gián đoạn, như giải thích bên dưới.
Nếu Edge Microgateway đang chạy (tuỳ chọn không có thời gian ngừng hoạt động):
- Tải lại cấu hình Edge Microgateway:
edgemicro reload -o $ORG -e $ENV -k $KEY -s $SECRET
Trong trường hợp:
- $ORG là tên tổ chức Edge của bạn (bạn phải là quản trị viên tổ chức).
- $ENV là một môi trường trong tổ chức của bạn (chẳng hạn như "test" hoặc "prod").
- $KEY là khoá được lệnh configure trả về trước đó.
- $SECRET là khoá được lệnh configure trả về trước đó.
Ví dụ
edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \ -s 05c14356e42ed1...4e34ab0cc824
Nếu Edge Microgateway bị dừng:
- Khởi động lại Edge Microgateway:
edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET
Trong trường hợp:
- $ORG là tên tổ chức Edge của bạn (bạn phải là quản trị viên tổ chức).
- $ENV là một môi trường trong tổ chức của bạn (chẳng hạn như "test" hoặc "prod").
- $KEY là khoá được lệnh configure trả về trước đó.
- $SECRET là khoá được lệnh configure trả về trước đó.
Ví dụ:
edgemicro start -o docs -e test -k 701e70ee718ce...b6181d000723 \ -s 05c1435...e34ab0cc824
Dưới đây là tệp cấu hình mẫu. Để biết thông tin chi tiết về chế độ cài đặt tệp cấu hình, hãy xem phần Tài liệu tham khảo về cấu hình Edge Microgateway.
edge_config: bootstrap: >- https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test jwt_public_key: 'https://docs-test.apigee.net/edgemicro-auth/publicKey' managementUri: 'https://api.enterprise.apigee.com' vaultName: microgateway authUri: 'https://%s-%s.apigee.net/edgemicro-auth' baseUri: >- https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s bootstrapMessage: Please copy the following property to the edge micro agent config keySecretMessage: The following credentials are required to start edge micro products: 'https://docs-test.apigee.net/edgemicro-auth/products' edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth headers: x-forwarded-for: true x-forwarded-host: true x-request-id: true x-response-time: true via: true oauth: allowNoAuthorization: false allowInvalidAuthorization: false verify_api_key_url: 'https://docs-test.apigee.net/edgemicro-auth/verifyApiKey' analytics: uri: >- https://edgemicroservices-us-east-1.apigee.net/edgemicro/axpublisher/organization/docs/environment/test
Thiết lập biến môi trường
Các lệnh giao diện dòng lệnh yêu cầu giá trị cho tổ chức và môi trường Edge, cũng như khoá và mật khẩu cần thiết để khởi động Edge Microgateway có thể được lưu trữ trong các biến môi trường sau:
EDGEMICRO_ORGEDGEMICRO_ENVEDGEMICRO_KEYEDGEMICRO_SECRET
Bạn không bắt buộc phải đặt các biến này. Nếu đặt các biến này, bạn không cần chỉ định giá trị của chúng khi sử dụng Giao diện dòng lệnh (CLI) để định cấu hình và khởi động Edge Microgateway.
Định cấu hình SSL trên máy chủ Edge Microgateway
Hãy xem các video sau để tìm hiểu về cách định cấu hình TLS trong Apigee Edge Microgateway:
| Video | Mô tả |
|---|---|
| Định cấu hình TLS một chiều cho Northbound | Tìm hiểu về cách định cấu hình TLS trong Apigee Edge Microgateway. Video này cung cấp thông tin tổng quan về TLS và tầm quan trọng của giao thức này, giới thiệu TLS trong Edge Microgateway và minh hoạ cách định cấu hình TLS một chiều hướng lên. |
| Định cấu hình TLS hai chiều cho Northbound | Đây là video thứ hai về cách định cấu hình TLS trong Apigee Edge Microgateway. Video này giải thích cách định cấu hình TLS 2 chiều hướng bắc. |
| Định cấu hình TLS hướng nam 1 chiều và 2 chiều | Video thứ ba này về cách định cấu hình TLS trong Apigee Edge Microgateway giải thích cách định cấu hình TLS 1 chiều và 2 chiều hướng nam. |
Bạn có thể định cấu hình máy chủ Microgateway để sử dụng SSL. Ví dụ: khi đã định cấu hình SSL, bạn có thể gọi API thông qua Edge Microgateway bằng giao thức "https", như sau:
https://localhost:8000/myapi
Để định cấu hình SSL trên máy chủ Microgateway, hãy làm theo các bước sau:
- Tạo hoặc lấy chứng chỉ và khoá SSL bằng tiện ích openssl hoặc bất kỳ phương thức nào bạn muốn.
- Thêm thuộc tính
edgemicro:sslvào tệp cấu hình Edge Microgateway. Để xem danh sách đầy đủ các tuỳ chọn, hãy xem bảng bên dưới. Ví dụ:
edgemicro: ssl: key: <absolute path to the SSL key file> cert: <absolute path to the SSL cert file> passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2 requestCert: true
- Khởi động lại Edge Microgateway. Làm theo các bước nêu trong phần Thay đổi cấu hình, tuỳ thuộc vào tệp cấu hình mà bạn đã chỉnh sửa: tệp mặc định hoặc tệp cấu hình thời gian chạy.
Dưới đây là ví dụ về phần edgemicro của tệp cấu hình, trong đó SSL đã được định cấu hình:
edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth ssl: key: /MyHome/SSL/em-ssl-keys/server.key cert: /MyHome/SSL/em-ssl-keys/server.crt passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2
Dưới đây là danh sách tất cả các lựa chọn máy chủ được hỗ trợ:
| Phương thức | Mô tả |
|---|---|
key |
Đường dẫn đến tệp ca.key (ở định dạng PEM). |
cert |
Đường dẫn đến tệp ca.cert (ở định dạng PEM). |
pfx |
Đường dẫn đến tệp pfx chứa khoá riêng tư, chứng chỉ và chứng chỉ CA của ứng dụng ở định dạng PFX. |
passphrase |
Một chuỗi chứa cụm mật khẩu cho khoá riêng tư hoặc PFX. |
ca |
Đường dẫn đến tệp chứa danh sách chứng chỉ đáng tin cậy ở định dạng PEM. |
ciphers |
Một chuỗi mô tả các thuật toán mật mã cần sử dụng, được phân tách bằng dấu ":". |
rejectUnauthorized |
Nếu đúng, chứng chỉ máy chủ sẽ được xác minh dựa trên danh sách CA được cung cấp. Nếu không xác minh được, hệ thống sẽ trả về lỗi. |
secureProtocol |
Phương thức SSL cần sử dụng. Ví dụ: SSLv3_method để buộc SSL sử dụng phiên bản 3. |
servername |
Tên máy chủ cho tiện ích TLS SNI (Chỉ báo tên máy chủ). |
requestCert |
true cho SSL 2 chiều; false cho SSL 1 chiều |
Sử dụng các tuỳ chọn SSL/TLS của ứng dụng
Bạn có thể định cấu hình Edge Microgateway làm ứng dụng TLS hoặc SSL khi kết nối với các điểm cuối mục tiêu. Trong tệp cấu hình Microgateway, hãy sử dụng phần tử targets để đặt các tuỳ chọn SSL/TLS.
Ví dụ này cung cấp các chế độ cài đặt sẽ được áp dụng cho tất cả máy chủ lưu trữ:
edgemicro:
...
targets:
ssl:
client:
key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key
cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt
passphrase: admin123
rejectUnauthorized: trueTrong ví dụ này, các chế độ cài đặt chỉ được áp dụng cho máy chủ lưu trữ được chỉ định:
edgemicro:
...
targets:
- host: 'myserver.example.com'
ssl:
client:
key: /Users/myname/twowayssl/ssl/client.key
cert: /Users/myname/twowayssl/ssl/ca.crt
passphrase: admin123
rejectUnauthorized: trueSau đây là ví dụ về TLS:
edgemicro:
...
targets:
- host: 'myserver.example.com'
tls:
client:
pfx: /Users/myname/twowayssl/ssl/client.pfx
passphrase: admin123
rejectUnauthorized: trueDưới đây là danh sách tất cả các lựa chọn ứng dụng được hỗ trợ:
| Phương thức | Mô tả |
|---|---|
pfx |
Đường dẫn đến tệp pfx chứa khoá riêng tư, chứng chỉ và chứng chỉ CA của ứng dụng ở định dạng PFX. |
key |
Đường dẫn đến tệp ca.key (ở định dạng PEM). |
passphrase |
Một chuỗi chứa cụm mật khẩu cho khoá riêng tư hoặc PFX. |
cert |
Đường dẫn đến tệp ca.cert (ở định dạng PEM). |
ca |
Đường dẫn đến tệp chứa danh sách chứng chỉ đáng tin cậy ở định dạng PEM. |
ciphers |
Một chuỗi mô tả các thuật toán mật mã cần sử dụng, được phân tách bằng dấu ":". |
rejectUnauthorized |
Nếu đúng, chứng chỉ máy chủ sẽ được xác minh dựa trên danh sách CA được cung cấp. Nếu không xác minh được, hệ thống sẽ trả về lỗi. |
secureProtocol |
Phương thức SSL cần sử dụng. Ví dụ: SSLv3_method để buộc SSL sử dụng phiên bản 3. |
servername |
Tên máy chủ cho tiện ích TLS SNI (Chỉ báo tên máy chủ). |
Tuỳ chỉnh proxy edgemicro-auth
Theo mặc định, Edge Microgateway sử dụng một proxy được triển khai trên Apigee Edge để xác thực OAuth2.
Proxy này được triển khai khi bạn chạy edgemicro configure lần đầu tiên. Bạn có thể thay đổi cấu hình mặc định của proxy này để thêm tính năng hỗ trợ cho các thông báo xác nhận tuỳ chỉnh vào Mã thông báo web JSON (JWT), định cấu hình thời gian hết hạn của mã thông báo và tạo mã làm mới. Để biết thông tin chi tiết, hãy xem trang edgemicro-auth trong GitHub.
Sử dụng dịch vụ xác thực tuỳ chỉnh
Theo mặc định, Edge Microgateway sử dụng một proxy được triển khai trên Apigee Edge để xác thực OAuth2.
Proxy này được triển khai khi bạn chạy edgemicro configure lần đầu tiên. Theo mặc định, URL của proxy này được chỉ định trong tệp cấu hình Edge Microgateway như sau:
authUri: https://myorg-myenv.apigee.net/edgemicro-auth
Nếu bạn muốn sử dụng dịch vụ tuỳ chỉnh của riêng mình để xử lý việc xác thực, hãy thay đổi giá trị authUri trong tệp cấu hình để trỏ đến dịch vụ của bạn. Ví dụ: bạn có thể có một dịch vụ sử dụng LDAP để xác minh danh tính.
Quản lý tệp nhật ký
Edge Microgateway ghi lại thông tin về từng yêu cầu và phản hồi. Tệp nhật ký cung cấp thông tin hữu ích cho việc gỡ lỗi và khắc phục sự cố.
Nơi lưu trữ tệp nhật ký
Theo mặc định, tệp nhật ký được lưu trữ trong /var/tmp.
Cách thay đổi thư mục tệp nhật ký mặc định
Thư mục lưu trữ tệp nhật ký được chỉ định trong tệp cấu hình Edge Microgateway. Xem thêm phần Thực hiện thay đổi về cấu hình.
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
Thay đổi giá trị dir để chỉ định một thư mục tệp nhật ký khác.
Gửi nhật ký đến bảng điều khiển
Bạn có thể định cấu hình tính năng ghi nhật ký để thông tin nhật ký được gửi đến đầu ra chuẩn thay vì tệp nhật ký. Đặt cờ to_console thành true như sau:
edgemicro:
logging:
to_console: trueVới chế độ cài đặt này, nhật ký sẽ được gửi đến đầu ra tiêu chuẩn. Hiện tại, bạn không thể gửi nhật ký đến cả stdout và tệp nhật ký.
Cách đặt cấp độ ghi nhật ký
Bạn có thể đặt các cấp độ nhật ký sau: info, warn và error. Bạn nên sử dụng cấp độ thông tin. Trình ghi nhật ký này ghi lại tất cả yêu cầu và phản hồi API, đồng thời là trình ghi nhật ký mặc định.
Cách thay đổi khoảng thời gian ghi nhật ký
Bạn có thể định cấu hình các khoảng thời gian này trong tệp cấu hình Edge Microgateway. Xem thêm phần Thực hiện thay đổi về cấu hình.
Các thuộc tính có thể định cấu hình là:
- stats_log_interval: (mặc định: 60) Khoảng thời gian (tính bằng giây) khi bản ghi số liệu thống kê được ghi vào tệp nhật ký API.
- rotate_interval: (mặc định: 24) Khoảng thời gian (tính bằng giờ) khi các tệp nhật ký được xoay vòng. Ví dụ:
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
Các phương pháp hay để duy trì tệp nhật ký
Khi dữ liệu tệp nhật ký tích luỹ theo thời gian, Apigee khuyên bạn nên áp dụng các phương pháp sau:
- Vì tệp nhật ký có thể trở nên khá lớn, hãy đảm bảo rằng thư mục tệp nhật ký có đủ dung lượng. Xem các phần sau: Nơi lưu trữ tệp nhật ký và Cách thay đổi thư mục tệp nhật ký mặc định.
- Xoá hoặc di chuyển tệp nhật ký sang một thư mục lưu trữ riêng ít nhất một lần mỗi tuần.
- Nếu chính sách của bạn là xoá nhật ký, bạn có thể sử dụng lệnh CLI
edgemicro log -cđể xoá (dọn dẹp) nhật ký cũ.
Quy ước đặt tên tệp nhật ký
Mỗi phiên bản Edge Microgateway tạo ra 3 loại tệp nhật ký:
- api – Ghi nhật ký tất cả yêu cầu và phản hồi đi qua Edge Microgateway. Bộ đếm API (số liệu thống kê) và lỗi cũng được ghi vào tệp này.
- err – Ghi nhật ký mọi nội dung được gửi đến stderr.
- out – Ghi nhật ký mọi nội dung được gửi đến stdout.
Sau đây là quy ước đặt tên:
edgemicro-<Host Name>-<Instance ID>-<Log Type>.log
Ví dụ:
edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log edgemicro-mymachine-local-MTQzNTg1NDMODAyMQ-err.log edgemicro-mymachine-local-mtqzntgndmxodaymq-out.log
Giới thiệu về nội dung tệp nhật ký
Đã thêm vào: phiên bản 2.3.3
Theo mặc định, dịch vụ ghi nhật ký sẽ bỏ qua JSON của các proxy, sản phẩm và Mã thông báo web JSON (JWT) đã tải xuống. Nếu bạn muốn xuất các đối tượng này sang tệp nhật ký, hãy đặt DEBUG=* khi bạn khởi động Edge Microgateway. Ví dụ:
DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456
Nội dung của tệp nhật ký "api"
Tệp nhật ký "api" chứa thông tin chi tiết về luồng yêu cầu và phản hồi thông qua Edge Microgateway. Các tệp nhật ký "api" được đặt tên như sau:
edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log
Đối với mỗi yêu cầu được gửi đến Edge Microgateway, bốn sự kiện sẽ được ghi lại trong tệp nhật ký "api":
- Yêu cầu đến từ khách hàng
- Yêu cầu gửi đi được gửi đến mục tiêu
- Phản hồi đến từ mục tiêu
- Phản hồi gửi đi cho khách hàng
Mỗi mục riêng biệt này được biểu thị bằng ký hiệu viết tắt để giúp tệp nhật ký gọn hơn. Sau đây là 4 mục mẫu đại diện cho từng sự kiện trong số 4 sự kiện. Trong tệp nhật ký, các dòng này có dạng như sau (số dòng chỉ để tham khảo trong tài liệu, không xuất hiện trong tệp nhật ký).
(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0 (2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0 (3) 1436403888672 info tres s=200, d=7, i=0 (4) 1436403888676 info res s=200, d=11, i=0
Hãy cùng tìm hiểu từng loại:
1. Mẫu yêu cầu đến từ ứng dụng khách:
1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
- 1436403888651 – Dấu ngày Unix
- info – Tuỳ thuộc vào ngữ cảnh. Có thể là thông tin, cảnh báo hoặc lỗi, tuỳ thuộc vào cấp độ nhật ký. Có thể là stats cho bản ghi số liệu thống kê, warn cho cảnh báo hoặc error cho lỗi.
- req – Xác định sự kiện. Trong trường hợp này, hãy yêu cầu từ ứng dụng.
- m – Động từ HTTP được dùng trong yêu cầu.
- u – Phần URL theo sau đường dẫn cơ sở.
- h – Máy chủ lưu trữ và số cổng mà Edge Microgateway đang nghe.
- r – Cổng và máy chủ từ xa nơi yêu cầu của ứng dụng bắt nguồn.
- i – Mã yêu cầu. Tất cả 4 mục nhập sự kiện sẽ có chung mã nhận dạng này. Mỗi yêu cầu được chỉ định một mã yêu cầu duy nhất. Việc liên kết các bản ghi nhật ký theo mã yêu cầu có thể cung cấp thông tin chi tiết có giá trị về độ trễ của mục tiêu.
- d – Thời lượng tính bằng mili giây kể từ khi Edge Microgateway nhận được yêu cầu. Trong ví dụ trên, phản hồi của mục tiêu cho yêu cầu 0 được nhận sau 7 mili giây (dòng 3) và phản hồi được gửi đến ứng dụng sau 4 mili giây nữa (dòng 4). Nói cách khác, tổng độ trễ của yêu cầu là 11 mili giây, trong đó 7 mili giây là do mục tiêu và 4 mili giây là do chính Edge Microgateway.
2. Mẫu yêu cầu gửi đi được gửi đến mục tiêu:
1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
- 1436403888651 – Dấu ngày Unix
- info – Tuỳ thuộc vào ngữ cảnh. Có thể là thông tin, cảnh báo hoặc lỗi, tuỳ thuộc vào cấp độ nhật ký. Có thể là stats cho bản ghi số liệu thống kê, warn cho cảnh báo hoặc error cho lỗi.
- treq – Xác định sự kiện. Trong trường hợp này, hãy nhắm đến yêu cầu.
- m – Động từ HTTP được dùng trong yêu cầu mục tiêu.
- u – Phần URL theo sau đường dẫn cơ sở.
- h – Máy chủ và số cổng của mục tiêu phụ trợ.
- i – Mã nhận dạng của mục nhập nhật ký. Tất cả 4 mục nhập sự kiện sẽ dùng chung mã nhận dạng này.
3. Mẫu phản hồi đến từ mục tiêu
1436403888672 info tres s=200, d=7, i=0
1436403888651 – Dấu ngày Unix
- info – Tuỳ thuộc vào ngữ cảnh. Có thể là thông tin, cảnh báo hoặc lỗi, tuỳ thuộc vào cấp độ nhật ký. Có thể là stats cho bản ghi số liệu thống kê, warn cho cảnh báo hoặc error cho lỗi.
- tres – Xác định sự kiện. Trong trường hợp này, hãy nhắm đến phản hồi.
- s – Trạng thái phản hồi HTTP.
- d – Thời lượng tính bằng mili giây. Thời gian mà mục tiêu cần để thực hiện lệnh gọi API.
- i – Mã nhận dạng của mục nhập nhật ký. Tất cả 4 mục nhập sự kiện sẽ dùng chung mã nhận dạng này.
4. Mẫu phản hồi gửi đến khách hàng
1436403888676 info res s=200, d=11, i=0
1436403888651 – Dấu ngày Unix
- info – Tuỳ thuộc vào ngữ cảnh. Có thể là thông tin, cảnh báo hoặc lỗi, tuỳ thuộc vào cấp độ nhật ký. Có thể là stats cho bản ghi số liệu thống kê, warn cho cảnh báo hoặc error cho lỗi.
- res – Xác định sự kiện. Trong trường hợp này, hãy phản hồi cho ứng dụng.
- s – Trạng thái phản hồi HTTP.
- d – Thời lượng tính bằng mili giây. Đây là tổng thời gian mà lệnh gọi API sử dụng, bao gồm cả thời gian mà API mục tiêu sử dụng và thời gian mà chính Edge Microgateway sử dụng.
- i – Mã nhận dạng của mục nhập nhật ký. Tất cả 4 mục nhập sự kiện sẽ dùng chung mã nhận dạng này.
Lịch biểu tệp nhật ký
Các tệp nhật ký được xoay vòng theo khoảng thời gian được chỉ định bởi thuộc tính cấu hình rotate_interval. Các mục nhập sẽ tiếp tục được thêm vào cùng một tệp nhật ký cho đến khi hết khoảng thời gian xoay vòng. Tuy nhiên, mỗi lần khởi động lại, Edge Microgateway sẽ nhận được một UID mới và tạo một tập hợp tệp nhật ký mới có UID này. Xem thêm Các phương pháp hay nhất để duy trì tệp nhật ký.
Thông báo lỗi
Một số mục nhập nhật ký sẽ chứa thông báo lỗi. Để xác định vị trí và lý do xảy ra lỗi, hãy xem tài liệu tham khảo về lỗi Edge Microgateway.
Tài liệu tham khảo về cấu hình Edge Microgateway
Vị trí của tệp cấu hình
Các thuộc tính cấu hình được mô tả trong phần này nằm trong tệp cấu hình Edge Microgateway. Xem thêm phần Thực hiện thay đổi về cấu hình.
thuộc tính edge_config
Các chế độ cài đặt này được dùng để định cấu hình hoạt động tương tác giữa phiên bản Edge Microgateway và Apigee Edge.
- bootstrap: (mặc định: không có) Một URL trỏ đến một dịch vụ dành riêng cho Edge Microgateway đang chạy trên Apigee Edge. Edge Microgateway sử dụng dịch vụ này để
giao tiếp với Apigee Edge. URL này được trả về khi bạn thực thi lệnh tạo cặp khoá công khai/riêng tư:
edgemicro genkeys. Hãy xem phần Thiết lập và định cấu hình Edge Microgateway để biết thông tin chi tiết. - jwt_public_key: (mặc định: không có) URL trỏ đến proxy Edge Microgateway được triển khai trên Apigee Edge. Proxy này đóng vai trò là điểm cuối xác thực để cấp mã truy cập đã ký cho ứng dụng. URL này được trả về khi bạn thực thi lệnh để triển khai proxy: edgemicro configure. Hãy xem phần Thiết lập và định cấu hình Edge Microgateway để biết thông tin chi tiết.
- quotaUri: Đặt thuộc tính cấu hình này nếu bạn muốn quản lý hạn mức thông qua proxy
edgemicro-authđược triển khai cho tổ chức của bạn. Nếu bạn không đặt thuộc tính này, điểm cuối hạn mức sẽ mặc định là điểm cuối Edge Microgateway nội bộ.edge_config: quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
thuộc tính edgemicro
Các chế độ cài đặt này định cấu hình quy trình Edge Microgateway.
- port: (mặc định: 8000) Số cổng mà quy trình Edge Microgateway lắng nghe.
- max_connections: (mặc định: -1) Chỉ định số lượng kết nối đến đồng thời tối đa mà Edge Microgateway có thể nhận. Nếu vượt quá số lượng này, trạng thái sau sẽ được trả về:
res.statusCode = 429; // Too many requests
- max_connections_hard: (mặc định: -1) Số lượng yêu cầu đồng thời tối đa mà Edge Microgateway có thể nhận được trước khi tắt kết nối. Chế độ cài đặt này nhằm ngăn chặn các cuộc tấn công từ chối dịch vụ. Thông thường, hãy đặt giá trị này thành một số lớn hơn max_connections.
-
logging:
-
level: (mặc định: error)
- info – Ghi nhật ký tất cả các yêu cầu và phản hồi đi qua một phiên bản Edge Microgateway.
- warn – Chỉ ghi nhật ký thông báo cảnh báo.
- error – Chỉ ghi lại thông báo lỗi.
- dir: (mặc định: /var/tmp) Thư mục lưu trữ tệp nhật ký.
- stats_log_interval: (mặc định: 60) Khoảng thời gian (tính bằng giây) khi bản ghi số liệu thống kê được ghi vào tệp nhật ký API.
- rotate_interval: (mặc định: 24) Khoảng thời gian (tính bằng giờ) khi các tệp nhật ký được xoay vòng.
-
level: (mặc định: error)
- plugins: Trình bổ trợ thêm chức năng cho Edge Microgateway. Để biết thông tin chi tiết về cách phát triển trình bổ trợ, hãy xem bài viết Phát triển trình bổ trợ tuỳ chỉnh.
- dir: Đường dẫn tương đối từ thư mục ./gateway đến thư mục ./plugins hoặc đường dẫn tuyệt đối.
- sequence: Danh sách các mô-đun trình bổ trợ cần thêm vào phiên bản Edge Microgateway của bạn. Các mô-đun sẽ thực thi theo thứ tự được chỉ định tại đây.
-
debug: Thêm tính năng gỡ lỗi từ xa vào quy trình Edge Microgateway.
- port: Số cổng cần theo dõi. Ví dụ: đặt trình gỡ lỗi IDE để theo dõi cổng này.
- args: Đối số cho quy trình gỡ lỗi. Ví dụ:
args --nolazy
- config_change_poll_interval: (mặc định: 600 giây) Edge Microgateway
tải cấu hình mới theo định kỳ và thực hiện tải lại nếu có thay đổi. Quá trình thăm dò ý kiến sẽ nhận mọi thay đổi được thực hiện trên Edge (thay đổi đối với sản phẩm, proxy nhận biết cổng vi mô, v.v.) cũng như các thay đổi được thực hiện đối với tệp cấu hình cục bộ.
- disable_config_poll_interval: (mặc định: false) Đặt thành true để tắt tính năng tự động thăm dò ý kiến thay đổi.
- request_timeout: Đặt thời gian chờ cho các yêu cầu mục tiêu. Thời gian chờ được đặt bằng giây. Nếu xảy ra lỗi hết thời gian chờ, Edge Microgateway sẽ phản hồi bằng mã trạng thái 504. (Đã thêm v2.4.x)
- keep_alive_timeout: Thuộc tính này cho phép bạn đặt thời gian chờ của Edge Microgateway (tính bằng mili giây). (Mặc định: 5 giây) (Đã thêm phiên bản 3.0.6)
- headers_timeout: Thuộc tính này giới hạn khoảng thời gian (tính bằng mili giây) mà trình phân tích cú pháp HTTP sẽ đợi để nhận được tiêu đề HTTP hoàn chỉnh.
Ví dụ:
edgemicro: keep_alive_timeout: 6000 headers_timeout: 12000
Trong nội bộ, tham số này đặt thuộc tính
Server.headersTimeoutcủa Node.js cho các yêu cầu. (Mặc định: nhiều hơn 5 giây so với thời gian được đặt bằngedgemicro.keep_alive_timeout. Chế độ cài đặt mặc định này ngăn trình cân bằng tải hoặc proxy vô tình làm rớt kết nối.) (Đã thêm phiên bản 3.1.1)
thuộc tính tiêu đề
Các chế độ cài đặt này định cấu hình cách xử lý một số tiêu đề HTTP nhất định.
- x-forwarded-for: (mặc định: true) Đặt thành false để ngăn tiêu đề x-forwarded-for được chuyển đến mục tiêu. Xin lưu ý rằng nếu tiêu đề x-forwarded-for có trong yêu cầu, thì giá trị của tiêu đề này sẽ được đặt thành giá trị client-ip trong Edge Analytics.
- x-forwarded-host: (mặc định: true) Đặt thành false để ngăn tiêu đề x-forwarded-host được chuyển đến mục tiêu.
- x-request-id: (mặc định: true) Đặt thành false để ngăn tiêu đề x-request-id được chuyển đến mục tiêu.
- x-response-time: (mặc định: true) Đặt thành false để ngăn tiêu đề x-response-time được chuyển đến mục tiêu.
- via: (mặc định: true) Đặt thành false để ngăn việc chuyển tiêu đề via đến mục tiêu.
thuộc tính oauth
Các chế độ cài đặt này định cấu hình cách Edge Microgateway thực thi quy trình xác thực ứng dụng.
- allowNoAuthorization: (mặc định: false) Nếu được đặt thành true, các lệnh gọi API được phép truyền qua Edge Microgateway mà không cần bất kỳ tiêu đề Authorization nào. Đặt giá trị này thành false để yêu cầu tiêu đề Authorization (mặc định).
- allowInvalidAuthorization: (mặc định: false) Nếu được đặt thành true, các lệnh gọi API sẽ được phép truyền nếu mã thông báo được truyền trong tiêu đề Authorization không hợp lệ hoặc đã hết hạn. Đặt giá trị này thành false để yêu cầu mã thông báo hợp lệ (mặc định).
- authorization-header: (mặc định: Authorization: Bearer) Tiêu đề dùng để gửi mã truy cập đến Edge Microgateway. Bạn có thể thay đổi chế độ mặc định trong trường hợp mục tiêu cần sử dụng tiêu đề Authorization cho một số mục đích khác.
- api-key-header: (mặc định: x-api-key) Tên của tiêu đề hoặc tham số truy vấn dùng để truyền khoá API đến Edge Microgateway. Xem thêm phần Sử dụng khoá API.
- keep-authorization-header: (mặc định: false) Nếu được đặt thành true, tiêu đề Authorization được gửi trong yêu cầu sẽ được chuyển đến mục tiêu (tiêu đề này được giữ nguyên).
- allowOAuthOnly – Nếu được đặt thành true, mọi API đều phải có tiêu đề Authorization kèm theo Bearer mã truy cập. Cho phép bạn chỉ cho phép mô hình bảo mật OAuth (trong khi vẫn duy trì khả năng tương thích ngược). (Đã thêm 2.4.x)
- allowAPIKeyOnly – Nếu được đặt thành true, mọi API đều phải có tiêu đề x-api-key (hoặc vị trí tuỳ chỉnh) kèm theo Khoá API.Cho phép bạn chỉ cho phép mô hình bảo mật khoá API (trong khi vẫn duy trì khả năng tương thích ngược). (Đã thêm 2.4.x)
- gracePeriod – Tham số này giúp ngăn ngừa lỗi do sự khác biệt nhỏ giữa đồng hồ hệ thống và thời gian Không trước (nbf) hoặc Đã phát hành lúc (iat) được chỉ định trong mã thông báo uỷ quyền JWT. Đặt tham số này thành số giây cho phép đối với những sai lệch như vậy. (Đã thêm 2.5.7)
Thuộc tính dành riêng cho trình bổ trợ
Hãy xem phần Sử dụng trình bổ trợ để biết thông tin chi tiết về các thuộc tính có thể định cấu hình cho từng trình bổ trợ.
Lọc proxy
Bạn có thể lọc những proxy nhận biết được microgateway mà một phiên bản Edge Microgateway sẽ xử lý.
Khi Edge Microgateway khởi động, nó sẽ tải xuống tất cả các proxy nhận biết microgateway trong tổ chức mà nó liên kết. Sử dụng cấu hình sau để giới hạn các proxy mà microgateway sẽ xử lý. Ví dụ: cấu hình này giới hạn số lượng proxy mà cổng vi mô sẽ xử lý thành 3: edgemicro_proxy-1, edgemicro_proxy-2 và edgemicro_proxy-3:
edgemicro: proxies: - edgemicro_proxy-1 - edgemicro_proxy-2 - edgemicro_proxy-3
Đang lọc sản phẩm
Sử dụng cấu hình sau để giới hạn số lượng sản phẩm API mà Edge Microgateway tải xuống và xử lý. Để lọc các sản phẩm đã tải xuống, hãy thêm tham số truy vấn productnamefilter vào API /products được liệt kê trong tệp *.config.yaml của Edge Microgateway. Ví dụ:
edge_config:
bootstrap: >-
https://edgemicroservices.apigee.net/edgemicro/bootstrap/organization/willwitman/environment/test
jwt_public_key: 'https://myorg-test.apigee.net/edgemicro-auth/publicKey'
managementUri: 'https://api.enterprise.apigee.com'
vaultName: microgateway
authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
baseUri: >-
https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
bootstrapMessage: Please copy the following property to the edge micro agent config
keySecretMessage: The following credentials are required to start edge micro
products: 'https://myorg-test.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24'
Xin lưu ý rằng giá trị của tham số truy vấn phải được chỉ định ở định dạng biểu thức chính quy và được mã hoá URL. Ví dụ: biểu thức chính quy ^[Ee]dgemicro.*$ sẽ bắt được các tên như:
"edgemicro-test-1" , "edgemicro_demo" và "Edgemicro_New_Demo". Giá trị được mã hoá URL, phù hợp để
sử dụng trong tham số truy vấn, là: %5E%5BEe%5Ddgemicro.%2A%24.
Kết quả gỡ lỗi sau đây cho thấy chỉ những sản phẩm được lọc mới được tải xuống:
...
2020-05-27T03:13:50.087Z [76060] [microgateway-config network] products download from https://gsc-demo-prod.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24 returned 200 OK
...
....
....
{
"apiProduct":[
{
"apiResources":[
],
"approvalType":"auto",
"attributes":[
{
"name":"access",
"value":"public"
}
],
"createdAt":1590549037549,
"createdBy":"k***@g********m",
"displayName":"test upper case in name",
"environments":[
"prod",
"test"
],
"lastModifiedAt":1590549037549,
"lastModifiedBy":"k***@g********m",
"name":"Edgemicro_New_Demo",
"proxies":[
"catchall"
],
"quota":"null",
"quotaInterval":"null",
"quotaTimeUnit":"null",
"scopes":[
]
},
{
"apiResources":[
],
"approvalType":"auto",
"attributes":[
{
"name":"access",
"value":"public"
}
],
"createdAt":1590548328998,
"createdBy":"k***@g********m",
"displayName":"edgemicro test 1",
"environments":[
"prod",
"test"
],
"lastModifiedAt":1590548328998,
"lastModifiedBy":"k***@g********m",
"name":"edgemicro-test-1",
"proxies":[
"Lets-Encrypt-Validation-DoNotDelete"
],
"quota":"null",
"quotaInterval":"null",
"quotaTimeUnit":"null",
"scopes":[
]
},
{
"apiResources":[
"/",
"/**"
],
"approvalType":"auto",
"attributes":[
{
"name":"access",
"value":"public"
}
],
"createdAt":1558182193472,
"createdBy":"m*********@g********m",
"displayName":"Edge microgateway demo product",
"environments":[
"prod",
"test"
],
"lastModifiedAt":1569077897465,
"lastModifiedBy":"m*********@g********m",
"name":"edgemicro_demo",
"proxies":[
"edgemicro-auth",
"edgemicro_hello"
],
"quota":"600",
"quotaInterval":"1",
"quotaTimeUnit":"minute",
"scopes":[
]
}
]
}Đang định cấu hình tần suất đẩy dữ liệu phân tích
Sử dụng các tham số cấu hình này để kiểm soát tần suất Edge Microgateway gửi dữ liệu phân tích đến Apigee:
- bufferSize (Không bắt buộc): Số lượng bản ghi phân tích tối đa mà vùng đệm có thể lưu giữ trước khi bắt đầu loại bỏ các bản ghi cũ nhất. Mặc định: 10000
- batchSize (Không bắt buộc): Kích thước tối đa của một lô bản ghi phân tích được gửi đến Apigee. Mặc định: 500
- flushInterval (Không bắt buộc): Số mili giây giữa mỗi lần xoá một lô bản ghi phân tích được gửi đến Apigee. Mặc định: 5000
Ví dụ:
analytics: bufferSize: 15000 batchSize: 1000 flushInterval: 6000
Che dữ liệu phân tích
Cấu hình sau đây ngăn thông tin đường dẫn yêu cầu xuất hiện trong số liệu phân tích của Edge. Thêm nội dung sau vào cấu hình microgateway để che giấu URI yêu cầu và/hoặc đường dẫn yêu cầu. Xin lưu ý rằng URI bao gồm tên máy chủ và các phần đường dẫn của yêu cầu.
analytics: mask_request_uri: 'string_to_mask' mask_request_path: 'string_to_mask'
Tách riêng các lệnh gọi API trong Edge Analytics
Bạn có thể định cấu hình trình bổ trợ phân tích để tách riêng một đường dẫn API cụ thể để đường dẫn đó xuất hiện dưới dạng một proxy riêng biệt trong trang tổng quan của Edge Analytics. Ví dụ: bạn có thể tách riêng một API kiểm tra tình trạng trong trang tổng quan để tránh nhầm lẫn với các lệnh gọi proxy API thực tế. Trong trang tổng quan của Analytics, các proxy riêng biệt tuân theo mẫu đặt tên sau:
edgemicro_proxyname-health
Hình ảnh sau đây cho thấy hai proxy riêng biệt trong trang tổng quan Analytics: edgemicro_hello-health và edgemicro_mock-health:

Sử dụng các tham số này để phân tách đường dẫn tương đối và đường dẫn tuyệt đối trong trang tổng quan Analytics dưới dạng các proxy riêng biệt:
- relativePath (Không bắt buộc): Chỉ định một đường dẫn tương đối để phân tách trong trang tổng quan Analytics. Ví dụ: nếu bạn chỉ định
/healthcheck, thì tất cả lệnh gọi API chứa đường dẫn/healthchecksẽ xuất hiện trong trang tổng quan dưới dạngedgemicro_proxyname-health. Xin lưu ý rằng cờ này bỏ qua đường dẫn cơ sở của proxy. Để phân tách dựa trên đường dẫn đầy đủ, bao gồm cả đường dẫn cơ sở, hãy sử dụng cờproxyPath. - proxyPath (Không bắt buộc): Chỉ định đường dẫn proxy API đầy đủ, bao gồm cả đường dẫn cơ sở proxy, để phân tách trong trang tổng quan số liệu phân tích. Ví dụ: nếu bạn chỉ định
/mocktarget/healthcheck, trong đó/mocktargetlà đường dẫn cơ sở của proxy, thì tất cả lệnh gọi API có đường dẫn/mocktarget/healthchecksẽ xuất hiện trong trang tổng quan dưới dạngedgemicro_proxyname-health.
Ví dụ: trong cấu hình sau, mọi đường dẫn API chứa /healthcheck sẽ được trình bổ trợ phân tích tách riêng. Điều này có nghĩa là /foo/healthcheck và /foo/bar/healthcheck sẽ được tách riêng thành một proxy riêng biệt có tên là edgemicro_proxyname-health trong trang tổng quan số liệu phân tích.
analytics:
uri: >-
https://xx/edgemicro/ax/org/docs/environment/test
bufferSize: 100
batchSize: 50
flushInterval: 500
relativePath: /healthcheckTrong cấu hình sau, mọi API có đường dẫn proxy /mocktarget/healthcheck sẽ được tách riêng thành một proxy riêng biệt có tên là edgemicro_proxyname-health trong trang tổng quan số liệu phân tích.
analytics:
uri: >-
https://xx/edgemicro/ax/org/docs/environment/test
bufferSize: 100
batchSize: 50
flushInterval: 500
proxyPath: /mocktarget/healthcheckThiết lập Edge Microgateway phía sau tường lửa của công ty
Sử dụng proxy HTTP để giao tiếp với Apigee Edge
Đã thêm trong phiên bản 3.1.2.
Để sử dụng proxy HTTP cho hoạt động giao tiếp giữa Edge Microgateway và Apigee Edge, hãy làm như sau:
- Đặt các biến môi trường
HTTP_PROXY,HTTPS_PROXYvàNO_PROXY. Các biến này kiểm soát máy chủ lưu trữ cho mỗi proxy HTTP mà bạn muốn dùng để giao tiếp với Apigee Edge hoặc máy chủ lưu trữ nào không nên xử lý hoạt động giao tiếp với Apigee Edge. Ví dụ:export HTTP_PROXY='http://localhost:3786' export HTTPS_PROXY='https://localhost:3786' export NO_PROXY='localhost,localhost:8080'
Xin lưu ý rằng
NO_PROXYcó thể là danh sách các miền được phân tách bằng dấu phẩy mà Edge Microgateway không nên uỷ quyền.Để biết thêm thông tin về các biến này, hãy xem https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables
- Khởi động lại Edge Microgateway.
Sử dụng proxy HTTP để giao tiếp với mục tiêu
Đã thêm trong phiên bản 3.1.2.
Để sử dụng proxy HTTP cho hoạt động giao tiếp giữa Edge Microgateway và các mục tiêu phụ trợ, hãy làm như sau:
- Thêm cấu hình sau vào tệp cấu hình microgateway:
edgemicro: proxy: tunnel: true | false url: proxy_url bypass: target_host # target hosts to bypass the proxy. enabled: true | falseTrong trường hợp:
- tunnel: (Không bắt buộc) Khi giá trị là true, Edge Microgateway sẽ sử dụng phương thức HTTP CONNECT để tạo đường hầm cho các yêu cầu HTTP qua một kết nối TCP duy nhất. (Điều này cũng đúng nếu các biến môi trường (như đề cập bên dưới) để định cấu hình proxy được bật TLS). Mặc định:
false - url: URL của proxy HTTP.
- bypass: (Không bắt buộc) Chỉ định một hoặc nhiều URL máy chủ lưu trữ mục tiêu được phân tách bằng dấu phẩy để bỏ qua proxy HTTP. Nếu bạn không đặt thuộc tính này, hãy sử dụng biến môi trường NO_PROXY để chỉ định URL mục tiêu cần bỏ qua.
- enabled: Nếu đúng và
proxy.urlđược đặt, hãy sử dụng giá trịproxy.urlcho proxy HTTP. Nếu đúng vàproxy.urlkhông được đặt, hãy sử dụng các proxy được chỉ định trong biến môi trường proxy HTTPHTTP_PROXYvàHTTPS_PROXY, như mô tả trong phần Sử dụng proxy HTTP để giao tiếp với Apigee Edge.
Ví dụ:
edgemicro: proxy: tunnel: true url: 'http://localhost:3786' bypass: 'localhost','localhost:8080' # target hosts to bypass the proxy. enabled: true - tunnel: (Không bắt buộc) Khi giá trị là true, Edge Microgateway sẽ sử dụng phương thức HTTP CONNECT để tạo đường hầm cho các yêu cầu HTTP qua một kết nối TCP duy nhất. (Điều này cũng đúng nếu các biến môi trường (như đề cập bên dưới) để định cấu hình proxy được bật TLS). Mặc định:
- Khởi động lại Edge Microgateway.
Sử dụng ký tự đại diện trong proxy nhận biết Microgateway
Bạn có thể sử dụng một hoặc nhiều ký tự đại diện "*" trong đường dẫn cơ sở của proxy edgemicro_* (nhận biết Microgateway). Ví dụ: đường dẫn cơ sở /team/*/members cho phép ứng dụng gọi https://[host]/team/blue/members và https://[host]/team/green/members mà bạn không cần tạo proxy API mới để hỗ trợ các nhóm mới. Xin lưu ý rằng /**/ không được hỗ trợ.
Quan trọng: Apigee KHÔNG hỗ trợ việc sử dụng ký tự đại diện "*" làm phần tử đầu tiên của đường dẫn cơ sở. Ví dụ: KHÔNG hỗ trợ tìm kiếm /*/.
Xoay vòng khoá JWT
Sau khi tạo JWT ban đầu, bạn có thể cần thay đổi cặp khoá công khai/riêng tư được lưu trữ trong KVM đã mã hoá của Edge. Quá trình tạo cặp khoá mới này được gọi là xoay vòng khoá.
Cách Edge Microgateway sử dụng JWT
Mã thông báo web JSON (JWT) là một tiêu chuẩn mã thông báo được mô tả trong RFC7519. JWT cung cấp một cách để ký một tập hợp các thông báo xác nhận quyền sở hữu, có thể được người nhận JWT xác minh một cách đáng tin cậy.
Edge Microgateway sử dụng JWT làm mã thông báo truy cập để bảo mật OAuth. Khi tạo mã thông báo OAuth cho Edge Microgateway, bạn sẽ nhận lại một JWT. Sau đó, bạn có thể sử dụng JWT trong tiêu đề Authorization của lệnh gọi API. Ví dụ:
curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"
Tạo JWT mới
Bạn có thể tạo JWT cho Edge Microgateway bằng lệnh edgemicro token hoặc
API. Ví dụ:
edgemicro token get -o docs -e test -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy
Lệnh này yêu cầu Apigee Edge tạo một JWT, sau đó có thể dùng JWT này để xác minh các lệnh gọi API. Tham số -i và -s là giá trị bí mật và mã nhận dạng người tiêu dùng của một ứng dụng dành cho nhà phát triển trong tổ chức Apigee Edge của bạn.
Hoặc bạn cũng có thể tạo JWT bằng API quản lý:
curl -i -X POST "http://$ORG-$ENV.apigee.net/edgemicro-auth/token" \ -H "Content-Type: application/json" \ -d '{ "$CLIENT_ID": "your consumer key", "$CLIENT_SECRET": "your consumer secret", "grant_type": "client_credentials" }'
Trong trường hợp:
- $ORG là tên tổ chức Edge của bạn (bạn phải là quản trị viên tổ chức).
- $ENV là một môi trường trong tổ chức của bạn (chẳng hạn như "test" hoặc "prod").
- $CLIENT_ID là Mã nhận dạng người tiêu dùng trong Ứng dụng dành cho nhà phát triển mà bạn đã tạo trước đó.
- $CLIENT_SECRET là Khoá bí mật của người dùng trong Ứng dụng dành cho nhà phát triển mà bạn đã tạo trước đó.
Xoay vòng khoá là gì?
Sau khi tạo JWT ban đầu, bạn có thể cần thay đổi cặp khoá công khai/riêng tư được lưu trữ trong KVM đã mã hoá của Edge. Quá trình tạo cặp khoá mới này được gọi là xoay vòng khoá. Khi bạn xoay vòng khoá, một cặp khoá riêng tư/công khai mới sẽ được tạo và lưu trữ trong KVM "microgateway" trong tổ chức/môi trường Apigee Edge của bạn. Ngoài ra, khoá công khai cũ được giữ lại cùng với giá trị mã khoá ban đầu.
Để tạo JWT, Edge sử dụng thông tin được lưu trữ trong KVM đã mã hoá. Một KVM có tên là microgateway đã được tạo và điền sẵn các khoá khi bạn thiết lập (định cấu hình) Edge Microgateway lần đầu. Các khoá trong KVM được dùng để ký và mã hoá JWT.
Các khoá KVM bao gồm:
-
private_key – Khoá riêng tư RSA mới nhất (được tạo gần đây nhất) dùng để ký JWT.
-
public_key – Chứng chỉ mới nhất (được tạo gần đây nhất) dùng để xác minh JWT được ký bằng private_key.
-
private_key_kid – Mã khoá riêng tư mới nhất (được tạo gần đây nhất). Mã khoá này được liên kết với giá trị private_key và được dùng để hỗ trợ việc xoay vòng khoá.
-
public_key1_kid – Mã khoá công khai mới nhất (được tạo gần đây nhất). Khoá này được liên kết với giá trị public_key1 và được dùng để hỗ trợ việc xoay vòng khoá. Giá trị này giống với kid của khoá riêng tư.
-
public_key1 – Khoá công khai mới nhất (được tạo gần đây nhất).
Khi bạn thực hiện xoay vòng khoá, các giá trị khoá hiện có sẽ được thay thế trong bản đồ và các khoá mới sẽ được thêm vào để giữ lại các khoá công khai cũ. Ví dụ:
-
public_key2_kid – Mã khoá công khai cũ. Khoá này được liên kết với giá trị public_key2 và được dùng để hỗ trợ việc xoay vòng khoá.
-
public_key2 – Khoá công khai cũ.
JWT được trình bày để xác minh sẽ được xác minh bằng khoá công khai mới. Nếu quá trình xác minh không thành công, thì khoá công khai cũ sẽ được sử dụng cho đến khi hết hạn (sau 30 phút). Bằng cách này, bạn có thể "xoay vòng" khoá mà không làm gián đoạn ngay lưu lượng truy cập API.
Cách xoay vòng khoá
Phần này giải thích cách thực hiện việc xoay vòng khoá.
Nếu bạn đã định cấu hình phiên bản Edge Microgateway trước phiên bản 2.5.2
Nếu đã định cấu hình phiên bản Edge Microgateway trước phiên bản 2.5.2, thì bạn phải chạy hai lệnh sau để nâng cấp KVM và chính sách xác thực:
upgradekvm -o $ORG -e $ENV -u $USERNAME
Để biết thêm thông tin về lệnh này, hãy xem phần Nâng cấp KVM.
Lệnh tiếp theo sẽ nâng cấp proxy edgemicro-oauth đã được triển khai cho tổ chức Apigee của bạn khi bạn định cấu hình Edge Microgateway. Proxy này cung cấp các dịch vụ cần thiết để tạo mã thông báo.
upgradeauth -o $ORG -e $ENV -u $USERNAME
Để biết thêm thông tin về lệnh này, hãy xem phần Nâng cấp proxy edgemicro-auth.
Xoay vòng khoá
Thêm dòng sau vào tệp ~/.edgemicro/org-env-config.yaml, trong đó bạn phải
chỉ định cùng một tổ chức và môi trường mà bạn đã định cấu hình cho cổng vi mô sử dụng:
jwk_public_keys: 'https://org-env.apigee.net/edgemicro-auth/jwkPublicKeys'
Chạy lệnh xoay vòng khoá để xoay vòng khoá. (Để biết thêm thông tin về lệnh này, hãy xem phần Xoay vòng khoá.)
edgemicro rotatekey -o $ORG -e $ENV -u $USERNAME -k $KID_VALUE
Ví dụ:
edgemicro rotatekey -o jdoe -e test -u jdoe@google.com -k 2 current nodejs version is v12.5.0 current edgemicro version is 3.1.0 password: Checking if private key exists in the KVM... Checking for certificate... Found Certificate Generating New key/cert pair... Extract new public key Key Rotation successfully completed!
Tham số -k chỉ định một Mã khoá (kid). Mã nhận dạng này được dùng để so khớp một khoá cụ thể.
Edge Microgateway sử dụng giá trị này để chọn trong số một tập hợp khoá trong quá trình xoay vòng khoá. Để biết thêm thông tin, hãy xem Mục 4.5 của thông số kỹ thuật Khoá web JSON.
Sau khi xoay vòng khoá, Edge sẽ trả về nhiều khoá cho Edge Microgateway. Lưu ý trong ví dụ sau, mỗi khoá có một giá trị "kid" (Mã khoá) riêng biệt. Sau đó, cổng vi mô sẽ sử dụng các khoá này để xác thực mã thông báo uỷ quyền. Nếu quá trình xác thực mã thông báo không thành công, cổng microgateway sẽ tìm xem có khoá cũ hơn trong nhóm khoá hay không và thử khoá đó. Định dạng của các khoá được trả về là Khoá web JSON (JWK). Bạn có thể đọc về định dạng này trong RFC 7517.
{
"keys": [
{
"kty": "RSA",
"n": "nSl7R_0wKLiWi6cO3n8aOJwYGBtinq723Jgg8i7KKWTSTYoszOjgGsJf_MX4JEW1YCScwpE5o4o8ccQN09iHVTlIhk8CNiMZNPipClmRVjaL_8IWvMQp1iN66qy4ldWXzXnHfivUZZogCkBNqCz7VSC5rw2Jf57pdViULVvVDGwTgf46sYveW_6h8CAGaD0KLd3vZffxIkoJubh0yMy0mQP3aDOeIGf_akeZeZ6GzF7ltbKGd954iNTiKmdm8IKhz6Y3gLpC9iwQ-kex_j0CnO_daHl1coYxUSCIdv4ziWIeM3dmjQ5_2dEvUDIGG6_Az9hTpNgPE5J1tvrOHAmunQ",
"e": "AQAB",
"kid": "2"
},
{
"kty": "RSA",
"n": "8BKwzx34BMUcHwTuQtmp8LFRCMxbkKg_zsWD6eOMIUTAsORexTGJsTy7z-4aH0wJ3fT-3luAAUPLBQwGcuHo0P1JnbtPrpuYjaJKSZOeIMOnlryJCspmv-1xG4qAqQ9XaZ9C97oecuj7MMoNwuaZno5MvsY-oi5B_gqED3vIHUjaWCErd4reONyFSWn047dvpE6mwRhZbcOTkAHT8ZyKkHISzopkFg8CD-Mij12unxA3ldcTV7yaviXgxd3eFSD1_Z4L7ZRsDUukCJkJ-8qY2-GWjewzoxl-mAW9D1tLK6qAdc89yFem3JHRW6L1le3YK37-bs6b2a_AqJKsKm5bWw",
"e": "AQAB",
"kid": "1"
}
]
}Đang lọc proxy đã tải xuống
Theo mặc định, Edge Microgateway tải tất cả proxy trong tổ chức Edge của bạn xuống, bắt đầu bằng tiền tố đặt tên "edgemicro_". Bạn có thể thay đổi chế độ mặc định này để tải các proxy có tên khớp với một mẫu xuống.
- Mở tệp cấu hình Edge Micro:
~/.edgemicro/org-env-config.yaml - Thêm phần tử proxyPattern trong edge_config. Ví dụ: mẫu sau đây sẽ tải các proxy xuống, chẳng hạn như edgemicro_foo, edgemicro_fast và edgemicro_first.
edge_config: … proxyPattern: edgemicro_f*
Chỉ định sản phẩm không có proxy API
Trong Apigee Edge, bạn có thể tạo một sản phẩm API không chứa bất kỳ proxy API nào. Cấu hình sản phẩm này cho phép khoá API liên kết với sản phẩm đó hoạt động với mọi proxy được triển khai trong tổ chức của bạn. Kể từ phiên bản 2.5.4, Edge Microgateway hỗ trợ cấu hình sản phẩm này.
Gỡ lỗi và khắc phục sự cố
Kết nối với trình gỡ lỗi
Bạn có thể chạy Edge Microgateway bằng trình gỡ lỗi, chẳng hạn như node-inspector. Điều này rất hữu ích cho việc khắc phục sự cố và gỡ lỗi các trình bổ trợ tuỳ chỉnh.
- Khởi động lại Edge Microgateway ở chế độ gỡ lỗi. Để thực hiện việc này, hãy thêm
DEBUG=*vào đầu lệnhstart:DEBUG=* edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET
Để chuyển hướng kết quả gỡ lỗi đến một tệp, bạn có thể sử dụng lệnh sau:
export DEBUG=* nohup edgemicro start \ -o $ORG -e $ENV -k $KEY -s $SECRET 2>&1 | tee /tmp/file.log
- Khởi động trình gỡ lỗi và đặt trình gỡ lỗi này để theo dõi số cổng cho quá trình gỡ lỗi.
- Giờ đây, bạn có thể thực hiện từng bước mã Edge Microgateway, đặt điểm ngắt, xem biểu thức, v.v.
Bạn có thể chỉ định các cờ Node.js chuẩn liên quan đến chế độ gỡ lỗi. Ví dụ: --nolazy giúp gỡ lỗi mã không đồng bộ.
Đang kiểm tra tệp nhật ký
Nếu bạn gặp sự cố, hãy nhớ kiểm tra tệp nhật ký để biết thông tin chi tiết về quá trình thực thi và thông tin lỗi. Để biết thông tin chi tiết, hãy xem bài viết Quản lý tệp nhật ký.
Sử dụng tính năng bảo mật bằng khoá API
Khoá API cung cấp một cơ chế đơn giản để xác thực các ứng dụng khách gửi yêu cầu đến Edge Microgateway. Bạn có thể lấy khoá API bằng cách sao chép giá trị khoá của người dùng: (còn gọi là mã ứng dụng khách) từ một sản phẩm Apigee Edge có chứa proxy xác thực Edge Microgateway.
Lưu khoá vào bộ nhớ đệm
Khoá API được đổi lấy mã thông báo truy cập và các mã này được lưu vào bộ nhớ đệm. Bạn có thể tắt tính năng lưu vào bộ nhớ đệm bằng cách đặt tiêu đề Cache-Control: no-cache cho các yêu cầu gửi đến Edge Microgateway.
Sử dụng khoá API
Bạn có thể truyền khoá API trong yêu cầu API dưới dạng tham số truy vấn hoặc trong tiêu đề. Theo mặc định,
tên tiêu đề và tên tham số truy vấn đều là x-api-key.
Ví dụ về tham số truy vấn:
curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz
Ví dụ về tiêu đề:
curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
Định cấu hình tên khoá API
Theo mặc định, x-api-key là tên được dùng cho cả tiêu đề khoá API và tham số truy vấn.
Bạn có thể thay đổi chế độ mặc định này trong tệp cấu hình, như giải thích trong phần Thay đổi cấu hình. Ví dụ: để đổi tên thành apiKey:
oauth: allowNoAuthorization: false allowInvalidAuthorization: false api-key-header: apiKey
Trong ví dụ này, cả tham số truy vấn và tên tiêu đề đều được thay đổi thành apiKey. Tên x-api-key sẽ không còn hoạt động trong cả hai trường hợp. Xem thêm phần Thực hiện thay đổi về cấu hình.
Ví dụ:
curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
Để biết thêm thông tin về cách sử dụng khoá API với các yêu cầu proxy, hãy xem bài viết Secure Edge Microgateway.
Bật mã phản hồi ngược dòng
Theo mặc định, trình bổ trợ oauth chỉ trả về mã trạng thái lỗi 4xx nếu phản hồi không phải là trạng thái 200. Bạn có thể thay đổi hành vi này để hành vi này luôn trả về chính xác mã 4xx hoặc 5xx, tuỳ thuộc vào lỗi.
Để bật tính năng này, hãy thêm thuộc tính oauth.useUpstreamResponse: true vào cấu hình Edge Microgateway. Ví dụ:
oauth: allowNoAuthorization: false allowInvalidAuthorization: false gracePeriod: 10 useUpstreamResponse: true
Sử dụng tính năng bảo mật mã thông báo OAuth2
Phần này giải thích cách lấy mã truy cập OAuth2 và mã làm mới. Mã truy cập được dùng để thực hiện các lệnh gọi API bảo mật thông qua microgateway. Mã làm mới được dùng để lấy mã truy cập mới.
Cách lấy mã truy cập
Phần này giải thích cách sử dụng proxy edgemicro-auth để lấy mã truy cập.
Bạn cũng có thể lấy mã truy cập bằng lệnh CLI edgemicro token.
Để biết thông tin chi tiết về CLI, hãy xem phần Quản lý mã thông báo.
API 1: Gửi thông tin xác thực dưới dạng tham số nội dung
Thay thế tên tổ chức và môi trường của bạn trong URL, đồng thời thay thế các giá trị Mã nhận dạng người dùng và Khoá bí mật của người dùng (lấy được từ một ứng dụng dành cho nhà phát triển trên Apigee Edge) cho các tham số nội dung client_id và client_secret:
curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" \
-d '{"grant_type": "client_credentials", "client_id": "your_client_id", \
"client_secret": "your_client_secret"}' -H "Content-Type: application/json"
API 2: Gửi thông tin xác thực trong tiêu đề Xác thực cơ bản
Gửi thông tin xác thực ứng dụng dưới dạng tiêu đề Xác thực cơ bản và grant_type dưới dạng tham số biểu mẫu. Dạng lệnh này cũng được thảo luận trong RFC 6749: Khung uỷ quyền OAuth 2.0.
http://<org>-<test>.apigee.net/edgemicro-auth/token -v -u your_client_id:your_client_secret \ -d 'grant_type=client_credentials' -H "Content-Type: application/x-www-form-urlencoded"
Ví dụ về mã được tạo
API này trả về một phản hồi JSON. Lưu ý rằng không có sự khác biệt giữa thuộc tínhtoken và access_token. Bạn có thể sử dụng một trong hai.
{ "token": "eyJraWQiOiIxIiwidHlwIjoi", "access_token": "eyJraWQiOiIxIiwid", "token_type": "bearer", "expires_in": "108000" }
Cách lấy mã làm mới
Để nhận mã làm mới, hãy thực hiện lệnh gọi API đến điểm cuối /token của proxy edgemicro-auth. Bạn PHẢI thực hiện lệnh gọi API này bằng kiểu cấp quyền password. Các bước sau đây sẽ hướng dẫn bạn thực hiện quy trình này.
- Nhận mã truy cập và mã làm mới bằng API
/token. Lưu ý rằng kiểu cấp quyền làpassword:curl -X POST \ https://your_organization-your_environment.apigee.net/edgemicro-auth/token \ -H 'Content-Type: application/json' \ -d '{ "client_id":"mpK6l1Bx9oE5zLdifoDbF931TDnDtLq", "client_secret":"bUdDcFgv3nXffnU", "grant_type":"password", "username":"mpK6lBx9RoE5LiffoDbpF931TDnDtLq", "password":"bUdD2FvnMsXffnU" }'API này trả về một mã truy cập và một mã làm mới. Phản hồi sẽ có dạng như sau:
{ "token": "your-access-token", "access_token": "your-access-token", "token_type": "bearer", "expires_in": "108000", "refresh_token": "your-refresh-token", "refresh_token_expires_in": "431999", "refresh_token_issued_at": "1562087304302", "refresh_token_status": "approved" } - Giờ đây, bạn có thể sử dụng mã làm mới để lấy mã truy cập mới bằng cách gọi điểm cuối
/refreshcủa cùng một API. Ví dụ:curl -X POST \ https://willwitman-test.apigee.net/edgemicro-auth/refresh \ -H 'Content-Type: application/json' \ -d '{ "client_id":"mpK6l1Bx9RoE5zLifoDbpF931TDnDtLq", "client_secret":"bUdDc2Fv3nMXffnU", "grant_type":"refresh_token", "refresh_token":"your-refresh-token" }'API này sẽ trả về một mã truy cập mới. Phản hồi sẽ có dạng như sau:
{ "token": "your-new-access-token" }
Giám sát vĩnh viễn
Forever là một công cụ Node.js tự động khởi động lại ứng dụng Node.js trong trường hợp quy trình gặp sự cố hoặc có lỗi. Edge Microgateway có tệp forever.json mà bạn có thể định cấu hình để kiểm soát số lần và khoảng thời gian khởi động lại Edge Microgateway. Tệp này định cấu hình một dịch vụ Forever có tên là forever-monitor, giúp quản lý Forever theo phương thức lập trình.
Bạn có thể tìm thấy tệp forever.json trong thư mục cài đặt gốc của Edge Microgateway. Xem Nơi cài đặt Edge Microgateway. Để biết thông tin chi tiết về các tuỳ chọn cấu hình, hãy tham khảo tài liệu về forever-monitor.
Lệnh edgemicro forever bao gồm các cờ cho phép bạn chỉ định vị trí của tệp forever.json (cờ -f) và bắt đầu/dừng quy trình giám sát Forever (cờ -a). Ví dụ:
edgemicro forever -f ~/mydir/forever.json -a start
Để biết thêm thông tin, hãy xem phần Giám sát vĩnh viễn trong tài liệu tham khảo về CLI.
Chỉ định điểm cuối của tệp cấu hình
Nếu chạy nhiều phiên bản Edge Microgateway, bạn có thể muốn quản lý cấu hình của các phiên bản đó từ một vị trí duy nhất. Bạn có thể thực hiện việc này bằng cách chỉ định một điểm cuối HTTP nơi Edge Micro có thể tải tệp cấu hình xuống. Bạn có thể chỉ định điểm cuối này khi khởi động Edge Micro bằng cờ -u.
Ví dụ:
edgemicro start -o jdoe -e test -u http://mylocalserver/mgconfig -k public_key -s secret_key
trong đó điểm cuối mgconfig trả về nội dung của tệp cấu hình. Theo mặc định, đây là tệp nằm trong ~/.edgemicro và có quy ước đặt tên: org-env-config.yaml.
Tắt tính năng lưu vào vùng đệm dữ liệu kết nối TCP
Bạn có thể sử dụng thuộc tính cấu hình nodelay để tắt tính năng lưu vào vùng đệm dữ liệu cho các kết nối TCP mà Edge Microgateway sử dụng.
Theo mặc định, các kết nối TCP sử dụng thuật toán Nagle để lưu dữ liệu vào vùng đệm trước khi gửi đi. Việc đặt nodelay thành true sẽ tắt hành vi này (dữ liệu sẽ ngay lập tức kích hoạt dữ liệu mỗi khi socket.write() được gọi). Hãy xem thêm tài liệu về Node.js để biết thêm thông tin chi tiết.
Để bật nodelay, hãy chỉnh sửa tệp cấu hình Edge Micro như sau:
edgemicro:
nodelay: true
port: 8000
max_connections: 1000
config_change_poll_interval: 600
logging:
level: error
dir: /var/tmp
stats_log_interval: 60
rotate_interval: 24
Chạy Edge Microgateway ở chế độ độc lập
Bạn có thể chạy Edge Microgateway mà không cần kết nối với bất kỳ phần phụ thuộc nào của Apigee Edge. Trường hợp này (gọi là chế độ độc lập) cho phép bạn chạy và kiểm thử Edge Microgateway mà không cần kết nối Internet.
Ở chế độ độc lập, các tính năng sau không hoạt động vì cần có kết nối với Apigee Edge:
- OAuth và khoá API
- Hạn mức
- Analytics
Mặt khác, các trình bổ trợ tuỳ chỉnh và tính năng chặn đột biến hoạt động bình thường vì chúng không yêu cầu kết nối với Apigee Edge. Ngoài ra, một trình bổ trợ mới có tên là extauth cho phép bạn uỷ quyền các lệnh gọi API đến cổng vi mô bằng JWT khi ở chế độ độc lập.
Định cấu hình và khởi động cổng
Cách chạy Edge Microgateway ở chế độ độc lập:
- Tạo tệp cấu hình có tên như sau:
$HOME/.edgemicro/$ORG-$ENV-config.yamlVí dụ:
vi $HOME/.edgemicro/foo-bar-config.yaml
- Dán đoạn mã sau vào tệp:
edgemicro: port: 8000 max_connections: 1000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - extauth - spikearrest headers: x-forwarded-for: true x-forwarded-host: true x-request-id: true x-response-time: true via: true extauth: publickey_url: https://www.googleapis.com/oauth2/v1/certs spikearrest: timeUnit: second allow: 10 buffersize: 0 - Xuất biến môi trường sau đây với giá trị "1":
export EDGEMICRO_LOCAL=1
- Thực thi lệnh
startsau, trong đó bạn cung cấp các giá trị để tạo thực thể cho proxy cục bộ:edgemicro start -o $ORG -e $ENV -a $LOCAL_PROXY_NAME \ -v $LOCAL_PROXY_VERSION -t $TARGET_URL -b $BASE_PATH
Trong trường hợp:
- $ORG là tên "org" mà bạn đã sử dụng trong tên tệp cấu hình.
- $ENV là tên "env" mà bạn đã sử dụng trong tên tệp cấu hình.
- $LOCAL_PROXY_NAME là tên của proxy cục bộ sẽ được tạo. Bạn có thể sử dụng bất kỳ tên nào bạn muốn.
- $LOCAL_PROXY_VERSION là số phiên bản của proxy.
- $TARGET_URL là URL cho mục tiêu của proxy. (Mục tiêu là dịch vụ mà proxy gọi.)
- $BASE_PATH là đường dẫn cơ sở của proxy. Giá trị này phải bắt đầu bằng một dấu gạch chéo xuôi. Đối với đường dẫn cơ sở gốc, chỉ cần chỉ định dấu gạch chéo; ví dụ: "/".
Ví dụ:
edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
- Kiểm tra cấu hình.
curl http://localhost:8000/echo { "error" : "missing_authorization" }Vì trình bổ trợ
extauthnằm trong tệpfoo-bar-config.yaml, nên bạn sẽ gặp lỗi "missing_authorization". Trình bổ trợ này xác thực một JWT phải có trong tiêu đề Authorization của lệnh gọi API. Trong phần tiếp theo, bạn sẽ nhận được một JWT cho phép các lệnh gọi API được thực hiện mà không gặp lỗi.
Ví dụ: Lấy mã uỷ quyền
Ví dụ sau đây cho thấy cách lấy JWT từ điểm cuối JWT của Edge Microgateway trên Apigee Edge (edgemicro-auth/jwkPublicKeys).
Điểm cuối này được triển khai khi bạn thực hiện quy trình thiết lập và định cấu hình tiêu chuẩn của Edge Microgateway.
Để lấy JWT từ điểm cuối Apigee, trước tiên, bạn phải thiết lập Edge Microgateway theo cách thông thường và
kết nối với Internet. Điểm cuối Apigee được sử dụng ở đây chỉ nhằm mục đích làm ví dụ và không bắt buộc. Bạn có thể sử dụng một điểm cuối mã thông báo JWT khác nếu muốn. Nếu có, bạn sẽ cần lấy JWT bằng API được cung cấp cho điểm cuối đó.
Các bước sau đây giải thích cách lấy mã thông báo bằng điểm cuối edgemicro-auth/jwkPublicKeys:.
- Bạn phải thực hiện quy trình thiết lập và định cấu hình tiêu chuẩn của Edge Microgateway để triển khai proxy
edgemicro-authcho tổ chức/môi trường của bạn trên Apigee Edge. Nếu đã thực hiện bước này, bạn không cần lặp lại. - Nếu đã triển khai Edge Microgateway cho Apigee Cloud, bạn phải kết nối với Internet để có thể lấy JWT từ điểm cuối này.
-
Dừng Edge Microgateway:
edgemicro stop
- Trong tệp cấu hình bạn đã tạo trước đó (
$HOME/.edgemicro/org-env-config.yaml), hãy trỏ thuộc tínhextauth:publickey_urlvào điểm cuốiedgemicro-auth/jwkPublicKeystrong tổ chức/môi trường Apigee Edge của bạn. Ví dụ:extauth: publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
-
Khởi động lại Edge Microgateway như bạn đã làm trước đó, sử dụng tên tổ chức/môi trường mà bạn đã dùng trong tên tệp cấu hình. Ví dụ:
edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
-
Lấy mã thông báo JWT từ điểm cuối uỷ quyền. Vì đang sử dụng điểm cuối
edgemicro-auth/jwkPublicKeys, nên bạn có thể dùng lệnh CLI này:
Bạn có thể tạo JWT cho Edge Microgateway bằng lệnh edgemicro token hoặc
API. Ví dụ:
edgemicro token get -o your_org -e your_env \ -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy
Trong trường hợp:
- your_org là tên của tổ chức Apigee mà bạn đã định cấu hình Edge Microgateway trước đó.
- your_env là một môi trường trong tổ chức.
- Tuỳ chọn
ichỉ định khoá của người dùng: từ một ứng dụng của nhà phát triển có sản phẩm bao gồm proxyedgemicro-auth. - Tuỳ chọn
schỉ định Khoá bí mật của người dùng từ một ứng dụng của nhà phát triển có sản phẩm bao gồm proxyedgemicro-auth.
Lệnh này yêu cầu Apigee Edge tạo một JWT, sau đó có thể dùng JWT này để xác minh các lệnh gọi API.
Xem thêm phần Tạo mã thông báo.Kiểm thử cấu hình độc lập
Để kiểm thử cấu hình, hãy gọi API bằng mã thông báo được thêm vào tiêu đề Authorization như sau:
curl http://localhost:8000/echo -H "Authorization: Bearer your_token
Ví dụ:
curl http://localhost:8000/echo -H "Authorization: Bearer eyJraWQiOiIxIiwidHlwIjo...iryF3kwcDWNv7OQ"
Ví dụ về đầu ra:
{
"headers":{
"user-agent":"curl/7.54.0",
"accept":"*/*",
"x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
"client_received_start_timestamp":"1535134472699",
"x-authorization-claims":"eyJhdDbiO...M1OTE5MTA1NDkifQ==",
"target_sent_start_timestamp":"1535134472702",
"x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
"x-forwarded-proto":"http",
"x-forwarded-host":"localhost:8000",
"host":"mocktarget.apigee.net",
"x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
"via":"1.1 localhost, 1.1 google",
"x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
"connection":"Keep-Alive"
},
"method":"GET",
"url":"/",
"body":""
}Sử dụng chế độ proxy cục bộ
Ở chế độ proxy cục bộ, Edge Microgateway không yêu cầu triển khai proxy nhận biết microgateway trên Apigee Edge. Thay vào đó, bạn định cấu hình một "proxy cục bộ" bằng cách cung cấp tên proxy cục bộ, đường dẫn cơ sở và URL mục tiêu khi khởi động cổng vi mô. Sau đó, các lệnh gọi API đến cổng vi mô sẽ được gửi đến URL đích của proxy cục bộ. Trong tất cả các khía cạnh khác, chế độ proxy cục bộ hoạt động giống hệt như khi chạy Edge Microgateway ở chế độ thông thường. Quá trình xác thực cũng hoạt động tương tự, cũng như việc chặn lưu lượng truy cập tăng đột biến và thực thi hạn mức, trình bổ trợ tuỳ chỉnh, v.v.
Trường hợp sử dụng và ví dụ
Chế độ proxy cục bộ rất hữu ích khi bạn chỉ cần liên kết một proxy duy nhất với một phiên bản Edge Microgateway. Ví dụ: bạn có thể chèn Edge Microgateway vào Kubernetes dưới dạng proxy sidecar, trong đó một microgateway và một dịch vụ đều chạy trong một nhóm và microgateway quản lý lưu lượng truy cập đến và đi từ dịch vụ đồng hành của nó. Hình sau đây minh hoạ cấu trúc này, trong đó Edge Microgateway hoạt động như một proxy sidecar trong cụm Kubernetes. Mỗi thực thể cổng vi mô chỉ giao tiếp với một điểm cuối duy nhất trên dịch vụ đồng hành:

Một lợi ích của kiểu kiến trúc này là Edge Microgateway cung cấp khả năng quản lý API cho từng dịch vụ được triển khai cho môi trường vùng chứa, chẳng hạn như cụm Kubernetes.
Đang định cấu hình chế độ proxy cục bộ
Để định cấu hình Edge Microgateway chạy ở chế độ proxy cục bộ, hãy làm theo các bước sau:
- Chạy
edgemicro initđể thiết lập môi trường cấu hình cục bộ, chính xác như cách bạn thực hiện trong một quy trình thiết lập Edge Microgateway thông thường. Xem thêm bài viết Định cấu hình Edge Microgateway. - Chạy
edgemicro configure, như bạn làm trong quy trình thiết lập Edge Microgateway thông thường. Ví dụ:edgemicro configure -o your_org -e your_env -u your_apigee_username
Lệnh này triển khai chính sách edgemicro-auth cho Edge và trả về một khoá cũng như mật khẩu mà bạn cần để khởi động microgateway. Nếu bạn cần được trợ giúp, hãy xem bài viết Định cấu hình Edge Microgateway.
- Trên Apigee Edge, hãy tạo một sản phẩm API và đáp ứng các yêu cầu bắt buộc sau đây về cấu hình (bạn có thể quản lý tất cả các cấu hình khác theo ý muốn):
- Bạn phải thêm proxy edgemicro-auth vào sản phẩm. Proxy này
được triển khai tự động khi bạn chạy
edgemicro configure. - Bạn phải cung cấp đường dẫn tài nguyên. Apigee đề xuất thêm đường dẫn này vào
sản phẩm:
/**. Để tìm hiểu thêm, hãy xem phần Định cấu hình hành vi của đường dẫn tài nguyên. Xem thêm phần Tạo sản phẩm API trong tài liệu về Edge.
- Bạn phải thêm proxy edgemicro-auth vào sản phẩm. Proxy này
được triển khai tự động khi bạn chạy
Trên Apigee Edge, hãy tạo một nhà phát triển hoặc bạn có thể sử dụng một nhà phát triển hiện có nếu muốn. Để được trợ giúp, hãy xem bài viết Thêm nhà phát triển bằng giao diện người dùng quản lý Edge.
- Trên Apigee Edge, hãy tạo một ứng dụng dành cho nhà phát triển. Bạn phải thêm sản phẩm API mà bạn vừa tạo vào ứng dụng. Để được trợ giúp, hãy xem phần Đăng ký ứng dụng trong giao diện người dùng quản lý Edge.
- Trên máy đã cài đặt Edge Microgateway, hãy xuất biến môi trường sau đây với giá trị "1".
export EDGEMICRO_LOCAL_PROXY=1
- Thực thi lệnh
startsau:edgemicro start -o your_org -e your_environment -k your_key -s your_secret \ -a local_proxy_name -v local_proxy_version -t target_url -b base_pathTrong trường hợp:
- your_org là tổ chức Apigee của bạn.
- your_environment là một môi trường trong tổ chức của bạn.
- your_key là khoá được trả về khi bạn chạy
edgemicro configure. - your_secret là khoá bí mật được trả về khi bạn chạy
edgemicro configure. - local_proxy_name là tên của proxy cục bộ sẽ được tạo.
- local_proxy_version là số phiên bản của proxy.
- target_url là URL cho mục tiêu của proxy (dịch vụ mà proxy sẽ gọi).
- base_path là đường dẫn cơ sở của proxy. Giá trị này phải bắt đầu bằng một dấu gạch chéo xuôi. Đối với đường dẫn cơ sở gốc, chỉ cần chỉ định dấu gạch chéo; ví dụ: "/".
Ví dụ:
edgemicro start -o your_org -e test -k 7eb6aae644cbc09035a...d2eae46a6c095f \ -s e16e7b1f5d5e24df...ec29d409a2df853163a -a proxy1 -v 1 \ -t http://mocktarget.apigee.net -b /echo
Kiểm thử cấu hình
Bạn có thể kiểm tra cấu hình proxy cục bộ bằng cách gọi điểm cuối proxy. Ví dụ:
nếu đã chỉ định đường dẫn cơ sở là /echo, bạn có thể gọi proxy như sau:
curl http://localhost:8000/echo
{
"error" : "missing_authorization",
"error_description" : "Missing Authorization header"
}Lệnh gọi API ban đầu này đã gây ra lỗi vì bạn không cung cấp khoá API hợp lệ. Bạn có thể tìm thấy khoá này trong ứng dụng Nhà phát triển mà bạn đã tạo trước đó. Mở ứng dụng trong giao diện người dùng Edge, sao chép khoá của người dùng: và sử dụng khoá đó như sau:
curl http://localhost:8000/echo -H 'x-api-key:your_api_key'
Ví dụ:
curl http://localhost:8000/echo -H "x-api-key:DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP"
Ví dụ về đầu ra:
{
"headers":{
"user-agent":"curl/7.54.0",
"accept":"*/*",
"x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
"client_received_start_timestamp":"1535134472699",
"x-authorization-claims":"eyJhdWQiOi...TQ0YmUtOWNlOS05YzM1OTE5MTA1NDkifQ==",
"target_sent_start_timestamp":"1535134472702",
"x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
"x-forwarded-proto":"http",
"x-forwarded-host":"localhost:8000",
"host":"mocktarget.apigee.net",
"x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
"via":"1.1 localhost, 1.1 google",
"x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
"connection":"Keep-Alive"
},
"method":"GET",
"url":"/",
"body":""
}Sử dụng bộ đồng bộ hoá
Phần này giải thích cách sử dụng trình đồng bộ hoá, một tính năng không bắt buộc giúp cải thiện khả năng phục hồi của Edge Microgteway bằng cách cho phép trình đồng bộ hoá truy xuất dữ liệu cấu hình từ Apigee Edge và ghi dữ liệu đó vào cơ sở dữ liệu Redis cục bộ. Khi một phiên bản trình đồng bộ hoá đang chạy, các phiên bản Edge Microgateway khác đang chạy trên các nút khác có thể truy xuất cấu hình của chúng ngay từ cơ sở dữ liệu này.
Tính năng đồng bộ hoá hiện được hỗ trợ để hoạt động với Redis 5.0.x.
Bộ đồng bộ hoá là gì?
Trình đồng bộ hoá cung cấp một mức độ linh hoạt cho Edge Microgateway. Việc này giúp đảm bảo rằng mọi phiên bản của Edge Microgateway đều sử dụng cùng một cấu hình và trong trường hợp bị gián đoạn Internet, các phiên bản Edge Microgateway có thể khởi động và chạy đúng cách.
Theo mặc định, các phiên bản Edge Microgateway phải có thể giao tiếp với Apigee Edge để truy xuất và làm mới dữ liệu cấu hình, chẳng hạn như cấu hình proxy API và sản phẩm API. Nếu kết nối Internet với Edge bị gián đoạn, các phiên bản microgateway có thể tiếp tục hoạt động vì dữ liệu cấu hình mới nhất đã được lưu vào bộ nhớ đệm. Tuy nhiên, các phiên bản cổng vi mô mới không thể khởi động nếu không có kết nối rõ ràng. Hơn nữa, việc gián đoạn Internet có thể khiến một hoặc nhiều phiên bản cổng vi mô chạy với thông tin cấu hình không đồng bộ với các phiên bản khác.
Trình đồng bộ hoá Edge Microgateway cung cấp một cơ chế thay thế cho các phiên bản Edge Microgateway để truy xuất dữ liệu cấu hình mà các phiên bản này cần để khởi động và xử lý lưu lượng truy cập proxy API. Trình đồng bộ hoá giúp tất cả các phiên bản Edge Microgateway chạy trên các nút khác nhau khởi động đúng cách và luôn đồng bộ hoá ngay cả khi kết nối Internet giữa Edge Microgateway và Apigee Edge bị gián đoạn.
Trình đồng bộ hoá là một phiên bản được định cấu hình đặc biệt của Edge Microgateway. Mục đích duy nhất của dịch vụ này là thăm dò ý kiến của Apigee Edge (có thể định cấu hình thời gian), truy xuất dữ liệu cấu hình và ghi dữ liệu đó vào cơ sở dữ liệu Redis cục bộ. Bản thân phiên bản trình đồng bộ hoá không thể xử lý lưu lượng truy cập của proxy API. Bạn có thể định cấu hình các phiên bản Edge Microgateway khác đang chạy trên các nút khác để truy xuất dữ liệu cấu hình từ cơ sở dữ liệu Redis thay vì từ Apigee Edge. Vì tất cả các phiên bản microgateway đều lấy dữ liệu cấu hình từ cơ sở dữ liệu cục bộ, nên chúng có thể khởi động và xử lý các yêu cầu API ngay cả khi xảy ra sự cố gián đoạn Internet.
Định cấu hình một phiên bản trình đồng bộ hoá
Thêm cấu hình sau vào tệp org-env/config.yaml cho
bản cài đặt Edge Microgateway mà bạn muốn dùng làm trình đồng bộ hoá:
edgemicro: redisHost: host_IP redisPort: host_port redisDb: database_index redisPassword: password edge_config: synchronizerMode: 1 redisBasedConfigCache: true
Ví dụ:
edgemicro: redisHost: 192.168.4.77 redisPort: 6379 redisDb: 0 redisPassword: codemaster edge_config: synchronizerMode: 1 redisBasedConfigCache: true
| Phương thức | Mô tả |
|---|---|
redisHost |
Máy chủ lưu trữ nơi phiên bản Redis của bạn đang chạy. Mặc định: 127.0.0.1 |
redisPort |
Cổng của phiên bản Redis. Mặc định: 6379 |
redisDb |
Cơ sở dữ liệu Redis cần sử dụng. Mặc định: 0 |
redisPassword |
Mật khẩu cơ sở dữ liệu của bạn. |
Cuối cùng, hãy lưu tệp cấu hình và khởi động phiên bản Edge Microgateway. Bộ chuyển đổi sẽ bắt đầu thăm dò ý kiến của Apigee Edge và lưu trữ dữ liệu cấu hình đã tải xuống trong cơ sở dữ liệu Redis.
Định cấu hình các phiên bản Edge Microgateway thông thường
Khi trình đồng bộ hoá đang chạy, bạn có thể định cấu hình các nút Edge Microgateway bổ sung để chạy các phiên bản microgateway thông thường xử lý lưu lượng truy cập proxy API. Tuy nhiên, bạn định cấu hình các thực thể này để lấy dữ liệu cấu hình từ cơ sở dữ liệu Redis thay vì từ Apigee Edge.
Thêm cấu hình sau vào tệp org-env/config.yaml của từng nút Edge Microgateway bổ sung. Xin lưu ý rằng thuộc tính synchronizerMode được đặt thành 0. Thuộc tính này đặt thực thể hoạt động như một thực thể Edge Microgateway thông thường xử lý lưu lượng truy cập proxy API và thực thể này sẽ lấy dữ liệu cấu hình từ cơ sở dữ liệu Redis.
edgemicro: redisHost: host_IP redisPort: host_port redisDb: database_index redisPassword: password edge_config: synchronizerMode: 0 redisBasedConfigCache: true
Ví dụ:
edgemicro: redisHost: 192.168.4.77 redisPort: 6379 redisDb: 0 redisPassword: codemaster edge_config: synchronizerMode: 0 redisBasedConfigCache: true
Thuộc tính cấu hình
Các thuộc tính cấu hình sau đây đã được thêm vào để hỗ trợ việc sử dụng trình đồng bộ hoá:
| Thuộc tính | Giá trị | Mô tả |
|---|---|---|
edge_config.synchronizerMode |
0 hoặc 1 | Nếu là 0 (mặc định), Edge Microgateway sẽ hoạt động ở chế độ chuẩn. Nếu là 1, hãy khởi động phiên bản Edge Microgateway để hoạt động như một trình đồng bộ hoá. Ở chế độ này, phiên bản sẽ lấy dữ liệu cấu hình từ Apigee Edge và lưu trữ dữ liệu đó trong cơ sở dữ liệu Redis cục bộ. Phiên bản này không thể xử lý các yêu cầu proxy API; mục đích duy nhất của phiên bản này là thăm dò ý kiến của Apigee Edge để lấy dữ liệu cấu hình và ghi dữ liệu đó vào cơ sở dữ liệu cục bộ. Sau đó, bạn phải định cấu hình các phiên bản microgateway khác để đọc từ cơ sở dữ liệu. |
edge_config.redisBasedConfigCache |
true hoặc false | Nếu đúng, phiên bản Edge Microgateway sẽ tìm nạp dữ liệu cấu hình từ cơ sở dữ liệu Redis thay vì từ Apigee Edge. Cơ sở dữ liệu Redis phải giống với cơ sở dữ liệu mà trình đồng bộ hoá được định cấu hình để ghi vào. Nếu cơ sở dữ liệu Redis không hoạt động hoặc
nếu cơ sở dữ liệu trống, thì cổng vi mô sẽ tìm tệp cache-config.yaml
hiện có để lấy cấu hình.
Nếu là false (mặc định), thì phiên bản Edge Microgateway sẽ tìm nạp dữ liệu cấu hình từ Apigee Edge như bình thường. |
edgemicro.config_change_poll_interval |
Khoảng thời gian, tính bằng giây | Chỉ định khoảng thời gian thăm dò ý kiến để trình đồng bộ hoá lấy dữ liệu từ Apigee Edge. |