設定進階設定
本文件包含設定 Cloud Service Mesh 時可能實用的附註。
為 Cloud Service Mesh 設定單一 Compute Engine VM
請參考這個程序,瞭解如何實作附加元件 Proxy 部署和流量攔截功能,讓 VM 能夠存取 Cloud Service Mesh 服務。
如要使用這個程序,您必須先安裝 Docker。請按照 Docker 的操作說明安裝 Docker Engine。
如果您要按照這個程序在單一 VM 上設定 Cloud Service Mesh,則部分設定工作需要您具備 Linux 主機存取權。主機可以是本機電腦,也可以是虛擬私有雲網路中執行的 VM。
首先,下載並準備設定檔和範例指令碼。
登入設定程序中使用的 Linux 主機。
將所需檔案的封存檔下載至 Linux 主機,然後解開封存檔:
wget https://storage.googleapis.com/traffic-director/traffic-director-xdsv3.tar.gz tar -xzvf traffic-director-xdsv3.tar.gz; cd traffic-director-xdsv3
封存包含下列檔案:
- sidecar.env – 具有環境變數的設定檔。
- iptables.sh – 設定 netfilter 規則的指令碼。
- bootstrap_template.yaml – Envoy 的自我啟動範本檔案。
- run.sh – 使用
sidecar.env
設定檔來設定iptables
的頂層指令碼,用於攔截與執行 Envoy 補充 Proxy。
在執行 Sidecar Proxy 的每個主機上,建立系統使用者來執行 Envoy Proxy 程序。這是 Envoy Proxy 使用者。已停用 Envoy 代理使用者的登入功能。
sudo adduser --system --disabled-login envoy
編輯
sidecar.env
檔案以修改設定。請參閱設定檔中的內嵌註解,瞭解每個變數的詳細說明。- 在
sidecar.env
檔案中,將ENVOY_USER
變數設為您選擇的 Envoy 代理使用者名稱。
- 在
接著,針對每個使用 Cloud Service Mesh 執行應用程式的 VM 主機,執行下列步驟:
- 將完整的
traffic-director-xdsv3
目錄 (連同修改的sidecar.env
檔案) 複製到每個預期使用 Cloud Service Mesh 執行應用程式的 VM 主機。 - 將
run.sh
指令碼新增至系統的開機指令碼,確保在每次 VM 重新開機時執行指令碼。 在每個 VM 主機上執行
run.sh
指令碼:cd traffic-director-xdsv3 sudo ./run.sh start
確認 Envoy Proxy 是否已正確啟動。
sudo ./run.sh status
您應該會看到以下的輸出內容:
OK: Envoy seems to be running. OK: Traffic interception seems to be enabled.
您可以使用下列方法驗證流量攔截方向:
sudo iptables -S -t nat | grep ISTIO_REDIRECT
預期的輸出內容如下:
-N ISTIO_REDIRECT -A ISTIO_OUTPUT -j ISTIO_REDIRECT -A ISTIO_REDIRECT -p tcp -j REDIRECT --to-ports 15001`
轉送規則對應關係
在轉送規則對應關係中設定轉送作業的方法有兩種。
您可以根據服務的實際目的地 VIP 和通訊埠啟用轉送功能。如果您將服務的 VIP 設為轉寄規則的 IPAddress
參數,系統會根據網址對應中指定的主機和路徑參數,比對及轉送僅指定至此地址和相關連接埠的流量。
或者,您也可以將轉寄規則的地址設為 0.0.0.0
。這會將 Proxy 設為只根據目的地連接埠比對流量,無論要求的目的地 IP 位址為何。接著,系統會根據網址對應中指定的主機和路徑參數,將流量轉送至指定位置。
根據這兩種方法,主機名稱 (如同主機規則中所定義) 與目的地 VIP 和通訊埠組合,或與目的地通訊埠 (當 VIP 為 0.0.0.0
時) 相關聯,必須在服務網格設定中保持不重複。也就是說,您無法有兩個不同的服務,使用不同的後端組合,但都使用相同的主機名稱。
無論您選取哪種方法,服務主機名稱/FQDN 解析的 VIP 流量,以及服務正在監聽的通訊埠,都必須攔截並重新導向至補充 Proxy。如需完整的主機設定詳細資訊,請參閱「為 Cloud Service Mesh 設定單一 Compute Engine VM」。
每個 VPC 網路中的轉送規則都必須具有不重複的 IP 位址和通訊埠組合,包括 0.0.0.0
位址。如果您在特定 VPC 網路中使用相同的 IP 位址和通訊埠建立多個轉送規則,只有第一個轉送規則有效。系統會忽略其他項目。
為避免流量流失,請按照下方的「進階流量攔截設定」一節操作。
進階流量攔截設定
如果 VM 執行的應用程式需要存取 Cloud Service Mesh 所設定的服務,您就必須安裝補充 Proxy,並在 VM 上設定流量攔截,以便讓補充 Proxy 管理流量路由,將流量導向這些服務的後端。
如果攔截所有傳出 VM 流量對您的部署而言不可行,您可以將特定流量重新導向至補充 Proxy,而其他流量則會遵循主機網路設定所定義的一般路徑。
如要達成這項目標,請按照使用 VM 和手動 Envoy 部署設定 Cloud Service Mesh 程序中的說明,修改 Compute Engine VM 主機設定,步驟如下:
決定 Cloud Service Mesh 控管服務應解析的 IP 位址範圍。系統會攔截目的地為這些 IP 位址的流量,並將其重新導向至補充 Proxy。範圍會因部署作業而異。
在
sidecar.env
檔案中,將SERVICE_CIDR
的值設為這個範圍。netfilter 會將這些 IP 位址的流量重新導向至補充 Proxy,並根據 Cloud Service Mesh 提供的設定進行負載平衡。輔助 Proxy 不一定要以專屬使用者的身分執行,才能從流量攔截中排除。但仍建議您這麼做。
執行
run.sh
指令碼後,系統會依主要程序的指示,將iptables
設為只攔截及重新導向這個特定範圍。執行下列指令,確認 netfilter 設定正確無誤。針對 ${SERVICE_CIDR},請將您設定的值替換為攔截的 IP 位址範圍。
sudo iptables -L -t nat | grep -E "(ISTIO_REDIRECT).+${SERVICE_CIDR})"