準備使用 Envoy 設定 Cloud Service Mesh
設定 Cloud Service Mesh 包含下列階段:
- 授予權限、啟用 Traffic Director API,以及 (如果您使用 Compute Engine) 設定 Cloud DNS。
- 使用 Envoy Proxy 部署應用程式。
- 建立服務和轉送規則,決定流量如何透過服務中介網絡傳送。
本文件說明第一階段,適用於使用舊版 API 的情況。如要瞭解第二和第三階段,請參閱本文稍後的「繼續設定程序」一節,瞭解適用於各平台的指南。
閱讀本指南前,請先熟悉 Cloud Service Mesh 總覽。如果您使用服務轉送 API,請參閱 服務轉送 API 總覽。
事前準備
無論您打算使用 Cloud Service Mesh 設定在虛擬機器 (VM) 執行個體、容器或兩者混合環境中執行的應用程式,都必須先完成下列任務:
- 啟用計費功能。
- 決定 Envoy 的安裝方式。
- 授予必要權限。
- 為專案啟用 Traffic Director API。
- 如果您使用 Compute Engine,請啟用 Cloud DNS API 並設定 Cloud DNS。
- 請確認 Envoy 代理程式使用的服務帳戶具備足夠的權限,可存取 Traffic Director API。
以下各節將說明各項任務的操作說明。
啟用計費功能
請確認您已為 Google Cloud 專案啟用計費功能。詳情請參閱「啟用、停用或變更專案的計費功能」。
決定 Envoy 的安裝方式
您可以使用 Cloud Service Mesh 安裝 Envoy Proxy,並管理這個基礎架構層:
在 Compute Engine 中,您可以自動將 Envoy 新增至在 VM 上執行的應用程式。您會使用 VM 範本來安裝 Envoy、將 Envoy 連結至 Cloud Service Mesh,以及設定 VM 的網路。
在 Google Kubernetes Engine (GKE) 中,您可以自動將 Envoy 附加程式 Proxy 新增至服務的 Pod。您會在叢集中安裝 Envoy 補充 Proxy,以便新增 Envoy 補充 Proxy、將其連結至 Cloud Service Mesh,並設定容器的網路。
最後,您也可以搭配使用 Cloud Service Mesh 中的第三方供應商 Envoy 部署解決方案。GetEnvoy 就是這類產品的例子,可透過套件管理工具安裝及更新 Envoy 代理程式。
關於 Envoy 版本管理
Envoy 必須為 1.9.1 以上版本,才能與 Cloud Service Mesh 搭配運作。建議您一律使用最新的 Envoy 版本,確保已因應已知的安全漏洞。
如果您決定使用自動化方法部署 Envoy,我們會按照以下方式處理這項工作:
當您使用自動 Envoy 部署與 Compute Engine VM 時,安裝的 Envoy 版本是經過驗證可與 Cloud Service Mesh 搭配使用的版本。使用執行個體範本建立新 VM 時,VM 會收到經過驗證的最新版本。如果您有長時間執行的 VM,可以使用逐步更新功能取代現有的 VM,並選擇最新版本。
當您將 Envoy 附加元件注入器與 GKE 搭配使用時,系統會將注入器設為使用我們已驗證可與 Cloud Service Mesh 搭配運作的最新版 Envoy。當 sidecar 與工作負載 Pod 一起注入時,會收到這個版本的 Envoy。如要使用較新的 Envoy 版本,請更新 Envoy 附加元件注入器。
如要瞭解特定 Envoy 版本的相關資訊,請參閱「版本歷史記錄」。如要瞭解安全漏洞,請參閱安全性補充公告。
授予必要的 IAM 權限
您必須具備足夠的 Identity and Access Management (IAM) 權限,才能建立 VM 執行個體,並修改網路來設定 Cloud Service Mesh。如果您在啟用 Cloud Service Mesh 的專案中具備專案擁有者或編輯者角色 (roles/owner
或 roles/editor
),就會自動獲得正確的權限。
否則,您必須具備下表所列的所有 Compute Engine 身分與存取權管理角色。如果您具備這些角色,就會擁有相關權限,詳情請參閱 Compute Engine IAM 說明文件。
工作 | 必要角色 |
---|---|
設定服務帳戶的 IAM 政策。 | 服務帳戶管理員
( roles/iam.serviceAccountAdmin ) |
啟用 Cloud Service Mesh。 | 服務用量管理員
( roles/serviceusage.serviceUsageAdmin ) |
建立網路、子網路和負載平衡器元件。 | Compute 網路管理員
( roles/compute.networkAdmin ) |
新增及移除防火牆規則。 | Compute 安全管理員
( roles/compute.securityAdmin ) |
建立執行個體。 | Compute 執行個體管理員
( roles/compute.instanceAdmin ) |
GKE 節點集區或 Compute Engine VM 必須具有 https://www.googleapis.com/auth/cloud-platform
範圍。詳情請參閱「排解使用 Envoy 的部署問題」。
使用 xDS 3.0 時,請將 roles/trafficdirector.client
角色授予 Cloud Service Mesh Envoy 用戶端使用的服務帳戶。
啟用 Traffic Director API
主控台
在 Google Cloud 控制台中,前往專案的「API Library」(API 資料庫) 頁面。
在「搜尋 API 和服務」欄位中輸入
Traffic Director
。在搜尋結果清單中,按一下「Traffic Director API」。如果系統未列出 Traffic Director API,表示您沒有啟用 Traffic Director API 的必要權限。
在「Traffic Director API」頁面中,按一下「Enable」。
gcloud
執行下列指令:
gcloud services enable trafficdirector.googleapis.com
啟用 Cloud DNS API 並設定 Cloud DNS
如果您要在 Compute Engine 上設定 Cloud Service Mesh,請按照下列操作說明進行。您必須啟用 Cloud DNS API,並為 DNS 名稱解析設定 Cloud DNS。
如需 Cloud Service Mesh 和 DNS 解析的背景資訊,請參閱「Cloud Service Mesh 和 DNS 名稱解析」。
首先,請按照下列操作說明啟用 Cloud DNS API。
主控台
在 Google Cloud 控制台中,前往專案的「API Library」(API 資料庫) 頁面。
在「搜尋 API 和服務」欄位中輸入
DNS
。在搜尋結果清單中,按一下「Cloud DNS API」。如果系統未列出 Cloud DNS API,表示您沒有啟用 Cloud DNS API 的必要權限。
在「Cloud DNS API」頁面中,按一下「啟用」。
gcloud
執行下列指令:
gcloud services enable dns.googleapis.com
接著,請設定 Cloud DNS 代管不公開區域。請參閱「建立不公開區域」一文中的操作說明。
啟用服務帳戶以存取 Traffic Director API
設定資料層並將其連結至 Cloud Service Mesh 後,xDS 用戶端 (例如 Envoy Proxy) 就會連線至 trafficdirector.googleapis.com
xDS 伺服器。這些 xDS 用戶端會向 xDS 伺服器提供服務帳戶身分,確保資料層和控制層之間的通訊獲得適當授權:
- 針對 Compute Engine VM,xDS 用戶端會使用指派給 VM 的服務帳戶。
- 針對 GKE,如果未啟用
Workload Identity
,xDS 用戶端會使用指派給底層 GKE 節點的服務帳戶。 - 如果已啟用
Workload Identity
,xDS 用戶端會使用已繫結至指派給 Pod 的 Kubernetes 服務帳戶的 Google 服務帳戶。
您需要具備下列權限。僅支援 xDS 第 3 版。如果您使用的是 xDS 第 2 版,則必須遷移至 xDS 第 3 版。如要瞭解如何遷移,請參閱「從 xDS v2 遷移至 xDS v3」。
使用 xDS 3 版時,用戶端使用的服務帳戶必須具備 trafficdirector.networks.reportMetrics
、trafficdirector.rateLimitDomains.reportMetrics
和 trafficdirector.networks.getConfigs
權限。您可以使用 IAM Cloud Service Mesh 用戶端角色 (roles/trafficdirector.client
),這會包裝這些權限。
主控台
在 Google Cloud 控制台中,前往「IAM & Admin」頁面。
選取專案。
找出要新增角色的服務帳戶:
- 如果服務帳戶不在「成員」清單中,表示尚未獲派任何角色。按一下「新增」,然後輸入服務帳戶的電子郵件地址。
- 如果服務帳戶已在「成員」清單中,表示已獲指派角色。選取服務帳戶,然後點選「Roles」分頁標籤。
展開角色。找出要編輯的服務帳戶,然後按一下「編輯」圖示
。選取「Other」>「Cloud Service Mesh Client」 角色。
如要將角色套用到服務帳戶,請按一下「儲存」。
gcloud
執行下列指令:
gcloud projects add-iam-policy-binding PROJECT \ --member serviceAccount:SERVICE_ACCOUNT_EMAIL \ --role=roles/trafficdirector.client
更改下列內容:
PROJECT
:輸入gcloud config get-value project
SERVICE_ACCOUNT_EMAIL
:與服務帳戶相關聯的電子郵件地址
繼續設定程序
完成必要步驟後,您可以開始設定服務中介。