Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về
Apigee X. thông tin
Thêm trình bổ trợ tuỳ chỉnh
Bạn có thể thêm các tính năng và chức năng mới vào cổng vi mô bằng cách viết trình bổ trợ tuỳ chỉnh. Trình bổ trợ tuỳ chỉnh cho phép bạn tương tác theo phương thức lập trình với các yêu cầu và phản hồi chuyển qua cổng vi mô.
Phần này giải thích cách đóng gói và triển khai trình bổ trợ cho một thực thể Edge Microgateway chạy trong cụm Kubernetes.
Phần còn lại của phần này giả định rằng bạn đã quen thuộc với việc viết và định cấu hình các trình bổ trợ cho chế độ thiết lập Cổng vi mô Edge tiêu chuẩn. Nếu không, hãy xem phần Phát triển trình bổ trợ tuỳ chỉnh.
Đóng gói(các) trình bổ trợ
Để đóng gói(các) trình bổ trợ tuỳ chỉnh, hãy làm theo các bước sau:
Viết và kiểm thử trình bổ trợ theo hướng dẫn trong phần Viết trình bổ trợ đơn giản.
Đặt mã trình bổ trợ của bạn vào cấu trúc thư mục thích hợp. Thư mục trình bổ trợ phải tuân theo một cấu trúc nhất định. Ví dụ sau đây cho thấy cấu trúc mà bạn phải tuân theo, trong đó
response-uppercase
vàrequest-headers
là tên của các thư mục chứa mã trình bổ trợ tuỳ chỉnh (các tên này chỉ là ví dụ, tên thư mục của bạn có thể khác):plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
cd
vào thư mụcplugin
.Trong thư mục
plugin
, hãy nén toàn bộ thư mụcplugins
:zip -r plugins.zip plugins/
Tạo hình ảnh Docker
- Trong cùng thư mục chứa tệp zip, hãy tạo một tệp mới có tên là
Dockerfile
. Thêm mã sau vào
Dockerfile
rồi lưu tệp:FROM gcr.io/apigee-microgateway/edgemicro:latest RUN apt-get install unzip COPY plugins.zip /opt/apigee/ RUN chown apigee:apigee /opt/apigee/plugins.zip RUN su - apigee -c "unzip /opt/apigee/plugins.zip -d /opt/apigee" EXPOSE 8000 EXPOSE 8443 ENTRYPOINT ["entrypoint"]
Tạo một hình ảnh Docker Edge Microgateway mới bằng các trình bổ trợ và đẩy hình ảnh đó vào sổ đăng ký Docker. Bạn có thể sử dụng bất kỳ sổ đăng ký nào mà bạn muốn, chẳng hạn như
docker.io
hoặcgcr.io
:docker build -t edgemicroplugins .
docker tag edgemicroplugins container-registry/your-project/edgemicroplugins
docker push container-registry/your-project/edgemicroplugins
Ví dụ:
docker build -t edgemicroplugins .
docker tag edgemicroplugins gcr.io/my-project/edgemicroplugins
docker push gcr.io/my-project/edgemicroplugins
Cập nhật cấu hình Edge Microgateway
Thêm(các) trình bổ trợ vào tệp cấu hình Edge Microgateway. Bạn có thể tìm thấy tệp cấu hình tại đây:
$HOME/.edgemicro/org-env-config.yaml
Ví dụ:
$HOME/.edgemicro/myorg-test-config.yaml
Trong cấu hình mẫu sau, trình bổ trợ tuỳ chỉnh response-uppercase
đã được thêm vào.
Trình bổ trợ oauth
đã có sẵn theo mặc định.
edgemicro:
...
plugins:
sequence:
- oauth
- response-uppercase
Cập nhật cụm Kubernetes
Bước cuối cùng là áp dụng thay đổi về cấu hình cho cụm Kubernetes. Kubernetes sẽ lấy hình ảnh mới bằng mã trình bổ trợ mà bạn đã đẩy vào sổ đăng ký vùng chứa và sử dụng hình ảnh đó cho mọi pod mới tạo.
Nếu bạn đã triển khai Cổng vi mô Edge dưới dạng dịch vụ
Sử dụng lệnh edgemicroctl
để chèn cấu hình Edge Microgateway đã cập nhật:
Cập nhật bản triển khai Edge Microgateway bằng hình ảnh mới. Ví dụ:
kubectl apply -f <(edgemicroctl -org=your_organization -env=your_environment -key=configuration_key -sec=configuration_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest)
trong đó:
your_organization
– Tổ chức Apigee mà bạn đã chỉ định trong lệnhedgemicro configure
.your_environment
– Môi trường bạn chỉ định trong lệnhedgemicro configure
.configuration_key
– Khoá được trả về từ lệnhedgemicro configure
.configuration_secret
– Khoá bí mật được trả về từ lệnhedgemicro configure
.config_file_path
– Đường dẫn đến tệp cấu hình Edge Micro được trả về từ lệnhedgemicro configure
.container-registry
– Cấu phần đăng ký Docker nơi bạn đẩy hình ảnh. Ví dụ:gcr.io
hoặcdocker.io
your_project_name
– Tên dự án cho kho lưu trữ Docker nơi bạn đẩy hình ảnh Docker.image_name
– Tên của hình ảnh Docker mà bạn đã đẩy.
Ví dụ:
kubectl apply -f <(edgemicroctl -org=jdoe -env=test -key=f2d2eaa52b758493d00cec656e574ac947bee1d701c5c5f3295e5eaa39a3b -sec=0c38cda3fac6c59152f15657052ba1728f8003c1a763cf08da2a -conf=/Users/jdoe/.edgemicro/apigeesearch-test-config.yaml -img=gcr.io/jdoe-project/edgemicroplugins:latest)
Kiểm thử trình bổ trợ. Gọi API để xem bạn có nhận được hành vi dự kiến hay không. Ví dụ: đối với trình bổ trợ "response uppercase" (phản hồi viết hoa), văn bản phản hồi sẽ được chuyển đổi thành toàn bộ chữ hoa, như minh hoạ dưới đây:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
Kết quả:
HELLO WORLD
Chèn cấu hình mới theo cách thủ công
Chèn thủ công là một phương pháp đơn giản, trong đó bạn chèn cấu hình mới từ dòng lệnh.
Thực thi lệnh sau:
kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest -svc=service_deployment_file)
trong đó:
your_org
– Tổ chức Apigee mà bạn đã chỉ định trong lệnhedgemicro configure
.your_env
– Môi trường bạn chỉ định trong lệnhedgemicro configure
.your_key
– Khoá được trả về từ lệnhedgemicro configure
.your_secret
– Khoá bí mật được trả về từ lệnhedgemicro configure
.config_file_path
– Đường dẫn đến tệp cấu hình Edge Micro được trả về từ lệnhedgemicro configure
.container-registry
– Cấu phần đăng ký Docker nơi bạn đẩy hình ảnh. Ví dụ:gcr.io
hoặcdocker.io
your_project_name
– Tên dự án cho kho lưu trữ Docker nơi bạn đẩy hình ảnh Docker.image_name
– Tên của hình ảnh Docker mà bạn đã đẩy.service_deployment_file
– Đường dẫn đến tệp triển khai của dịch vụ mà(các) trình bổ trợ sẽ áp dụng. Ví dụ:samples/helloworld/helloworld.yaml
.
Ví dụ:
kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -img=gcr.io/myproject/edgemicroplugins:latest -svc=samples/helloworld/helloworld.yaml)
Kiểm thử trình bổ trợ. Gọi API dịch vụ để xem liệu bạn có nhận được hành vi dự kiến hay không. Ví dụ: đối với trình bổ trợ "response uppercase" (phản hồi viết hoa), văn bản phản hồi sẽ được chuyển đổi thành toàn bộ chữ hoa, như minh hoạ dưới đây:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
Kết quả:
HELLO WORLD
Thay đổi cấu hình Edge Microgateway
Trong một số trường hợp, bạn có thể cần sửa đổi cấu hình Cổng vi mô Edge. Ví dụ: bạn có thể muốn thêm một trình bổ trợ mới vào Edge Microgateway hoặc thay đổi một tham số cấu hình. Phần này giải thích cách thực hiện và áp dụng các thay đổi về cấu hình cho Edge Microgateway chạy trong Kubernetes.
Tạo tệp cấu hình
secret.yaml
như sau:apiVersion: v1 kind: Secret metadata: name: mgwsecret type: Opaque data: mgorg: EDGEMICRO_ORG mgenv: EDGEMICRO_ENV mgkey: EDGEMICRO_KEY mgsecret: EDGEMICRO_SECRET mgconfig: EDGEMICRO_CONFIG
Chỉ định giá trị được mã hoá base64 của
EDGEMICRO_ORG
,EDGEMICRO_ENV
,EDGEMICRO_KEY
,EDGEMICRO_SECRET
:echo -n "your-org" | base64 | tr -d '\n'
echo -n "your-org-env" | base64 | tr -d '\n'
echo -n "your-mg-key" | base64 | tr -d '\n'
echo -n "your-mg-secret" | base64 | tr -d '\n'
Thực hiện thay đổi đối với tệp cấu hình Edge Microgateway cho tổ chức và môi trường của bạn:
$HOME/.edgemicro/your_org-your_env-config.yaml
Mã hoá Base64 hai lần nội dung của tệp cấu hình:
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
Áp dụng các thay đổi cho kubernetes trên không gian tên nơi dịch vụ của bạn đang chạy.
kubectl apply -f secret.yaml -n
Các thay đổi mới này không được các nhóm microgateway hiện tại tự động nhận; tuy nhiên, các nhóm mới sẽ nhận được các thay đổi này. Bạn có thể xoá pod hiện có để quá trình triển khai tạo một pod mới nhận thay đổi.
Ví dụ về dịch vụ
Ví dụ sau đây minh hoạ cách cập nhật một bản triển khai dịch vụ bằng một
Tải các pod.
kubectl get pods
Kết quả điểm dữ liệu:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-g7nrg 1/1 Running 0 19h helloworld-6987878fc4-cltc2 1/1 Running 0 1d
Xoá nhóm
edge-microgateway
.kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
Kết quả điểm dữ liệu:
pod "edge-microgateway-57ccc7776b-g7nrg" deleted
Tải lại các nhóm. Một nhóm mới sẽ khởi động và nhận các thay đổi về cấu hình.
kubectl get pods
Kết quả điểm dữ liệu:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-7f6tc 1/1 Running 0 5s helloworld-6987878fc4-cltc2 1/1 Running 0 1d
Mở rộng quy mô triển khai
Phần này giải thích cách bạn có thể sử dụng các nguyên tắc mở rộng quy mô của Kubernetes để mở rộng quy mô triển khai.
Mở rộng quy mô triển khai dịch vụ
Kiểm tra các bản triển khai:
kubectl get deployments
Kết quả điểm dữ liệu:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 1 1 1 1 18h helloworld 1 1 1 1 1d
Kết quả cho biết một bản sao được triển khai.
Điều chỉnh quy mô triển khai từ 1 đến số lượng bản sao tuỳ ý. Trong ví dụ này, dịch vụ
edge-microgateway
được điều chỉnh theo tỷ lệ.kubectl scale deployment edge-microgateway --replicas=2
(Không bắt buộc) Nếu bạn muốn sử dụng tính năng tự động điều chỉnh theo quy mô, hãy sử dụng lệnh sau:
kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
Kiểm tra các bản triển khai để xác minh rằng bạn đã bật tính năng mở rộng quy mô:
kubectl get deployments
Kết quả điểm dữ liệu:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 2 2 2 2 18h helloworld 1 1 1 1 1d
Trạng thái đã được thay đổi để bao gồm hai bản sao.
Kiểm tra các nhóm:
kubectl get pods
Kết quả điểm dữ liệu:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-g7nrg 1/1 Running 0 18h edge-microgateway-57ccc7776b-rvfz4 1/1 Running 0 41s helloworld-6987878fc4-cltc2 1/1 Running 0 1d
Kết quả cho thấy cả hai bản sao đều ở trạng thái đang chạy.
Sử dụng không gian tên cho nhiều cấu hình Cổng vi mô Edge
Bạn có thể triển khai và định cấu hình nhiều thực thể của dịch vụ Cổng vi mô Edge cho cụm Kubernetes. Trường hợp sử dụng này cho phép bạn định cấu hình từng thực thể cổng vi mô bằng bộ trình bổ trợ và thông số riêng. Ví dụ:
- Dịch vụ Microgateway Edge A chỉ yêu cầu trình bổ trợ chặn sự cố tăng đột biến.
- Dịch vụ Microgateway Edge B yêu cầu trình bổ trợ hạn mức và oauth, nhưng không yêu cầu tính năng chặn đột biến.
Để giải quyết trường hợp sử dụng này, hãy sử dụng không gian tên của Kubernetes. Ví dụ: bạn có thể triển khai Dịch vụ Microgateway Edge A vào không gian tên foo
và Dịch vụ Microgateway Edge B vào không gian tên bar
.
Trong ví dụ sau, Edge Microgateway được định cấu hình trong tổ chức OrgA
được triển khai dưới dạng dịch vụ cho không gian tên foo
bằng cách sử dụng tuỳ chọn -n
:
kubectl apply -f <(edgemicroctl -org=myorgA -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgA-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n foo
Tương tự, trong ví dụ sau, Edge Microgateway được định cấu hình trong tổ chức OrgB
được triển khai dưới dạng dịch vụ cho không gian tên bar
bằng cách sử dụng tuỳ chọn -n
:
kubectl apply -f <(edgemicroctl -org=myorgB -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgB-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n bar