將 Edge Microgateway 做為補充資訊 Proxy 部署

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

簡介

本主題說明如何在 Kubernetes 叢集中執行 Edge Microgateway 補充 Proxy您有兩種補充部署選項:手動和自動 插入內容本主題將說明這兩種選項。

詳情請參閱 Kubernetes 上的 Edge Microgateway 簡介

事前準備

完成必要條件中所述步驟。

部署測試服務

部署簡單的「hello」服務並驗證部署:

  1. 部署範例:

    kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
  2. 請確認服務正在執行。您可能需要稍候片刻,直到 那就是:

    kubectl get pods --namespace=default

    輸出內容範例:

    NAME                          READY     STATUS    RESTARTS   AGE
    helloworld-569d6565f9-lwrrv   1/1       Running   0          17m
    
  3. 刪除測試服務部署作業。稍後啟用 補充資訊插入:

     kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default

使用手動補充插入功能

在兩個補充插入選項中,手動插入補充資訊是更簡單、更直覺的 方法,可透過單一 kubectl 指令完成。

設定 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 myorg -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 做為補充資訊

如要以補充 Proxy 形式手動將 Edge Microgateway 插入服務 Pod,請執行 執行下列指令:

kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -svc=service_deployment_file)

其中:

  • your_org - 您在 edgemicro configure 指令中指定的 Apigee 機構。
  • your_env:您在 edgemicro configure 指令中指定的環境。
  • your_key - 從 edgemicro configure 指令傳回的金鑰。
  • your_secret - 從 edgemicro configure 指令傳回的密鑰。
  • config_file_path:從 edgemicro configure 指令傳回的 Edge Micro 設定檔路徑。
  • service_deployment_file:Pod 的部署檔案路徑 取得隨附補充資訊服務例如:samples/helloworld/helloworld.yaml

例如:

kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -svc=samples/helloworld/helloworld.yaml)

測試設定

  1. 檢查服務部署:

    kubectl get services -n default

    輸出內容範例:

    NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    helloworld   NodePort    10.15.254.163   <none>        8081:32401/TCP   56s
    kubernetes   ClusterIP   10.15.240.1     <none>        443/TCP          41m
    
  2. 現在,您可以測試 Edge Microgateway 的補充資訊部署項目。前往 如需詳細步驟,請測試 Proxy

使用自動補充插入功能

接下來的步驟,您將為 Kubernetes 叢集這項設定允許將 Edge Microgateway 做為補充資訊插入 傳入 Kubernetes

安裝補充資訊插入工具

  1. 安裝 ConfigMap 啟用邊車插入 Edge Microgateway 的功能:

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
  2. 執行下列指令碼來安裝 Webhook 服務。必須啟用 Webhook 服務 自動補充插入:

    ./install/kubernetes/webhook-create-signed-cert.sh \
        --service edgemicro-sidecar-injector \
        --namespace edgemicro-system \
        --secret sidecar-injector-certs
    
  3. 將 CA 套件新增至 Webhook 安裝檔案,Kubernetes API 伺服器會使用這個檔案叫用 Webhook:

    cat install/kubernetes/edgemicro-sidecar-injector.yaml | \
         ./install/kubernetes/webhook-patch-ca-bundle.sh > \
         install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
    
  4. 安裝 Edge Microgateway 補充資訊植入程式 Webhook:

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
    

    輸出內容範例:

    service "edgemicro-sidecar-injector" created
    serviceaccount "edgemicro-sidecar-injector-service-account" created
    deployment "edgemicro-sidecar-injector" created
    mutatingwebhookconfiguration "edgemicro-sidecar-injector" created
    
  5. 確認 Edge Microgateway 補充資訊插入器 Webhook 正在執行:

    kubectl -n edgemicro-system get deployment -ledgemicro=sidecar-injector
    

    輸出內容範例:

    NAME                         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edgemicro-sidecar-injector   1         1         1            1           12m
    
  6. 確認補充資訊插入 Pod 在您的叢集中正在執行。命名空間 edgemicro-system 是系統服務的安裝位置,包括 輸入控制器、預設 HTTP 後端和補充資訊插入程式:

    kubectl get pods -n edgemicro-system

    輸出內容範例:

    NAME                                            READY     STATUS    RESTARTS   AGE
    default-http-backend-55c6c69b88-gfnfd           1/1       Running   0          1h
    edgemicro-ingress-controller-64444469bf-jhn8b   1/1       Running   3          1h
    edgemicro-sidecar-injector-7d95698fbf-cq84q     1/1       Running   0          3m
    

