將 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: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
    
  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,並將其新增為「microgateway-aware」Proxy 的目標。建立「microgateway-aware」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 上建立 Microgateway 感知 Proxy

  1. 登入 Edge UI。
  2. 選取先前設定 Edge Microgateway 時指定的機構。
  3. 在側邊導覽選單中,依序選取「Develop」>「API Proxies」
  4. 按一下「+ Proxy」。系統會開啟「Build a Proxy」(建構 Proxy) 精靈。
  5. 在第一個精靈頁面中,選取「Reverse proxy (most common)」(反向 Proxy (最常見))。
  6. 點選「下一步」
  7. 在精靈的「Details」頁面中,按照下列方式進行設定。請務必按照畫面上的指示填寫完成精靈。請確認 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. 在精靈的「Build」頁面中,查看 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 的微型閘道感知 Proxy。

  11. 按一下 [儲存]

可建立開發人員應用程式

  1. 在側邊導覽選單中,依序選取「發布」>「應用程式」
  2. 按一下「+ 應用程式」,即可查看「開發人員應用程式詳細資料」頁面。
  3. 請按照下列指示填寫「開發人員應用程式」頁面。請等待系統指示後再儲存。

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

  5. 按一下 [儲存]

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

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

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

  9. 複製 Consumer Key 的值。這個值是您用來向 /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 服務。

後續步驟

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