您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
簡介
本主題說明如何在 Kubernetes 叢集中以獨立服務的形式執行 Edge Microgateway。
詳情請參閱「整合 Edge Microgateway 與 Kubernetes 總覽」。
事前準備
完成「必要條件」一節中說明的步驟。
設定 Edge Microgateway
下列指令會為 Apigee 機構設定 Edge Microgateway,並部署 Proxy edgemicro-auth。
執行下列指令:
edgemicro configure -o [org] -e [env] -u [username]
其中:
org:您的 Edge 機構名稱 (您必須是機構管理員)。env:機構中的環境 (例如測試或正式版)。username:與 Apigee 帳戶相關聯的電子郵件地址。
範例
edgemicro configure -o docs -e test -u jdoe@example.com
輸出內容 (範例如下所示) 會儲存至檔案:
。$HOME/.edgemicro/org_name-env_name-config.yaml
current nodejs version is v6.9.1 current edgemicro version is 2.5.25 password: file doesn't exist, setting up Give me a minute or two... this can take a while... App edgemicro-auth deployed. checking org for existing KVM KVM already exists in your org configuring host edgemicroservices.apigee.net for region us-west1 saving configuration information to: /Users/jdoe/.edgemicro/myorg-test-config.yaml vault info: -----BEGIN CERTIFICATE----- MIICpDCCAYwCCQCV9eBcO9a5WzANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAls b2NhbGhvc3QwHhcNMagwODA5MDAzMDEzWhcNMTgwODEwMDAzMDEzWjAUMRIwEAYD VQQDDBlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDh nAHT7JHX/WvWHRFb8FLm53SPIDld5LyPOUfINdEyhSIEeXoOUKg4EPweJPVSC9Vm Hw4ZMtEqWJM/XsQWvLe8ylRJa5wgmzmFCqAsuzs9+rmc9KvJqjpOh2uRTUf7KKfT iXL2UEseprcI5g8zNyqKyEf/ecWIwz3AkkPAZebVTsrdDfIDHvkyhhvlAHZAB9kn GtqP3N8kOlv4KQto9Gr7GYUGUIDugt7gM1F611+RBS+fYRi32GUAq/UQDkhYL8cp oIJiF7UYkk2+9t9CdOCDuIUCvJioHJQd0xvDpkC9f6LvwjwnCwku+4F2Q63+av5I mJoZJQPvW5aP53Qkk+kHAgMBAAEwDKYJKoZIhvcNAQELBQADggEBALyUBolXUFN8 1bf268nR+gS8MOFDTxO1bUz+bKuT/g3K1PuNUJTueT+0L1H2OiZUzazAqwn2sqzN lQuvLg6LjxjlNkqTJGiJvGDcYVq45dv7UyxAZxhqxTxhlQ+Yu5R9pbQnzujezHpH 6gtCoCkSt/QqiJ3YsmsVu5is+HpIJepMt0CyMh5tK9j87hl46QhHklaVfQ3ycMVm /wNPR/pjizg1FDUeq4nj/7DBVbMf9net/BDaZLeSW1HJ1vcsCXIcSZfQd4QymGFn 8ADrND7ydVjwO/s23soPDTy0g4yLIZvky2tpT8d7YahNqSv2n7sXsLxruzcyCoQ4 w+e3Z3F7IKI= -----END CERTIFICATE----- The following credentials are required to start edge micro key: 1a3b2754c7f20614817b86e09895825ecc252d34df6c4be21ae24356f09e6eb4 secret: 16ad2431de73f07f57a6d44048f08d93b63f783bf1f2ac4221182aa7289c7cef edgemicro configuration complete!
將 Edge Microgateway 部署為服務
執行下列指令,將 Edge Microgateway 部署為 Kubernetes 叢集中的服務:
kubectl apply -f <(edgemicroctl -org=org -env=env -key=edgemicro-key -sec=edgemicro-secret -conf=file path of org-env-config.yaml)
其中:
org:您在edgemicro configure指令中指定的 Apigee 組織。env- 您在edgemicro configure指令中指定的環境。edgemicro-key:從edgemicro configure指令傳回的金鑰。edgemicro-secret:從edgemicro configure指令傳回的密鑰。file path of org-env-config.yaml-edgemicro configure指令傳回的 Edge Micro 設定檔路徑。
例如:
kubectl apply -f <(edgemicroctl -org=jdoe -env=test -key=989cce9d41cac94e72626d906562a1d76a19445f8901b3508858bb064988eccb -sec=ec92b793178de7b7e88e346f55a951e3fdae05e700e3ddea7d63977826379784 -conf=/Users/jdoe/.edgemicro/jdoe-test-config.yaml)
輸出內容範例:
config/myorg-test-config.yaml) service "edge-microgateway" created deployment "edge-microgateway" created secret "mgwsecret" created複製下列程式碼並貼到終端機。這段程式碼會設定 Ingress 控制器,允許外部存取
edge-microgateway服務。將指令貼到終端機後,可能需要按 Enter 鍵:cat <<EOF | kubectl apply -f - apiVersion: extensions/v1beta1 kind: Ingress metadata: name: edge-microgateway-ingress annotations: kubernetes.io/ingress.class: "nginx" spec: rules: - http: paths: - path: / backend: serviceName: edge-microgateway servicePort: 8000 EOF成功後,您會看到以下輸出內容:
ingress "edge-microgateway-ingress" createdIngress 控制器現已設定完成,可允許外部存取
edge-microgateway服務。
部署測試服務
下列步驟會將簡單的測試服務部署至叢集。Ingress 控制器不允許從叢集外部呼叫服務。稍後,您會將 Edge Microgateway 設定為呼叫服務做為目標。Ingress 控制器允許外部存取 edge-microgateway 服務。
部署範例
helloworld服務。由於 Ingress 不瞭解這項服務,因此無法從叢集外部呼叫該服務。kubectl apply -f samples/helloworld/helloworld-service.yaml
輸出內容範例:
service "helloworld" created deployment "helloworld" created確認部署成功。請注意,
helloworld服務沒有外部 IP。在下列步驟中,您將設定 Edge Microgateway,以便存取服務的內部 IP。kubectl get services -n default
輸出內容範例:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE edge-microgateway NodePort 10.35.247.222 <none> 8000:32000/TCP 12m helloworld NodePort 10.35.245.103 <none> 8081:30294/TCP 47s kubernetes ClusterIP 10.35.240.1 <none> 443/TCP 47m
設定 Edge Microgateway 做為服務的 Proxy
取得 helloworld 服務的內部 IP,並將其新增為「微閘道感知」Proxy 的目標。建立「Edge Microgateway 感知」Proxy 是 Edge Microgateway 的標準需求。
另請參閱「瞭解支援 Microgateway 的 Proxy」。
取得測試服務的內部 IP
取得
helloworld服務的內部叢集 IP 和連接埠:kubectl get services helloworld
輸出內容範例:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE helloworld NodePort 10.55.254.255 <none> 8081:30329/TCP 3m複製
CLUSTER-IP和PORT的值。舉例來說,在上述範例中,這些值為:10.55.254.255和8081。您的系統值會有所不同。
在 Edge 上建立可識別微閘道的 Proxy
- 登入 Edge UI。
- 選取先前設定 Edge Microgateway 時指定的機構。
- 在側邊導覽選單中,依序選取「開發」>「API Proxy」。
- 按一下「+ Proxy」。「Build a Proxy」(建立 Proxy) 精靈隨即開啟。
- 在精靈的第一頁中,選取「Reverse proxy (most common)」。
- 點選 [下一步]。
在精靈的「詳細資料」頁面中,進行下列設定。請務必按照畫面上的指示填寫精靈。請務必為 Proxy 名稱加上「
edgemicro_」前置字元。- Proxy 名稱:edgemicro_hello
Proxy 底層路徑:/hello
現有 API:
http://<cluster_ip>:<port>例如:http://10.55.254.255:8081
點選 [下一步]。
在精靈的「安全性」頁面中,選取「Pass through (none)」(直通 (無))。
點選 [下一步]。
在精靈的「虛擬主機」頁面中,接受預設值。
點選 [下一步]。
在精靈的「建構」頁面中,檢查 Proxy 設定。確認已選取「test」環境。
按一下「Build and Deploy」(建構及部署)。
可建立開發人員
您可以選取現有開發人員進行測試,也可以按照下列步驟建立新開發人員:
- 在側邊導覽選單中,依序選取「發布」>「開發人員」。
- 按一下「+ 開發人員」。
- 填寫對話方塊,建立新的開發人員。您可以選擇任何開發人員名稱/電子郵件地址。
可建立 API 產品
請按照下文說明建立 API 產品。您會將兩個 Proxy 新增至產品:edgemicro-auth 和 edgemicro_hello。
如要進一步瞭解產品設定選項,請參閱「API 產品設定須知」。
- 在側邊導覽選單中,依序選取「發布」>「API 產品」。
- 按一下「+ API 產品」,系統隨即會顯示「產品詳細資料」頁面。
請按照下列指示填寫「產品詳細資料」頁面。請勿點選「儲存」,直到系統指示為止。
名稱 hello-world-product顯示名稱 Edge Micro hello product環境 test存取權 Public金鑰核准類型 Automatic在頁面下半部,按一下「+ 自訂資源」。
將資源設為
/(單一斜線)。再次選取「+ 自訂資源」,然後新增
/**路徑。在頁面下方,按一下「+ API Proxy」。
選取名為 edgemicro-auth 的 Proxy。
再次點選「+ API Proxy」。
選取名為「edgemicro_hello」edgemicro_hello的微閘道感知 Proxy。
按一下 [儲存]。
可建立開發人員應用程式
- 在側邊導覽選單中,依序選取「發布」>「應用程式」。
- 按一下「+ 應用程式」,系統會顯示「開發人員應用程式詳細資料」頁面。
按照下列步驟填寫「開發人員應用程式」頁面。請勿儲存,直到系統顯示通知為止。
名稱 hello-world-app顯示名稱 Edge Micro hello app開發人員 選取您建立的測試開發人員,或任何開發人員皆可。 在「憑證」部分,按一下「+ 產品」,然後選取您建立的產品:
hello-world-product.按一下 [儲存]。
您會返回列出所有開發人員應用程式的頁面。
選取剛建立的應用程式
hello-world-app。按一下「消費者金鑰」旁邊的「顯示」。
複製消費者金鑰的值。這個值是您用來向
/hello發出安全 API 呼叫的 API 金鑰。請稍候片刻。您在 Apigee Edge 上所做的變更,需要幾分鐘的時間才會與叢集中部署的 Edge Microgateway 執行個體同步。
測試 Proxy
取得 Ingress IP 位址
有了 Ingress 的外部 IP,您就能從叢集外部呼叫 Edge Microgateway 服務。
取得 Ingress 控制器的外部 IP 位址:
kubectl get ing -o wide
輸出內容範例:
NAME HOSTS ADDRESS PORTS AGE edge-microgateway-ingress * 35.238.249.62 80 37m複製 Ingress 的
ADDRESS值,並匯出至變數。您可以手動設定變數:export GATEWAY_IP=external_ip
例如:
export GATEWAY_IP=35.238.249.62
或者,您也可以使用下列指令設定:
export GATEWAY_IP=$(kubectl describe ing edge-microgateway --namespace default | grep "Address" | cut -d ':' -f2 | tr -d "[:space:]")
確認變數已匯出。例如:
echo $GATEWAY_IP
輸出內容範例:
35.238.249.62
呼叫 API
將設定變更提取至微型閘道後,即可嘗試呼叫 API。您可以使用 Ingress 控制器 IP (已儲存在 GATEWAY_IP 變數中) 呼叫 API,因為這個 IP 可讓您從 Kubernetes 叢集外部呼叫 Proxy。當您將 Edge Microgateway 部署至叢集時,系統會建立從 Ingress 到 Edge Microgateway 的對應。
呼叫 API 時不使用 API 金鑰。系統會顯示錯誤訊息,如下所示:
curl $GATEWAY_IP:80/hello/
預期輸出內容:
{"error":"missing_authorization","error_description":"Missing Authorization header"}如果看到這則訊息,可能需要稍等片刻,等待同步作業完成:
{"message":"no match found for /hello/","status":404}您需要 API 金鑰,才能成功呼叫 API。
從您建立的開發人員應用程式取得用戶端金鑰。這個值是呼叫測試 Proxy 時需要的 API 金鑰:
curl -H 'x-api-key:your-edge-api-key' $GATEWAY_IP:80/hello/
例如:
curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP:80/hello/
輸出內容:
Hello world如果看到「Hello world」回應,表示您已成功設定 Edge Microgateway,可呼叫 Kubernetes 叢集內的 helloworld 服務。
後續步驟
如要瞭解如何新增自訂外掛程式、調整部署作業規模、變更設定,以及執行其他工作,請參閱「工作」一節。