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

您正在查看 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

簡介

本主題說明如何在 Kubernetes 叢集中以側邊代理程式的形式執行 Edge Microgateway。您可以透過手動和自動注入兩種方式部署 Sidecar。本主題將說明這兩種做法。

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

事前準備

完成「必要條件」一節所述步驟。

部署測試服務

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

  1. 部署範例:

    kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
  2. 確認服務是否正在執行。您可能需要稍候片刻,等到 pod 進入執行狀態:

    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 做為補充資訊植入

如要手動將 Edge Microgateway 植入服務 pod 中做為補充資訊 Proxy,請執行下列指令:

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:Edge Micro 設定檔的路徑,由 edgemicro configure 指令傳回。
  • 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 的 sidecar 部署作業。如需詳細步驟,請參閱「測試 Proxy」一文。

使用自動補充植入功能

在後續步驟中,您將為 Kubernetes 叢集設定自動附加元件注入功能。這項設定可讓 Edge Microgateway 做為補充資訊 Proxy 植入 Kubernetes。

安裝補充注入器

  1. 安裝可啟用 Edge Microgateway 補充注入功能的 ConfigMap

    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 是安裝系統服務的位置,包括 Ingress 控制器、預設 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

在下一個步驟中,您將執行互動式指令碼,建立與 Kubernetes 命名空間相關聯的 Edge Microgateway 設定。接著,您將設定插入 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 已與測試服務一併植入 pod:

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 感知」Proxy。

取得 Ingress IP 位址

使用 Ingress 的外部 IP 時,您可以從叢集外部呼叫服務。

  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"}
    

    接下來,您將在 Edge 上設定 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. 複製 Consumer Key 的值。這個值是您用來向 helloworld 服務發出安全 API 呼叫的 API 金鑰

  10. 請稍候片刻。您在 Apigee Edge 中所做的變更,需要幾分鐘的時間才能與叢集中部署的 Edge Microgateway 例項同步。

呼叫 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
    

    部署至 Pod 的 helloworld 服務會傳回「Hello world」回應。對該服務的呼叫會先經過 Edge Microgateway,在該處執行驗證。如果您看到「Hello world」回應,表示您已成功設定 Edge Microgateway,讓其在 helloworld 服務 pod 中充當補充資訊 Proxy。

後續步驟

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