使用 Apigee Connect (Beta 版)

本節說明如何使用 Apigee Connect (Beta 版),在執行階段層中將混合管理層與 MART 服務之間的通訊連結起來。

簡介

Apigee Connect 可讓 Apigee Hybrid 管理層安全地連線至執行階段層中的 MART 服務,無須將 MART 端點公開在網際網路上。如果您使用 Apigee Connect,就不需要使用主機別名和授權 DNS 憑證設定 MART 入口閘道。

在混合式執行階段平面上執行的顯示 Apigee Connect 的主要服務

必要條件

請先安裝及設定 Apigee hybrid 1.2.0 以上版本,再設定 Apigee Connect。

  • 如果您是第一次安裝 Apigee Hybrid,請按照 Apigee Hybrid 說明文件中的安裝操作說明進行。
  • 如果您目前使用的是 Apigee hybrid 1.1.x 版,請先將安裝內容升級至 1.2.0 版,再繼續操作。如需升級步驟,請參閱「 升級 Apigee Hybrid

將 Apigee Connect 新增至 Hybrid 執行階段

本節假設您已安裝或升級至 Apigee Hybrid 1.2.0 以上版本,並完成設定

設定並啟用 Apigee Connect 後,系統會忽略 MART 入口:管理層只會透過 Apigee Connect 連線至 MART。混合式執行階段層之間的所有 MART 流量都會經過安全的 Apigee Connect 連線。

請按照下列步驟啟用 Apigee Connect,並搭配 Apigee hybrid 使用:

  1. Google Cloud API 程式庫中啟用 Apigee Connect API。您可以在 Google Cloud (GCP) 主控台中啟用 API,也可以使用 gcloud。如要瞭解如何在 Google Cloud 控制台中啟用 API,請參閱「 步驟 3:啟用 API」一節。如要使用 gcloud 啟用 API:
    $ gcloud config set project YOUR_GCP_PROJECT_ID
    $ gcloud services enable apigeeconnect.googleapis.com

    其中 YOUR_GCP_PROJECT_ID 是啟用 Apigee 且為您佈建 Apigee 機構的 GCP 專案。
  2. Apigee Connect Agent 角色新增至您在 Apigee 混合式安裝說明 建立服務帳戶步驟中建立的 MART 服務帳戶:
    $ gcloud projects add-iam-policy-binding YOUR_GCP_PROJECT_ID
    --member serviceAccount:YOUR_MART_SERVICE_ACCOUNT_EMAIL --role roles/apigeeconnect.Agent

    其中 YOUR_GCP_PROJECT_ID 是啟用 Apigee 且為您配置 Apigee 機構的 GCP 專案,而 YOUR_MART_SERVICE_ACCOUNT_EMAIL 則是 MART 服務帳戶名稱。名稱的格式為電子郵件地址。例如:apigee-mart@my-project.iam.gserviceaccount.com

    預先定義的 Apigee Connect 代理人角色已指派下列權限:
    權限 說明
    apigeeconnect.endpoints.connect 這是設定 Apigee Connect 代理程式的權限。

    如要進一步瞭解如何透過 GCP 主控台或 API 指派存取權,請參閱:

  3. 請確認 MART 服務帳戶的金鑰檔案位於 hybrid_files/service_accounts 目錄中,如「 建立服務帳戶」一文所述。
  4. 開啟覆寫檔案,並新增以下節。設定時,您必須提供下載的服務帳戶金鑰路徑。這組金鑰必須屬於具備 Apigee Connect 代理程式 角色的服務帳戶。
    # Apigee Connect Agent
    connectAgent:
      enabled: true
      serviceAccountPath: ./service-accounts/connect_agent_sa_key.json

    在「k8sCluster」k8sCluster標題下方新增此段落,例如:
    k8sCluster:
      name: your_cluster_name
      region: your_cluster_region
    
    # Apigee Connect Agent
    connectAgent:
      enabled: true
      serviceAccountPath: ./service-accounts/connect_agent_sa_key.json
    # Apigee Connect Agent
    connectAgent:
      enabled: true
      replicaCountMin: 3
      serviceAccountPath: ./service-accounts/connect_agent_sa_key.json
  5. 請找出具有 Apigee 機構管理員角色的服務帳戶金鑰,這個角色是在您最初安裝 Apigee hybrid 時下載的,如啟用同步器存取權一節所述。您需要這個金鑰才能產生權杖,以便進行 API 呼叫,如以下所述。
  6. 執行以下兩個指令,取得符記:
    $ export GOOGLE_APPLICATION_CREDENTIALS=org-admin-service-account-file
    $ export TOKEN=$(gcloud auth application-default print-access-token)

    其中 org-admin-service-account-file 是系統中使用 Apigee 組織管理員角色下載的服務帳戶金鑰路徑。
  7. 呼叫下列 Apigee API,為貴機構啟用 Apigee Connect:
    curl -v -X PUT \
       https://apigee.googleapis.com/v1/organizations/your_org_name \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $TOKEN" \
      -d '{
      "name" : "your_org_name",
      "properties" : {
        "property" : [ {
          "name" : "features.hybrid.enabled",
          "value" : "true"
        }, {
          "name" : "features.mart.connect.enabled",
          "value" : "true"
        } ]
      }
    }'

  8. 在叢集中啟動 Apigee Connect Agent:

    $ $APIGEECTL_HOME/apigeectl apply -f your_overrides_file.yaml -c connect-agent

  9. mart:
      hostAlias: "mart.apigee-hybrid-docs.net"
      serviceAccountPath: ./service-accounts/example-project-apigee-mart.json
      sslCertPath: ./certs/fullchain.pem
      sslKeyPath: ./certs/privkey.key
  10. 請查看 Apigee Connect Agent 記錄。如果沒有回報任何錯誤,表示升級成功:
    $ kubectl logs -n namespace apigee-connect-agent-pod-name

    Apigee Connect Agent 會回報下列記錄類別:
    稽核記錄類別 作業
    DATA_READ ConnectionService.ListConnections
    DATA_WRITE Tether.Egress
    如需有關在 Apigee hybrid 中查看稽核記錄的說明,請參閱「 稽核記錄資訊」。
  11. 透過這項升級,混合式執行階段層可透過 Apigee Connect 與管理層通訊。

  12. 測試安裝結果

