您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件。 資訊
引言
本主題說明如何以獨立服務的形式,在 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 部署為服務
執行下列指令,在 Kubernetes 叢集中部署 Edge Microgateway 做為服務:
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" created
Ingress 控制器現在已設為允許外部存取
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 的目標。建立「微閘道感知」 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 時指定的機構。
- 在側邊導覽選單中,依序選取「Develop」(開發) >「API Proxy」。
- 按一下「+ Proxy」。「建構 Proxy」精靈會隨即開啟。
- 在第一個精靈頁面中,選取「反向 Proxy (最常用)」。
- 點選「下一步」。
在精靈的「詳細資料」頁面中,按照下列方式進行設定。請務必如實填寫精靈。確認 Proxy 名稱的前置字串為
edgemicro_
。- Proxy 名稱:edgemicro_hello
Proxy 基本路徑:/hello
現有 API:
http://<cluster_ip>:<port>
例如:http://10.55.254.255:8081
點選「下一步」。
在精靈的「安全性」頁面中,選取「通過 (無)」。
點選「下一步」。
在精靈的「Virtual Hosts」頁面中,接受預設值。
點選「下一步」。
在精靈的「建立」頁面中檢查 Proxy 設定。確認已選取 test 環境。
按一下「Build and Deploy」。
可建立開發人員
您可以使用現有的開發人員進行測試,也可以按照下列步驟建立新開發人員:
- 在側邊導覽選單中,依序選取「發布」>「開發人員」。
- 按一下「+ 開發人員」。
- 填寫對話方塊,建立新的開發人員。您可以使用偏好的任何開發人員名稱/電子郵件地址。
可建立 API 產品
請按照下列方式建立 API 產品。您要將兩個 Proxy 新增至產品:edgemicro-auth 和 edgemicro_hello。
如要進一步瞭解產品設定選項,請參閱 API 產品設定須知。
- 在側邊導覽選單中,依序選取「Publish」(發布) >「API Products」(API 產品)。
- 按一下「+ API 產品」。接著,「產品詳細資料」頁面就會出現。
按照下方說明填寫「產品詳細資料」頁面。除非收到指示,否則請勿點選 [儲存]。
名稱 hello-world-product
顯示名稱 Edge Micro hello product
環境 test
存取權 Public
金鑰核准類型 Automatic
在頁面下半部,按一下「+ 自訂資源」。
將資源設為
/
(單斜線)。再次選取「+ 自訂資源」,然後新增路徑
/**
。在頁面下半部,按一下「+ API Proxy」。
選取名為 edgemicro-auth 的 Proxy。
再按一下「+ API Proxy」。
選取名為 edgemicro_hello 的 Migateway 感知 Proxy。
點按「儲存」。
可建立開發人員應用程式
- 在側邊導覽選單中,依序選取「發布」>「應用程式」。
- 按一下「+ 應用程式」。系統隨即會顯示「開發人員應用程式詳細資料」頁面。
按照下列方式填寫「開發人員應用程式」頁面。除非另有指示,否則請勿儲存。
名稱 hello-world-app
顯示名稱 Edge Micro hello app
開發人員 請選取您建立的測試開發人員,或者任何開發人員沒有問題。 在「Credentials」(憑證) 區段中,按一下「+ Product」(+ 產品) 並選取您建立的產品:
hello-world-product.
點按「儲存」。
您會回到列出所有開發人員應用程式的頁面。
選取您剛建立的應用程式
hello-world-app
。按一下「Consumer Key」旁邊的「Show」。
複製消費者金鑰的值。這個值是您將用來對
/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 服務。
後續步驟
請參閱「工作」一節,瞭解如何新增自訂外掛程式、調度部署資源、變更設定,以及其他想執行的工作。