將 Edge Microgateway 做為服務部署

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

簡介

本主題說明如何在 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. 執行下列指令,將 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
    
  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 的目標。建立「Edge Microgateway 感知」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. 在側邊導覽選單中,依序選取「開發」>「API Proxy」
  4. 按一下「+ Proxy」。「Build a Proxy」(建立 Proxy) 精靈隨即開啟。
  5. 在精靈的第一頁中,選取「Reverse proxy (most common)」
  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. 在精靈的「安全性」頁面中,選取「Pass through (none)」(直通 (無))

  10. 點選 [下一步]。

  11. 在精靈的「虛擬主機」頁面中,接受預設值。

  12. 點選 [下一步]。

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

  14. 按一下「Build and Deploy」(建構及部署)

可建立開發人員

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

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

可建立 API 產品

請按照下文說明建立 API 產品。您會將兩個 Proxy 新增至產品:edgemicro-authedgemicro_hello

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

  1. 在側邊導覽選單中,依序選取「發布」>「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」edgemicro_hello的微閘道感知 Proxy。

  11. 按一下 [儲存]

可建立開發人員應用程式

  1. 在側邊導覽選單中,依序選取「發布」>「應用程式」
  2. 按一下「+ 應用程式」,系統會顯示「開發人員應用程式詳細資料」頁面。
  3. 按照下列步驟填寫「開發人員應用程式」頁面。請勿儲存,直到系統顯示通知為止。

    名稱 hello-world-app
    顯示名稱 Edge Micro hello app
    開發人員 選取您建立的測試開發人員,或任何開發人員皆可。
  4. 在「憑證」部分,按一下「+ 產品」,然後選取您建立的產品:hello-world-product.

  5. 按一下 [儲存]

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

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

  8. 按一下「消費者金鑰」旁邊的「顯示」

  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 服務。

後續步驟

如要瞭解如何新增自訂外掛程式、調整部署作業規模、變更設定,以及執行其他工作,請參閱「工作」一節。