將 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. 執行下列指令,將 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. 確認部署成功。請注意,沒有外部 IP helloworld 服務。下列步驟將設定 Edge 存取服務內部 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. 依序選取「開發」>「開發」側邊導覽選單中的「API Proxy」
  4. 按一下「+ Proxy」。「Build a 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. 在精靈的「虛擬主機」頁面中接受預設值。

  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. 複製用戶端金鑰的值。這個值會是 API 金鑰,可以用來發出安全的 API 呼叫。 /hello

  10. 請稍候片刻。您在 Apigee 上所做的變更需要幾分鐘才能完成 要與部署於 物件

測試 Proxy

取得輸入 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」就表示您已成功設定 可呼叫 Kubernetes 中的 helloworld 服務 Edge Microgateway 物件

後續步驟

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