查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
新增自訂外掛程式
您可以為微門安裝新功能,例如:自訂 外掛程式」一文。自訂外掛程式可讓您透過程式輔助方式與要求互動 以及通過微門傳輸的反應
本節說明如何將外掛程式封裝並部署至 Edge Microgateway 執行個體
本節其餘部分會假設 您熟悉的 適用標準 Edge Microgateway 設定的外掛程式。如果沒有,請參閱「開發自訂外掛程式」。
封裝外掛程式
如要封裝自訂外掛程式,請按照下列步驟操作:
根據「編寫簡易外掛程式」中的指示,編寫及測試外掛程式。
將外掛程式程式碼放在正確的目錄結構中。外掛程式目錄必須採用既定結構。以下範例顯示了 您必須遵守的結構,其中
response-uppercase
和request-headers
是 包含自訂外掛程式程式碼的資料夾名稱 (這些名稱只是範例, 您的資料夾名稱可能有所不同):plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
將
cd
至plugin
資料夾。在
plugin
資料夾中,壓縮整個plugins
資料夾:zip -r plugins.zip plugins/
建立 Docker 映像檔
- 在 ZIP 檔案所在的目錄中,建立名為
Dockerfile
的新檔案。 將下列程式碼新增至
Dockerfile
並儲存檔案: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"]
使用外掛程式建立新的 Edge Microgateway Docker 映像檔,然後推送 複製到 Docker Registry您可以使用偏好的註冊資料庫,例如 如
docker.io
或gcr.io
:docker build -t edgemicroplugins .
docker tag edgemicroplugins container-registry/your-project/edgemicroplugins
docker push container-registry/your-project/edgemicroplugins
例如:
敬上docker build -t edgemicroplugins .
docker tag edgemicroplugins gcr.io/my-project/edgemicroplugins
docker push gcr.io/my-project/edgemicroplugins
更新 Edge Microgateway 設定
新增外掛程式至 Edge Microgateway 設定檔。您可以在 設定檔中的
$HOME/.edgemicro/org-env-config.yaml
例如:
$HOME/.edgemicro/myorg-test-config.yaml
在以下設定範例中,新增了自訂外掛程式 response-uppercase
。
oauth
外掛程式已預先安裝好。
edgemicro:
...
plugins:
sequence:
- oauth
- response-uppercase
更新 Kubernetes 叢集
最後一步是將設定變更套用至 Kubernetes 叢集。Kubernetes 將含有您推送至 Container Registry 的外掛程式程式碼來提取新的映像檔,並用於 建立 Pod
如果您已部署 Edge Microgateway 服務
使用 edgemicroctl
指令插入更新後的 Edge Microgateway 設定:
使用新的映像檔更新 Edge Microgateway 部署作業。例如:
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)
其中:
your_organization
- 您在edgemicro configure
指令中指定的 Apigee 機構。your_environment
:您在edgemicro configure
指令中指定的環境。configuration_key
- 從edgemicro configure
指令傳回的金鑰。configuration_secret
- 從edgemicro configure
指令傳回的密鑰。config_file_path
:從edgemicro configure
指令傳回的 Edge Micro 設定檔路徑。container-registry
:您推送映像檔的 Docker 登錄檔。例如gcr.io
或docker.io
。your_project_name
:您推送 Docker 映像檔的 Docker 存放區專案名稱。image_name
- 您推送的 Docker 映像檔名稱。
範例:
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)
測試外掛程式。呼叫 API,查看您是否獲得預期的行為。適用對象 例如,您可以使用「大寫」外掛程式,回應文字會轉換為 大寫,如下所示:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
輸出:
HELLO WORLD
手動插入新設定
手動插入是相當直接的方法,系統會在您插入新設定時插入新設定 建立虛擬機器
執行下列指令:
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)
其中:
your_org
- 您在edgemicro configure
指令中指定的 Apigee 機構。your_env
:您在edgemicro configure
指令中指定的環境。your_key
- 從edgemicro configure
指令傳回的金鑰。your_secret
- 從edgemicro configure
指令傳回的密鑰。config_file_path
:從edgemicro configure
指令傳回的 Edge Micro 設定檔路徑。container-registry
:您推送映像檔的 Docker 登錄檔。例如gcr.io
或docker.io
。your_project_name
:您推送 Docker 映像檔的 Docker 存放區專案名稱。image_name
- 您推送的 Docker 映像檔名稱。service_deployment_file
:針對 以便套用外掛程式例如:samples/helloworld/helloworld.yaml
。
例如:
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)
測試外掛程式。呼叫服務 API 看看是否能夠正常運作例如,您可以使用「大寫回覆」外掛程式 回應文字會轉換為全部大寫,如下所示:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
輸出:
HELLO WORLD
變更 Edge Microgateway 設定
在某些情況下,您可能需要修改 Edge Microgateway 設定。舉例來說, 可能會想要在 Edge Microgateway 中新增外掛程式或變更設定參數。這個 部分說明如何執行設定變更,以及將設定變更套用至 Edge Microgateway 這個資料庫是在 Kubernetes 中運作
建立設定檔
secret.yaml
,如下所示: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
指定
EDGEMICRO_ORG
、EDGEMICRO_ENV
、EDGEMICRO_KEY
、EDGEMICRO_SECRET
的 Base64 編碼值: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'
變更貴機構的 Edge Microgateway 設定檔,並且 環境:
$HOME/.edgemicro/your_org-your_env-config.yaml
Base64 編碼方式是 設定檔的內容:
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
將變更套用至服務執行所在的命名空間的 Kubernetes。
kubectl apply -f secret.yaml -n
現有的微型閘道 Pod 不會自動套用這些新的變更;不過 新的 Pod 將取得變更您可以刪除現有 Pod Deployment 會建立新的 Pod 來選取變更
服務範例
以下範例說明如何使用新的
取得 Pod。
kubectl get pods
輸出內容範例:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-g7nrg 1/1 Running 0 19h helloworld-6987878fc4-cltc2 1/1 Running 0 1d
刪除
edge-microgateway
Pod。kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
輸出內容範例:
pod "edge-microgateway-57ccc7776b-g7nrg" deleted
請再次取得 Pod。新的 Pod 啟動,並取得設定變更。
kubectl get pods
輸出內容範例:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-7f6tc 1/1 Running 0 5s helloworld-6987878fc4-cltc2 1/1 Running 0 1d
調度 Deployment 資源
本節說明如何使用 Kubernetes 資源調度原則 調度 Deployment 資源
調度服務部署作業的資源
檢查部署作業:
kubectl get deployments
輸出內容範例:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 1 1 1 1 18h helloworld 1 1 1 1 1d
輸出結果表示已部署一項備用資源。
視需要將部署作業從 1 擴充至多個備用資源。在此範例中,
edge-microgateway
服務的資源調度方式,kubectl scale deployment edge-microgateway --replicas=2
(選用) 如要使用自動調度資源功能,請使用下列指令:
kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
請檢查部署作業,確認資源調度功能已啟用:
kubectl get deployments
輸出內容範例:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 2 2 2 2 18h helloworld 1 1 1 1 1d
狀態已變更,包含兩個備用資源。
檢查 Pod:
kubectl get pods
輸出內容範例:
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
輸出內容顯示兩個備用資源都處於執行中狀態。
針對多項 Edge Microgateway 設定使用命名空間
您可以為自己的 Kubernetes 叢集 Kubernetes 叢集這個使用案例可讓您設定每個微閘道執行個體 內含一組專屬的外掛程式和參數例如:
- Edge Microgateway Service A 只需要使用尖峰堆積外掛程式。
- Edge Microgateway Service B 需要配額和 OAuth 外掛程式,但不會達到高峰期。
如要因應這個應用實例,請使用 Kubernetes 命名空間。舉例來說
從 Edge Microgateway Service A 到命名空間 foo
,以及 Edge Microgateway Service B
命名空間 bar
在以下範例中,「OrgA
」機構中設定的 Edge Microgateway 會以服務形式部署到命名空間
使用 -n
選項 foo
:
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
同樣地,在以下範例中,「OrgB
」機構中設定的 Edge Microgateway
已使用 -n
選項,將服務部署至命名空間「bar
」:
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