準備透過 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 設定與應用程式並行執行的 Envoy Proxy,這些應用程式位於虛擬機器 (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、將其連線至 Cloud Service Mesh,並設定 VM 的網路。
在 Google Kubernetes Engine (GKE) 上,您可以自動將 Envoy Sidecar Proxy 新增至服務的 Pod。您可以在叢集中安裝 Envoy 補充注入器,加入 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 時,系統會安裝我們驗證過可與 Cloud Service Mesh 搭配使用的 Envoy 版本。使用執行個體範本建立新 VM 時,VM 會收到我們驗證過的最新版本。如果 VM 執行時間較長,可以使用滾動更新來取代現有 VM,並採用最新版本。
在 GKE 中使用 Envoy Sidecar 注入器時,注入器會設定為使用最新版 Envoy,我們已驗證該版本可與 Cloud Service Mesh 搭配運作。當 Sidecar 插入工作負載 Pod 時,會收到這個版本的 Envoy。如要取得較新版本的 Envoy,請更新 Envoy Sidecar 注入器。
如要瞭解特定 Envoy 版本,請參閱「版本記錄」。如要瞭解安全漏洞,請參閱安全性補充公告。
授予必要的 IAM 權限
您必須具備足夠的 Identity and Access Management (IAM) 權限,才能建立 VM 執行個體及修改網路,以設定 Cloud Service Mesh。如果您在啟用 Cloud Service Mesh 的專案中,具有專案擁有者或編輯者角色 (roles/owner 或 roles/editor),則會自動具備正確的權限。
否則,您必須具備下表列出的所有 Compute Engine IAM 角色。如果您擁有這些角色,也會具備相關聯的權限,詳情請參閱 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 v3 時,請將 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」頁面中,按一下「啟用」。
gcloud
執行下列指令:
gcloud services enable trafficdirector.googleapis.com
啟用 Cloud DNS API 並設定 Cloud DNS
如果您要在 Compute Engine 上設定 Cloud Service Mesh,請按照下列操作說明進行。您必須啟用 Cloud DNS API,並設定 Cloud DNS 以解析 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 用戶端會使用繫結至 Kubernetes 服務帳戶的 Google 服務帳戶,該帳戶已指派給 Pod。
您需要下列權限。系統僅支援 xDS v3。如果您使用 xDS v2,請務必遷移至 xDS v3。如要瞭解如何遷移,請參閱「從 xDS v2 遷移至 xDS v3」。
使用 xDS v3 時,用戶端使用的服務帳戶必須具備 trafficdirector.networks.reportMetrics、trafficdirector.rateLimitDomains.reportMetrics 和 trafficdirector.networks.getConfigs 權限。您可以使用 IAM Traffic Director 用戶端角色 (roles/trafficdirector.client),其中包含這些權限。
控制台
前往 Google Cloud 控制台的「IAM & Admin」(IAM 與管理)頁面。
選取專案。
找出要新增角色的服務帳戶:
- 如果服務帳戶還不在「成員」清單中,表示尚未獲派任何角色。按一下「新增」,然後輸入服務帳戶的電子郵件地址。
- 如果服務帳戶已在「成員」清單中,表示已獲指派角色。選取服務帳戶,然後按一下「角色」分頁標籤。
展開角色。找出要編輯的服務帳戶,然後按一下「編輯」。
選取「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 projectSERVICE_ACCOUNT_EMAIL:與服務帳戶相關聯的電子郵件地址
繼續設定程序
完成必要步驟後,即可開始設定服務網格。