本頁面將逐步說明如何在 Google Distributed Cloud (GDC) 氣隙環境中建立全域子網路,並將該子網路用於內部負載平衡器 (ILB)。
全域子網路可讓您在 GDC 機構的多個區域中,設定內部負載平衡作業。負載平衡機制可將網路流量分配到多個伺服器,藉此提高應用程式和服務的效能、可靠性和可用性。如要進一步瞭解負載平衡的全域子網路,請參閱負載平衡子網路簡介。
本文適用於應用程式運算子群組的開發人員,他們負責管理所屬機構的負載平衡。詳情請參閱 GDC air-gapped 的目標對象說明文件。
事前準備
如要建立全域子網路並為 ILB 設定,您必須具備下列條件:
- 擁有要設定負載平衡器的專案。詳情請參閱「建立專案」一文。
必要的身分與存取權角色:
- 請要求機構 IAM 管理員授予您「負載平衡器管理員」(
load-balancer-admin
) 角色。 - 請機構 IAM 管理員授予您「全域負載平衡器管理員」(
global-load-balancer-admin
) 角色。 - 請要求機構 IAM 管理員授予您子網路機構管理員 (
subnet-org-admin
) 角色。 - 請組織 IAM 管理員授予您子網路專案管理員 (
subnet-project-admin
) 角色。
詳情請參閱預先定義的角色說明。
- 請要求機構 IAM 管理員授予您「負載平衡器管理員」(
建立上層全域子網路
您在本節中建立的父項全域子網路,會做為 ILB IP 位址的 IP 位址集區。您可以使用 spec.parentReference.name
欄位指定子網路父項。您可以透過下列兩種方式,為這個父項子網路設定 CIDR:
如要進一步瞭解靜態和動態 CIDR 設定的差異,請參閱「靜態和動態 CIDR 設定」。
使用靜態 CIDR 設定建立子網路
如要精確控管 IP 位址空間,請使用靜態 CIDR 設定。這個子網路的類型為 Branch
。如要進一步瞭解根、分支和葉子子網路類型,請參閱子網路階層。
如要建立具有靜態 CIDR 設定的全域父項子網路,請將所選 CIDR 區塊新增至 spec.ipv4Request.cidr
欄位:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/vpc: default-vpc
name: ILB_PARENT_SUBNET_NAME
namespace: platform
spec:
ipv4Request:
cidr: STATIC_CIDR
parentReference:
name: PARENT_NAME
namespace: platform
propagationStrategy: None
type: Branch
EOF
更改下列內容:
GLOBAL_API_SERVER
:全域管理 API 伺服器的 kubeconfig 路徑。詳情請參閱全球和區域 API 伺服器。如果您尚未為 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一文瞭解詳情。ILB_PARENT_SUBNET_NAME
:ILB 全域父項子網路的所選名稱。STATIC_CIDR
:要為這個父項子網路分配的特定 CIDR 區塊,例如10.0.10.0/27
。PARENT_NAME
:現有父項子網路的名稱,這個新子網路是從該子網路建立。
如要設定這個子網路以搭配 ILB 使用,請為 ILB 建立葉子子網路。
使用動態 CIDR 設定建立子網路
動態 CIDR 設定會從父項子網路自動分配指定大小的可用 CIDR 區塊。這項功能可簡化 IP 位址管理作業,尤其是在大型環境中。這個子網路的類型為 Branch
。如要進一步瞭解根、分支和葉子子網路類型,請參閱子網路階層。
如要建立具有動態 CIDR 的全域父項子網路,請使用所選前置字串長度設定 spec.ipv4Request.prefixLength
欄位:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/vpc: default-vpc
name: ILB_PARENT_SUBNET_NAME
namespace: platform
spec:
ipv4Request:
prefixLength: PREFIX_LENGTH
parentReference:
name: PARENT_NAME
namespace: platform
propagationStrategy: None
type: Branch
EOF
更改下列內容:
ILB_PARENT_SUBNET_NAME
:您為 ILB 父項子網路選擇的名稱,例如lb-global-lancer-ilb-subnet
。STATIC_CIDR
:您要使用的特定 CIDR 區塊,例如10.0.10.0/27
。這個變數僅適用於靜態 CIDR 設定。PARENT_NAME
:現有父項子網路的名稱,新子網路是從該子網路建立,例如default-vpc-workload-cidr
。PREFIX_LENGTH
:動態分配 CIDR 的所選前置字串長度,例如27
。這個變數僅適用於動態 CIDR 設定。
如要設定這個子網路以搭配 ILB 使用,請為 ILB 建立葉子子網路。
為 ILB 建立葉子子網路
設定全域父項子網路後,您必須建立葉子子網路,為全域 ILB 服務分配單一 IP 位址。這個葉子子網路的 type
欄位值必須為 Leaf
,且必須與負載平衡器資源 (例如 ForwardingRule
、BackendService
和 Backend
) 位於同一個專案命名空間。
如要建立葉子子網路並連結至 ILB,請按照下列步驟操作:
建立
prefixLength
值為32
的葉子子網路,因為這個子網路會分配單一 IP 位址。parentReference
值會參照先前建立的父項全域子網路:kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/allocation-preference: default ipam.gdc.goog/vpc: default-vpc name: ILB_IP_SUBNET_NAME namespace: PROJECT_NAMESPACE spec: ipv4Request: prefixLength: 32 parentReference: name: PARENT_REF namespace: platform type: Leaf EOF
更改下列內容:
ILB_IP_SUBNET_NAME
:您為葉子子網路選擇的名稱,例如lb-project-ilb-ip
。PROJECT_NAMESPACE
:與專案對應的 Kubernetes 命名空間,ILB 物件位於該專案中,例如lb-project
。PARENT_REF
:這個葉子子網路的 IP 位址來源父項子網路名稱,例如您先前建立的父項全域子網路。
將新建立的葉子子網路 (內含已分配的 IP 位址) 連接至 ILB 的
ForwardingRuleInternal
資源。在ForwardingRuleInternal
資源中,更新spec.cidrRef.name
欄位,參照您在上一步建立的葉子子網路名稱:kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ForwardingRuleInternal metadata: name: FRI_NAME namespace: PROJECT_NAMESPACE spec: ports: - port: PORT protocol: PROTOCOL backendServiceRef: name: BES_NAME cidrRef: name: LEAF_SUBNET_NAME EOF
更改下列內容:
FRI_NAME
:您為ForwardingRuleInternal
物件選擇的名稱,例如nginx-ilb-static-fr
。PORT
:ILB 監聽傳入流量的通訊埠號碼,例如80
。PROTOCOL
:ILB 使用的網路通訊協定,例如TCP
或UDP
。BES_NAME
:與這個ForwardingRuleInternal
資源相關聯的BackendService
名稱,例如nginx-bes
。LEAF_SUBNET_NAME
:您在上一個步驟中建立的葉子子網路名稱,例如lb-project-ilb-ip
。