將 Edge Microgateway 做為服務部署

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

引言

本主題說明如何以獨立服務的形式,在 Kubernetes 叢集中執行 Edge Microgateway。

詳情請參閱「整合 Edge Microgateway 與 Kubernetes 總覽」。

事前準備

完成必備條件中所述的步驟。

設定 Edge Microgateway

下列指令會為您的 Apigee 機構設定 Edge Microgateway,並部署 Proxy edgemicro-auth

  1. 執行下列指令:

    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 部署為服務

  1. 執行下列指令,在 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
    
  2. 複製以下程式碼並貼到終端機。程式碼會設定 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 服務。

  1. 部署範例 helloworld 服務。由於 Ingress 不知道這個服務,因此無法從叢集外部呼叫服務。

    kubectl apply -f samples/helloworld/helloworld-service.yaml

    輸出內容範例:

    service "helloworld" created deployment "helloworld" created
    
  2. 確認部署作業是否成功。請注意,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

  1. 取得 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
    
  2. 複製 CLUSTER-IPPORT 的值。舉例來說,在上述範例中,這些值為 10.55.254.2558081。系統的值會有所不同。

在 Edge 中建立微閘道感知 Proxy

  1. 登入 Edge UI。
  2. 選取先前設定 Edge Microgateway 時指定的機構。
  3. 在側邊導覽選單中,依序選取「Develop」(開發) >「API Proxy」
  4. 按一下「+ Proxy」。「建構 Proxy」精靈會隨即開啟。
  5. 在第一個精靈頁面中,選取「反向 Proxy (最常用)」
  6. 點選「下一步」
  7. 在精靈的「詳細資料」頁面中,按照下列方式進行設定。請務必如實填寫精靈。確認 Proxy 名稱的前置字串為 edgemicro_

    1. Proxy 名稱:edgemicro_hello
    2. Proxy 基本路徑:/hello

    3. 現有 API:http://<cluster_ip>:<port>

      例如:http://10.55.254.255:8081

  8. 點選「下一步」

  9. 在精靈的「安全性」頁面中,選取「通過 (無)」

  10. 點選「下一步」

  11. 在精靈的「Virtual Hosts」頁面中,接受預設值。

  12. 點選「下一步」

  13. 在精靈的「建立」頁面中檢查 Proxy 設定。確認已選取 test 環境。

  14. 按一下「Build and Deploy」

可建立開發人員

您可以使用現有的開發人員進行測試,也可以按照下列步驟建立新開發人員:

  1. 在側邊導覽選單中,依序選取「發布」>「開發人員」
  2. 按一下「+ 開發人員」
  3. 填寫對話方塊,建立新的開發人員。您可以使用偏好的任何開發人員名稱/電子郵件地址。

可建立 API 產品

請按照下列方式建立 API 產品。您要將兩個 Proxy 新增至產品:edgemicro-authedgemicro_hello

如要進一步瞭解產品設定選項,請參閱 API 產品設定須知

  1. 在側邊導覽選單中,依序選取「Publish」(發布) >「API Products」(API 產品)
  2. 按一下「+ API 產品」。接著,「產品詳細資料」頁面就會出現。
  3. 按照下方說明填寫「產品詳細資料」頁面。除非收到指示,否則請勿點選 [儲存]。

    名稱 hello-world-product
    顯示名稱 Edge Micro hello product
    環境 test
    存取權 Public
    金鑰核准類型 Automatic
  4. 在頁面下半部,按一下「+ 自訂資源」

  5. 將資源設為 / (單斜線)。

  6. 再次選取「+ 自訂資源」,然後新增路徑 /**

  7. 在頁面下半部,按一下「+ API Proxy」

  8. 選取名為 edgemicro-auth 的 Proxy。

  9. 再按一下「+ API Proxy」

  10. 選取名為 edgemicro_hello 的 Migateway 感知 Proxy。

  11. 點按「儲存」

可建立開發人員應用程式

  1. 在側邊導覽選單中,依序選取「發布」>「應用程式」
  2. 按一下「+ 應用程式」。系統隨即會顯示「開發人員應用程式詳細資料」頁面。
  3. 按照下列方式填寫「開發人員應用程式」頁面。除非另有指示,否則請勿儲存。

    名稱 hello-world-app
    顯示名稱 Edge Micro hello app
    開發人員 請選取您建立的測試開發人員,或者任何開發人員沒有問題。
  4. 在「Credentials」(憑證) 區段中,按一下「+ Product」(+ 產品) 並選取您建立的產品:hello-world-product.

  5. 點按「儲存」

  6. 您會回到列出所有開發人員應用程式的頁面。

  7. 選取您剛建立的應用程式 hello-world-app

  8. 按一下「Consumer Key」旁邊的「Show」

  9. 複製消費者金鑰的值。這個值是您將用來對 /hello 發出安全的 API 呼叫 API 金鑰

  10. 請稍候片刻。您在 Apigee Edge 上所做的變更需要幾分鐘才能與叢集中部署的 Edge Microgateway 執行個體同步。

測試 Proxy

取得 Ingress IP 位址

您可以透過 Ingress 的外部 IP 從叢集外部呼叫 Edge Microgateway 服務。

  1. 取得 Ingress 控制器的「外部」IP 位址:

    kubectl get ing -o wide

    輸出內容範例:

    NAME                        HOSTS     ADDRESS          PORTS     AGE
    edge-microgateway-ingress   *         35.238.249.62    80        37m
    
  2. 複製 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:]")
  3. 確認變數是否已匯出。例如:

    echo $GATEWAY_IP

    輸出內容範例:

    35.238.249.62
    

呼叫 API

將設定變更提取至微閘道後,您可以嘗試呼叫 API。您可以使用 Ingress 控制器 IP (儲存在變數 GATEWAY_IP 中來呼叫 API),因為這個 IP 可讓您從 Kubernetes 叢集外部呼叫 Proxy。將 Edge Microgateway 部署至叢集時,系統會建立 Ingress 至 Edge Microgateway 的對應關係。

  1. 不使用 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 金鑰。

  2. 從您建立的開發人員應用程式取得用戶端金鑰。此值為呼叫測試 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 服務。

後續步驟

請參閱「工作」一節,瞭解如何新增自訂外掛程式、調度部署資源、變更設定,以及其他想執行的工作。