您正在查看 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
:Edge Micro 設定檔的路徑,由edgemicro configure
指令傳回。
例如:
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,並將其新增為「microgateway-aware」Proxy 的目標。建立「microgateway-aware」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 上建立 Microgateway 感知 Proxy
- 登入 Edge UI。
- 選取先前設定 Edge Microgateway 時指定的機構。
- 在側邊導覽選單中,依序選取「Develop」>「API Proxies」。
- 按一下「+ Proxy」。系統會開啟「Build a Proxy」(建構 Proxy) 精靈。
- 在第一個精靈頁面中,選取「Reverse proxy (most common)」(反向 Proxy (最常見))。
- 點選「下一步」。
在精靈的「Details」頁面中,按照下列方式進行設定。請務必按照畫面上的指示填寫完成精靈。請確認 Proxy 名稱含有前置字串
edgemicro_
。- Proxy 名稱:edgemicro_hello
Proxy 基礎路徑:/hello
現有 API:
http://<cluster_ip>:<port>
例如:http://10.55.254.255:8081
點選「下一步」。
在精靈的「安全性」頁面中,選取「傳送 (無)」。
點選「下一步」。
在精靈的「Virtual Hosts」(虛擬主機) 頁面中,接受預設值。
點選「下一步」。
在精靈的「Build」頁面中,查看 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 的微型閘道感知 Proxy。
按一下 [儲存]。
可建立開發人員應用程式
- 在側邊導覽選單中,依序選取「發布」>「應用程式」。
- 按一下「+ 應用程式」,即可查看「開發人員應用程式詳細資料」頁面。
請按照下列指示填寫「開發人員應用程式」頁面。請等待系統指示後再儲存。
名稱 hello-world-app
顯示名稱 Edge Micro hello app
開發人員 選取您建立的測試開發人員或任何開發人員即可。 在「憑證」部分,按一下「+ 產品」,然後選取您建立的產品:
hello-world-product.
按一下 [儲存]。
您會返回列出所有開發人員應用程式的頁面。
選取您剛建立的應用程式
hello-world-app
。按一下「Consumer Key」旁的「Show」。
複製 Consumer Key 的值。這個值是您用來向
/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 服務。
後續步驟
如要瞭解如何新增自訂外掛程式、調整部署規模、變更設定,以及其他您可能要執行的作業,請參閱「工作」一節。