設定及插入 Edge Microgateway

在下一個步驟中,您將執行互動式指令碼來建立 Edge Microgateway 與 Kubernetes 命名空間相關聯的設定然後,您要將 部署至 Kubernetes 叢集

  1. 執行下列互動式指令碼,並提供要求的參數。 指令所產生的組態設定檔,您將在下一個步驟中使用。

    ./install/kubernetes/webhook-edgemicro-patch.sh

    如要瞭解輸入參數,請參閱參考資料

    輸入範例:

    1. Namespace to deploy application [default]:

      按下 Enter 鍵。

    2. Authenticate with OAuth Token ("n","Y") [N/y]

      輸入 n

    3. Apigee username [required]:

      輸入您的 Apigee 使用者名稱 (電子郵件地址)。例如 jdoe@google.com

    4. Apigee password [required]:

      請輸入 Apigee 密碼。

    5. Apigee organization [required]:

      輸入您的 Apigee 機構名稱。

    6. Apigee environment [required]:

      請輸入貴機構的環境名稱。例如「test」。

    7. Virtual Host [default]:

      按下 Enter 鍵。

    8. Is this Private Cloud ("n","y") [N/y]:

      如果您使用的是公用雲端,請輸入 n

    9. Edgemicro Key. Press Enter to generate:

      按下 Enter 鍵。

    10. Edgemicro Secret. Press Enter to generate:

      按下 Enter 鍵。

    11. Edgemicro org-env-config.yaml. Press Enter to generate:

      按下 Enter 鍵。

      輸出內容範例:

      current nodejs version is v6.9.1
      current edgemicro version is 2.5.25
      config initialized to /Users/jdoe/.edgemicro/default.yaml
      Configure for Cloud
      ******************************************************************************************
      Config file is Generated in /Users/jdoe/Work/GITHUB/microgateway_2.5.25_Darwin_x86_64/config directory.
      
      Please make changes as desired.
      *****************************************************************************************
      
    12. Do you agree to proceed("n","y") [N/y]:

      輸入 y

      輸出內容範例:

      Configuring Microgateway with
      
      key:daacf75dd660d160b801c9117fb1ec0935896615479e39dbbae88be81a2d84
      secret:a60fd57c1db9f3a06648173fb541cb9c59188d3b6037a76f490ebf7a6584b0
      config:~/.edgemicro/jdoe-test-config.yaml
      
      ********************************************************************************************************
      kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
      ********************************************************************************************************
      
    ,瞭解如何調查及移除這項存取權。
  2. 執行輸出最後一行提供的指令。這項 kubectl 指令 將產生的 Edge Microgateway 組態設定檔插入 Kubernetes:

    kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
  3. 查看 Webhook 插入狀態。請注意,這項功能目前尚未啟用:

    kubectl get namespace -L edgemicro-injection

    輸出內容範例:

    NAME               STATUS    AGE       EDGEMICRO-INJECTION
    default            Active    1d
    edgemicro-system   Active    1d
    kube-public        Active    1d
    kube-system        Active    1d
    
  4. 執行下列指令,為 Webhook 啟用 Webhook 插入功能:

    kubectl label namespace default edgemicro-injection=enabled
  5. 再次查看 Webhook 插入狀態。請注意,現在已啟用:

    kubectl get namespace -L edgemicro-injection

    輸出內容範例:

    NAME               STATUS    AGE       EDGEMICRO-INJECTION
    default            Active    1d        enabled
    edgemicro-system   Active    1d
    kube-public        Active    1d
    kube-system        Active    1d
    

部署測試服務

