本页面介绍了如何在 Google Distributed Cloud (GDC) 空气隔离环境中配置跨项目流量网络政策。
跨项目流量是指来自不同项目命名空间但位于同一组织内的服务和工作负载之间的通信。
默认情况下,项目中的服务和工作负载与外部服务和工作负载隔离。不过,来自不同项目命名空间且位于同一组织内的服务和工作负载可以通过应用跨项目流量网络政策相互通信。
如果需要在单个可用区内强制执行跨项目流量,请参阅创建工作负载级网络政策。
准备工作
如需配置项目内流量网络政策,您必须具备以下条件:
- 必要的身份和访问权限角色。如需了解详情,请参阅准备预定义角色和访问权限。
- 现有项目。如需了解详情,请参阅创建项目。
创建跨项目流量政策
您可以定义入站流量或出站流量跨项目流量政策,以管理项目之间的通信。
您可以创建适用于整个 GDC 宇宙中所有可用区的全局跨项目网络政策。如需了解详情,请参阅什么是全能?
为跨项目流量创建全局入站防火墙规则
如需允许项目工作负载或服务接受组织内其他项目中的其他工作负载的连接,您必须配置入站流量防火墙规则,以允许其他项目工作负载的入站流量。
此全局入站政策适用于组织中的所有可用区。
请按以下步骤操作,创建新的防火墙规则并允许来自其他项目中工作负载的入站流量:
控制台
- 在您要配置的项目的 GDC 控制台中,前往导航菜单中的网络 > 防火墙,打开防火墙页面。
- 点击操作栏中的创建,开始创建新的防火墙规则。
在防火墙规则详情页面上,填写以下信息:
- 在名称字段中,为防火墙规则输入一个有效名称。
- 在流量方向部分中,选择入站以允许来自其他项目中工作负载的入站流量。
- 在目标部分中,选择以下选项之一:
- 所有用户工作负载:允许连接到您正在配置的项目的工作负载。
- 服务:表示此防火墙规则针对的是您正在配置的项目中的特定服务。
- 如果您的目标是项目服务,请从服务下拉菜单中的可用服务列表中选择相应服务的名称。
- 在发件人部分,选择以下两个选项之一:
- 所有项目:允许从同一组织的所有项目中的工作负载进行连接。
- 其他项目和所有用户工作负载:允许来自同一组织中其他项目的工作负载的连接。
- 如果您只想从其他项目转移工作负载,请从项目 ID 下拉菜单的项目列表中选择一个您可以访问的项目。
- 如果您的目标是所有用户工作负载,请在协议和端口部分中选择以下选项之一:
- 允许所有:允许使用任何协议或端口建立连接。
- 指定的协议和端口:仅允许使用您在入站防火墙规则的相应字段中指定的协议和端口建立连接。
在防火墙规则详情页面上,点击创建。
您现在已允许同一组织内的其他项目工作负载建立连接。创建防火墙规则后,该规则会显示在防火墙页面上的表格中。
API
以下政策可让 PROJECT_1
项目中的工作负载允许来自 PROJECT_2
项目中工作负载的连接,以及相同流量的返回流量。应用政策:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT_1
name: allow-inbound-traffic-from-PROJECT_2
spec:
policyType: Ingress
subject:
subjectType: UserWorkload
ingress:
- from:
- projectSelector:
projects:
matchNames:
- PROJECT_2
EOF
将 GLOBAL_API_SERVER
替换为全局 API 服务器的 kubeconfig 路径。如需了解详情,请参阅全球和可用区级 API 服务器。
如果您尚未为 API 服务器生成 kubeconfig 文件,请参阅登录了解详情。
上述命令允许 PROJECT_2
连接到 PROJECT_1
,但不允许从 PROJECT_1
发起的连接到 PROJECT_2
。对于后者,您需要在 PROJECT_2
项目中设置对等政策。应用互惠政策:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT_2
name: allow-inbound-traffic-from-PROJECT_1
spec:
policyType: Ingress
subject:
subjectType: UserWorkload
ingress:
- from:
- projectSelector:
projects:
matchNames:
- PROJECT_1
EOF
现在允许与 PROJECT_1
和 PROJECT_2
建立连接。
为跨项目流量创建全局出站防火墙规则
当您授予入站跨项目流量政策,以允许一个项目中的工作负载接受来自另一个项目中的工作负载的连接时,此操作还会授予相同流量的返回流量。因此,您无需在原始项目中设置出站跨项目流量网络政策。
此全局出站政策仅适用于 GDC 全球宇宙中的所有可用区。
例如,如果您创建了一项政策,允许流量从 PROJECT_1
流向 PROJECT_2
,并且数据渗漏防护功能处于停用状态,则必须在 PROJECT_2
中创建入站流量政策,并在 PROJECT_1
中创建出站流量政策。不过,回复数据包不受政策强制执行的约束,因此您无需任何其他政策。
请按以下步骤操作,创建新的防火墙规则并允许项目中的工作负载发送出站流量:
- 在您要配置的项目的 GDC 控制台中,前往导航菜单中的网络 > 防火墙,打开防火墙页面。
- 点击操作栏中的创建,开始创建新的防火墙规则。
在防火墙规则详情页面上,填写以下信息:
- 在名称字段中,为防火墙规则输入一个有效名称。
- 在流量方向部分,选择出站,以表明此防火墙规则控制的是出站流量。
- 在目标部分中,选择以下选项之一:
- 所有用户工作负载:允许从您正在配置的项目的任何工作负载进行连接。
- 服务:表示此防火墙规则针对的是您正在配置的项目中的特定服务。
- 如果您的目标是项目服务,请从服务下拉菜单中的可用服务列表中选择相应服务的名称。
- 在发送至部分中,选择以下两个选项之一:
- 所有项目:允许连接到同一组织的所有项目中的工作负载。
- 其他项目和所有用户工作负载:允许连接到同一组织中另一个项目中的工作负载。
- 如果您只想将工作负载转移到另一个项目,请从项目 ID 下拉菜单中的项目列表中选择一个您可以访问的项目。
- 如果您的目标是所有用户工作负载,请在协议和端口部分中选择以下选项之一:
- 允许所有:允许使用任何协议或端口建立连接。
- 指定的协议和端口:仅允许使用您在出站防火墙规则的相应字段中指定的协议和端口建立连接。
在防火墙规则详情页面上,点击创建。
您现在已允许连接到同一组织中的其他项目工作负载。创建防火墙规则后,该规则会显示在防火墙页面上的表格中。