另請參閱:移除 Apigee Connect

測試安裝

  1. 開啟 Apigee Hybrid UI
  2. 確認先前建立的所有開發人員和開發人員應用程式都會顯示在使用者介面中。由於這些實體是從 MART 伺服器查詢,因此只有在管理和執行階段平面之間的通訊正確設定時,這些實體才會出現。
  3. 為確保要求是透過 Apigee Connect 而非 MART 入口傳送,請查看 MART 伺服器的記錄。您應該會看到名為 apigee-connect-agent-1.0 的 Apigee Connect 代理人項目:
    $ kubectl logs -n apigee apigee-mart-orgname-rc101-q72tl -c apigee-mart | grep connect

    例如:
    "2019-12-11 04:59:52,321 org: env: target: action: context-id: mode: pool-1-thread-1 INFO MART_AUDITLOG - MartAuditListener.eventOccurred() : Type:Audit edge-gaambo-controlplane@system.gserviceaccount.com 1576040392317 /v1/organizations/apigee-connect-hybrid-prod/developers/ count=100&expand=true&startKey=4ee9e8f7-12b2-4cde-bf10-32d991469876 200 GET apigee-connect-hybrid-prod 10.40.11.3 10.40.0.5 apigee-connect-agent-1.0 null"
  4. 在混合式 UI 中建立 API 產品、開發人員和開發人員應用程式。接著,請檢查 MART 服務記錄,確認記錄項目是否已將實體傳送至執行階段平面。舉例來說,下列記錄項目顯示已收到名為 foo-product 的 API 產品:
    $ kubectl logs -n apigee apigee-mart-orgname-rc101-q72tl -c apigee-mart

    2019-12-16 22:15:29,572 org: env: target: action: context-id: mode: pool-1-thread-1 INFO  MART_AUDITLOG - MartAuditListener.eventOccurred() : Type:Audit edge-gaambo-controlplane@system.gserviceaccount.com 1576534529566 /v1/organizations/myorg/apiproducts/foo-product/ -NA- 201 CREATE myorg 10.16.1.61  10.16.1.64 apigee-connect-agent-1.0 null
    
    2019-12-16 22:15:30,412 org: env: target: action: context-id: mode: pool-1-thread-1 INFO  MART_AUDITLOG - MartAuditListener.eventOccurred() : Type:Audit edge-gaambo-controlplane@system.gserviceaccount.com 1576534530407 /v1/organizations/myorg/apps/ apiProduct=foo-product&expand=false 200 GET myorg 10.16.1.61  10.16.1.64 apigee-connect-agent-1.0 null
  5. 請嘗試建立及部署新的 Proxy,如「 建立及部署 Proxy」一文所述。
  6. 如要設定使用 API 金鑰驗證的 Proxy,請按照「 要求 API 金鑰來保護 API Proxy」一文中的步驟操作。執行階段會透過 Apigee Connect 從管理層取得驗證 API 金鑰所需的資料;因此,如果 API 金鑰驗證成功,您就知道 Apigee Connect 運作正常。您也可以查看 Apigee Connect 記錄,瞭解資料移轉的報表。

移除 Apigee Connect

如果您刪除 Apigee Connect 部署作業,Pod 狀態最多可維持七分鐘的「Terminating」狀態。這段時間是預期的。Apigee Connect 代理程式會等待現有連線到期,而不是突然停止連線。延遲時間可確保不會遺失傳輸中的要求。