現在,請重新部署測試服務。將自動插入 Edge Microgateway 複製到服務的 Pod

kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default

確認已在測試中插入 Edge Microgateway 服務:

kubectl get pods --namespace=default --watch

輸出內容範例:

NAME                          READY     STATUS            RESTARTS   AGE
helloworld-6987878fc4-pkw8h   0/2       PodInitializing   0          12s
helloworld-6987878fc4-pkw8h   2/2       Running           0         26s

當狀態變為 Running 時,按下 ctrl-c 以結束指令。

現在,您可以測試 Edge Microgateway 的自動補充資訊部署作業。前往 如需詳細步驟,請測試 Proxy

測試 Proxy

使用補充資訊部署功能時,系統會自動為您建立服務的 API Proxy。您自己 就不用建立「支援 Edge Microgateway-aware」Proxy 上。

取得輸入 IP 位址

透過 Ingress 的外部 IP,您可以呼叫 Service 從叢集外部擷取

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

    kubectl get ing -o wide

    輸出內容範例:

    NAME      HOSTS     ADDRESS        PORTS     AGE
    gateway   *         35.238.13.54   80        1m
    
  2. 複製 Ingress 的 EXTERNAL-IP 值,並將其匯出至變數。個人中心 可以手動設定此變數:

    export GATEWAY_IP=external_ip

    例如:

    export GATEWAY_IP=35.238.249.62

    或使用以下指令為您設定:

    export GATEWAY_IP=$(kubectl describe ing gateway --namespace default | grep "Address" | cut -d ':' -f2 | tr -d "[:space:]")
  3. 請確認已匯出變數。例如:

    echo $GATEWAY_IP

    輸出內容範例:

    35.238.249.62
    
  4. 呼叫服務:

    curl $GATEWAY_IP

    輸出:

    {"error":"missing_authorization","error_description":"Missing Authorization header"}
    

    接下來,請設定 API 產品和開發人員應用程式,解決缺少授權錯誤的問題 ,以便取得有效的 API 金鑰。將金鑰新增至授權時 API 呼叫的標頭,呼叫將成功,而且您也不會看到此錯誤。

在 Apigee Edge 中建立元件

接下來,請在 Apigee Edge 上建立 API 產品和開發人員應用程式。

建立 API 產品

  1. 登入 Apigee Edge。
  2. 選取「發布」>「發布」API 產品
  3. 按一下「+ API 產品」。顯示產品頁面。
  4. 按照下圖所示填寫「產品」頁面。對於下列未提及的欄位, 可以使用預設值除非收到指示,否則請勿儲存。

    名稱 hello-world-product
    顯示名稱 Edge Micro hello product
    環境 test

  5. 在「路徑」部分中,按一下「+ 自訂資源」

  6. 新增路徑 /

  7. 再次按一下「+ 自訂資源」,然後新增路徑 /**

  8. 在「API Proxy」部分中,按一下「+ API Proxy」,然後新增「edgemicro-auth」

  9. 儲存 API 產品。

可建立開發人員應用程式

  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 呼叫。 helloworld 服務。

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

呼叫 API

將設定變更提取到微閘道後,您就可以 執行下列測試

  1. 在不使用 API 金鑰的情況下呼叫 API。系統會顯示錯誤訊息,如圖所示 如下:

    curl $GATEWAY_IP

    預期輸出內容:

    {"error":"missing_authorization","error_description":"Missing Authorization
    header"}
    

    您需要 API 金鑰才能成功呼叫 API。

  2. 從您建立的開發人員應用程式取得用戶端金鑰。這個值會是 您必須呼叫測試 Proxy 的 API 金鑰:

    curl -H 'x-api-key:your-edge-api-key'  $GATEWAY_IP

    例如:

    curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP

    輸出:

    Hello world
    

    「Hello World」會由部署的 helloworld 服務傳回回應 加入 Pod先通過 Edge Microgateway 驗證服務的呼叫 執行驗證的位置如果看到「Hello world」 則您已成功將 Edge Microgateway 設為 函式做為補充資訊 Proxy,位於 helloworld 服務 Pod 中。

後續步驟

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