本页面介绍了您必须在项目中的虚拟机 (VM) 或 pod 上执行的出站连接操作,以允许工作负载离开组织。此过程演示了如何向部署添加必需的标签,以明确启用出站流量并允许工作负载在组织外部进行通信。
默认情况下,经过网闸隔离的 Google Distributed Cloud (GDC) 会阻止项目中的工作负载离开组织。如果平台管理员 (PA) 已针对项目停用数据渗漏保护功能,工作负载可能会退出组织。除了停用数据渗漏防护功能之外,应用操作员 (AO) 还必须在 pod 工作负载上添加标签 egress.networking.gke.io/enabled: true
,以启用该 pod 的出站连接。当您为项目分配并使用知名 IP 地址时,系统会对组织的出站流量执行源网络地址转换 (NAT)。
您可以管理从 Pod 或 虚拟机中的工作负载发起的出站连接。
管理 pod 中工作负载的出站流量
如需配置 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
:部署管理的复制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
管理虚拟机中工作负载的出站流量
如需在虚拟机中配置工作负载以实现出站连接,您可以使用 GDC 控制台进行虚拟机配置,也可以创建 VirtualMachineExternalAccess
资源。如需了解如何启用具有外部访问权限的虚拟机以进行数据传输,请参阅连接到虚拟机部分中的启用外部访问权限。