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à khả năng mới vào cổng nhỏ bằng cách viết tùy chỉnh trình bổ trợ. Các trình bổ trợ tuỳ chỉnh cho phép bạn tương tác theo cách lập trình với các yêu cầu và phản hồi đi 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 Edge Microgateway thực thể đang chạy trong cụm Kubernetes của bạn.
Phần còn lại của phần này giả định mà bạn đã quen viết và định cấu hình để thiết lập Edge Microgateway tiêu chuẩn. Nếu chưa, 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ợ của bạn, theo hướng dẫn trong bài viết Viết mộ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. Các thư mục trình bổ trợ phải tuân theo cấu trúc tập hợp. 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ợ tùy chỉnh (những tên này chỉ là ví dụ, tên thư mục có thể khác nhau):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 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 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 của bạn. Bạn có thể sử dụng bất kỳ sổ đăng ký nào bạn muốn, chẳng hạn như dưới dạng
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.
Theo mặc định, trình bổ trợ oauth
đã có sẵn.
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ẽ kéo 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 này cho bất kỳ nhóm đã tạo.
Nếu bạn đã triển khai Edge Microgateway làm dịch vụ
Dùng lệnh edgemicroctl
để chèn cấu hình Edge Microgateway đã cập nhật:
Cập nhật quy trình 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 mà bạn đã chỉ định trong lệnhedgemicro configure
.configuration_key
– Khoá được trả về qua 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
– Sổ đă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 mà 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ợ. Hãy gọi API để xem bạn có nhận được hành vi dự kiến hay không. Cho ví dụ: đối với "phản hồi viết hoa" trình bổ trợ, thì văn bản phản hồi sẽ được chuyển đổi thành chữ hoa, như được hiển thị 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 mà bạn đã chỉ định trong lệnhedgemicro configure
.your_key
– Khoá được trả về qua 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
– Sổ đă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 mà 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ụ cho 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 bạn có nhận được hành vi dự kiến không. Ví dụ: đối với "phản hồi viết hoa" trình bổ trợ, nội dung phản hồi đượ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 phải sửa đổi cấu hình Edge Microgateway. 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 thông số cấu hình. Chiến dịch này giải thích cách thực hiện và áp dụng thay đổi cấu hình cho Edge Microgateway chạy trong Kubernetes.
Tạo tệp cấu hình
secret.yaml
như minh hoạ dưới đây: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 các thay đổi đối với tệp cấu hình Edge Microgateway cho tổ chức của bạn và môi trường:
$HOME/.edgemicro/your_org-your_env-config.yaml
Mã hoá Base64 gấp đôi 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
Những thay đổi mới này không được các nhóm cửa nhỏ hiện có tự động chọn; tuy nhiên, các nhóm mới sẽ nhận được các thay đổi. Bạn có thể xoá nhóm hiện có để thì quá trình triển khai sẽ tạo một nhóm mới nhận thay đổi.
Ví dụ về dịch vụ
Ví dụ sau minh hoạ cách cập nhật quá trình triển khai dịch vụ bằng
Lấy 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 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
Hãy mua lại các nhóm. Một nhóm mới sẽ xoay vòng và yêu cầu bạn thay đổi 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 nhân rộng 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 phiên 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.
Mở rộng quy mô triển khai từ 1 bản sao đến bao nhiêu bản sao tuỳ thích. 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 phương thức tự động cấp tài nguyên bổ sung, hãy dùng lệnh sau:
kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
Kiểm tra các phiên bản triển khai để xác minh rằng bạn đã bật tính năng điều chỉnh theo tỷ lệ:
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 Edge Microgateway
Bạn có thể triển khai và định cấu hình nhiều phiên bản của dịch vụ Edge Microgateway 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ể microgateway với bộ trình bổ trợ và tham số riêng. Ví dụ:
- Edge Microgateway Service A chỉ yêu cầu trình bổ trợ ngăn chặn tăng đột biến.
- Dịch vụ B của Edge Microgateway yêu cầu hạn mức và trình bổ trợ OAuth, nhưng không yêu cầu bắt tăng độ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ụ Edge Microgateway A sang không gian tên foo
và Dịch vụ Edge Microgateway B thành
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 một 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 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