本節說明如何使用 Apigee Connect (Beta 版),在混合式管理平面和執行階段平面的 MART 服務之間進行通訊。
簡介
Apigee Connect 可讓 Apigee Hybrid 管理層安全地連線至執行階段層的 MART 服務,不必將 MART 端點公開至網際網路。如果您使用 Apigee Connect,就不必透過主機別名和授權的 DNS 憑證設定 MART 輸入閘道。

必要條件
設定 Apigee Connect 前,請先安裝並設定 Apigee Hybrid 1.2.0 以上版本。
- 如果您是第一次安裝 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 Hybrid 啟用及使用 Apigee Connect,請按照下列步驟操作:
- 在
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 的同一個 GCP 專案,且已為您佈建 Apigee 機構。 - 將「Apigee Connect Agent」角色新增至您在 Apigee Hybrid 安裝說明的「建立服務帳戶」步驟中建立的 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 的 GCP 專案,且系統已為您佈建 Apigee 機構,而YOUR_MART_SERVICE_ACCOUNT_EMAIL則是 MART 服務帳戶名稱。名稱的格式為電子郵件地址。 例如:apigee-mart@my-project.iam.gserviceaccount.com。
「Apigee Connect 代理程式」角色是預先定義的角色,並已指派下列權限:
權限 說明 apigeeconnect.endpoints.connect這是設定 Apigee Connect 代理程式的權限。 如要瞭解如何透過 GCP 主控台或 API 指派授予存取權限,請參閱:
- 請務必將 MART 服務帳戶的金鑰檔案放在
hybrid_files/service_accounts目錄中,如「 建立服務帳戶」一文所述。 - 開啟覆寫檔案,並新增下列節。設定時,您必須提供下載的服務帳戶金鑰路徑。金鑰必須屬於具備 Apigee Connect 代理程式 角色的服務帳戶。
# Apigee Connect Agent connectAgent: enabled: true serviceAccountPath: ./service-accounts/connect_agent_sa_key.json
在 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 - 找出具有 Apigee 機構管理員角色的服務帳戶金鑰。您最初安裝 Apigee Hybrid 時,已下載這項金鑰,如「啟用同步器存取權」一節所述。您需要這個金鑰才能產生權杖,並進行 API 呼叫,詳情請參閱下文。
- 執行下列兩個指令來取得權杖:
$ export GOOGLE_APPLICATION_CREDENTIALS=org-admin-service-account-file $ export TOKEN=$(gcloud auth application-default print-access-token)
其中 org-admin-service-account-file 是系統中服務帳戶金鑰的路徑,您已透過「Apigee Organization Admin」(Apigee 組織管理員) 角色下載該金鑰。 - 呼叫下列 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" } ] } }'
- 在叢集中啟動 Apigee Connect 代理程式:
$ $APIGEECTL_HOME/apigeectl apply -f your_overrides_file.yaml -c connect-agent
- 檢查 Apigee Connect 代理程式記錄。如果沒有回報任何錯誤,表示升級成功:
$ kubectl logs -n namespace apigee-connect-agent-pod-name
Apigee Connect 代理程式會回報下列記錄類別:
如需在 Apigee Hybrid 中查看稽核記錄的相關說明,請參閱「 稽核記錄資訊」。稽核記錄類別 作業 DATA_READ ConnectionService.ListConnectionsDATA_WRITE Tether.Egress - 測試安裝結果。
mart: hostAlias: "mart.apigee-hybrid-docs.net" serviceAccountPath: ./service-accounts/example-project-apigee-mart.json sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.key
升級後,Hybrid 執行階段層會透過 Apigee Connect 與管理層通訊。
另請參閱:移除 Apigee Connect。
測試安裝
- 開啟 Apigee Hybrid 使用者介面。
- 確認先前建立的任何開發人員和開發人員應用程式是否顯示在 UI 中。 由於這些實體是從 MART 伺服器查詢而來,因此只有在管理和執行階段層之間的通訊設定正確無誤時,才會顯示這些實體。
- 如要確保要求是透過 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"
- 在混合式 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
- 請嘗試建立及部署新的 Proxy,詳情請參閱「 建立及部署 Proxy」。
- 按照「 使用 API 金鑰保護 API Proxy」一文中的步驟,設定 Proxy 進行 API 金鑰驗證。執行階段會透過 Apigee Connect 從管理平面取得驗證 API 金鑰所需的資料;因此,如果 API 金鑰驗證正常運作,就表示 Apigee Connect 運作正常。您也可以查看 Apigee Connect 記錄,瞭解資料傳輸報表。
移除 Apigee Connect
刪除 Apigee Connect 部署作業後,Pod 狀態最多可能在「終止」狀態停留七分鐘。這是預期時間。Apigee Connect 代理程式會等待現有連線到期,而不是突然停止連線。延遲可確保不會遺失進行中的要求。