本頁說明如何設定外部直通式網路負載平衡器,以便在 Service Directory 中自動註冊。
建立負載平衡器時,您可以將其註冊為現有 Service Directory 命名空間和所選服務中的端點。用戶端應用程式隨後可以使用 Service Directory (透過 HTTP 或 gRPC) 解析外部直通式網路負載平衡器服務的位址,並直接連線至該服務。
限制
Service Directory 與外部直通式網路負載平衡器整合時,有以下限制:
- 自動註冊功能僅支援外部第 4 層負載平衡器。您可以透過 GKE 整合功能,註冊 Google Kubernetes Engine 負載平衡服務。您可以呼叫 Service Directory API,註冊其他外部負載平衡器、全域負載平衡器,以及 Google Kubernetes Engine Ingress 和閘道。
- 您只能在建立轉送規則時使用自動註冊功能。使用 Google Cloud CLI 更新現有的轉送規則時,無法自動註冊。
- Service Directory 不提供連線功能,因此即使 Service Directory 儲存外部直通式網路負載平衡器的虛擬 IP 位址,在 Service Directory 中查詢外部直通式網路負載平衡器,也無法保證您能連線至虛擬 IP 位址。
事前準備
如要按照這些操作說明進行,必須符合下列條件:
您必須已建立 Service Directory 命名空間和服務。如果沒有,請按照「設定 Service Directory」一文的程序,建立命名空間和服務。
Service Directory 命名空間和服務必須與您要建立的外部直通式網路負載平衡器轉送規則位於相同專案和區域。
您必須已設定必要資源,才能建立外部直通式網路負載平衡器轉送規則。
如要瞭解如何建立外部直通式網路負載平衡器,請參閱「設定外部直通式網路負載平衡器」。
設定轉送規則,在 Service Directory 中註冊外部直通式網路負載平衡器
您必須設定轉送規則,才能在 Service Directory 中註冊外部直通式網路負載平衡器。如要註冊外部直通式網路負載平衡器,請參閱下一節。
註冊外部直通式網路負載平衡器
如要註冊區域外部直通式網路負載平衡器,請執行 gcloud compute forwarding-rules
create 指令,並設定 service-directory-registration 旗標:
gcloud beta compute forwarding-rules create FORWARDING_RULE_NAME \
--region=REGION \
--load-balancing-scheme=EXTERNAL \
--address=RESERVED_IP_ADDRESS \
--ip-protocol=PROTOCOL_TYPE \
--ports=PORT_NUMBER \
--backend-service=BACKEND_SERVICE_NAME \
--backend-service-region=REGION \
--service-directory-registration=SD_SERVICE_NAME
更改下列內容:
FORWARDING_RULE_NAME:要建立的轉送規則名稱REGION:要在其中建立轉送規則的區域RESERVED_IP_ADDRESS:轉送規則提供的 IP 位址PROTOCOL_TYPE:規則要提供的 IP 通訊協定PORT_NUMBER:以半形逗號分隔的連接埠清單BACKEND_SERVICE_NAME:接收流量的目標後端服務SD_SERVICE_NAME:要註冊端點的 Service Directory 服務完整名稱,這項服務必須與要建立的轉送規則位於相同專案和區域。例如:projects/PROJECT/locations/REGION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME。
驗證端點
註冊外部直通式網路負載平衡器時建立的 Service Directory 端點具有下列特性:
- 端點的名稱與轉送規則的名稱相同,並加上指定的通訊埠號碼 (
<forwarding rule name>-<port>)。舉例來說,如果您建立的轉送規則為RULE,並指定--port=8080,您會取得名為RULE-8080的端點。如果是同一條規則,如果您指定兩個通訊埠--port=8080, 8081,就會取得兩個端點,分別是RULE-8080和RULE-8081。如果您指定--port=ALL,Service Directory 端點會註冊通訊埠0。如果您是外部直通式網路負載平衡器的擁有者,請務必讓 API 呼叫端知道要連線的通訊埠。 - 您無法使用公開的 Service Directory API 修改或刪除端點。只有在刪除轉送規則時,端點才會自動刪除。也就是說,只要轉送規則存在,您就無法刪除端點所在的服務和命名空間。
- 端點本身不會產生費用,但對端點的任何 API 呼叫都會套用一般定價詳細資料。
如要確認端點已建立,請在 Service Directory 中解析服務。您應該會看到端點,其名稱與轉送規則的名稱相同,且具有指定的通訊埠編號。
如要在 Service Directory 中解析服務,請執行 gcloud service-directory
services resolve 指令:
gcloud service-directory services resolve SD_SERVICE_NAME \
--namespace=SD_NAMESPACE_NAME \
--location=REGION
更改下列內容:
SD_SERVICE_NAME:要解析的 Service Directory 服務名稱。且必須位於 Service Directory 命名空間名稱中。SD_NAMESPACE_NAME:您為包含服務的命名空間指定的名稱。REGION:包含命名空間的 Google Cloud 區域。這應與您建立轉送規則的區域相同。
清除所用資源
如要刪除您建立的資源,請按照下列步驟操作。
如要刪除轉送規則,請執行
gcloud compute forwarding-rules delete指令:gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \ --region=REGION
更改下列內容:
FORWARDING_RULE_NAME:您建立的轉送規則名稱REGION:轉送規則的區域
詳情請參閱「刪除轉送規則」。
如要確認刪除轉送規則後,系統已自動從 Service Directory 刪除端點,請在 Service Directory 服務中執行「驗證端點」一節所述的
gcloud service-directory services resolve指令。如要刪除 Service Directory 命名空間和服務,請參閱「刪除資源」。
後續步驟
- 如要瞭解 Service Directory 總覽,請參閱「Service Directory 總覽」。
- 如要瞭解使用 Service Directory 時可能遇到的常見問題解決方案,請參閱這篇文章。