本頁說明專案預設輸出 NAT 設定 (現已淘汰),可用於啟用工作負載,以便連線至機構外部。本頁面也提供遷移至建議解決方案「Cloud NAT」的操作說明。
總覽
本頁說明您必須在專案中的虛擬機器 (VM) 或 Pod 上執行的輸出連線動作,才能使用 (已淘汰的) 專案預設輸出 NAT 設定選項,讓工作負載離開機構。
這個程序說明如何將必要標籤新增至部署作業,明確啟用輸出流量,並允許工作負載與機構外部通訊。
根據預設,Google Distributed Cloud (GDC) 氣隙隔離會禁止專案中的工作負載離開機構。如果平台管理員 (PA) 已停用專案的資料外洩防護功能,工作負載可能會離開機構。PA 只要將 networking.gdc.goog/enable-default-egress-allow-to-outside-the-org: "true" 標籤附加至專案,即可完成這項操作。除了停用資料外洩防護機制,應用程式運算子 (AO) 也必須在 Pod 工作負載上新增 egress.networking.gke.io/enabled:
true 標籤,才能為該 Pod 啟用輸出連線。為專案分配及使用已知 IP 位址時,系統會對機構外送流量執行來源網路位址轉譯 (NAT)。
管理 Pod 中工作負載的傳出流量
如要在 Pod 中設定工作負載的輸出連線,請先確保專案已停用資料外洩防護功能。
接著,請確認已在膠囊上加上 egress.networking.gke.io/enabled: true 標籤。如果您使用 Deployment 或 Daemonset 等較高層級的建構體來管理 Pod 集合,則必須在這些規格中設定 Pod 標籤。
以下範例說明如何從資訊清單檔案建立 Deployment。範例檔案的 labels 欄位包含 egress.networking.gke.io/enabled: true 值,可明確啟用專案的外送流量。這個標籤會新增至部署中的每個 Pod,並允許 Pod 中的工作負載離開機構。
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: DEPLOYMENT_NAME
spec:
replicas: NUMBER_OF_REPLICAS
selector:
matchLabels:
run: APP_NAME
template:
metadata:
labels: # The labels given to each pod in the deployment, which are used
# to manage all pods in the deployment.
run: APP_NAME
egress.networking.gke.io/enabled: true
spec: # The pod specification, which defines how each pod runs in the deployment.
containers:
- name: CONTAINER_NAME
image: CONTAINER_IMAGE
EOF
更改下列內容:
USER_CLUSTER_KUBECONFIG:您要部署容器工作負載的使用者叢集 kubeconfig 檔案。DEPLOYMENT_NAME:使用者叢集的 kubeconfig 檔案,您要將容器工作負載部署至該叢集。APP_NAME:要在部署作業中執行的應用程式名稱。NUMBER_OF_REPLICAS:Deployment 管理的複製Pod物件數量。CONTAINER_NAME:容器名稱。CONTAINER_IMAGE:容器映像檔的名稱。您必須加入映像檔的容器登錄路徑和版本,例如REGISTRY_PATH/hello-app:1.0。
例如:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
run: my-app
template:
metadata:
labels:
run: my-app
egress.networking.gke.io/enabled: true
spec:
containers:
- name: hello-app
image: REGISTRY_PATH/hello-app:1.0
管理 VM 中工作負載的出站流量
如要在 VM 中設定工作負載的輸出連線,可以使用 GDC 控制台設定 VM,或建立 VirtualMachineExternalAccess 資源。如要瞭解如何為 VM 啟用外部存取權以進行資料轉移,請參閱「連線至 VM」一節中的「啟用外部存取權」。
遷移至 Cloud NAT
Cloud NAT 已在 1.15 版推出,因此每個專案的預設專案輸出 NAT 設定已淘汰。建議使用者將預設專案輸出 NAT 設定的輸出設定遷移至 Cloud NAT。
預設專案輸出 NAT 和 Cloud NAT 互不相容。換句話說,特定 Pod 或 VM 端點只能使用其中一個。如要將端點從一個設定遷移至另一個設定,請先在一個設定中停用端點,然後在另一個設定中啟用端點。
如要開始遷移,請在要遷移的端點上停用舊版設定。如要這樣做,方法有兩種:
- 為整個專案停用專案預設輸出 NAT:將標籤
networking.gdc.goog/allocate-egress-ip: "false"指派給專案,為專案中的所有端點停用專案預設輸出 NAT。 - 針對每個端點停用專案預設輸出 NAT:從 Pod 或 VM 移除
egress.networking.gke.io/enabled:"true"標籤,即可針對特定 Pod 或 VM 端點停用專案預設輸出 NAT。
如要繼續遷移,請將每個端點從預設輸出 NAT 中移除,然後為端點新增與所選閘道標籤選取器相符的標籤,即可將端點新增至 Cloud NAT 閘道。
如需設定 Cloud NAT 的操作說明,請參閱「Cloud NAT」和下列頁面。
輸出 IP 追蹤
使用預設輸出 NAT 時,用於 NAT 輸出流量的輸出 IP 會納入專案狀態。使用 Cloud NAT 時,專案物件不會包含任何輸出 IP。使用者可以列出指派給閘道的子網路,藉此列出 Cloud NAT 閘道使用的 IP。