创建跨项目流量网络政策

本页面介绍了如何在 Google Distributed Cloud (GDC) 经过网闸隔离的设备中配置跨项目流量网络政策。

跨项目流量是指来自不同项目命名空间但位于同一组织内的服务和工作负载之间的通信。

默认情况下,项目中的服务和工作负载与外部服务和工作负载隔离。不过,来自不同项目命名空间且位于同一组织内的服务和工作负载可以通过应用跨项目流量网络政策相互通信。

准备工作

如需配置项目内流量网络政策,您必须具备以下条件:

创建跨项目流量政策

您可以定义入站流量或出站流量跨项目流量政策,以管理项目之间的通信。

为跨项目流量创建入站防火墙规则

如需允许项目工作负载或服务接受来自另一项目中其他工作负载的连接,您必须配置入站流量防火墙规则,以允许其他项目工作负载的入站流量。

请按以下步骤操作,创建新的防火墙规则并允许来自其他项目中工作负载的入站流量:

控制台

  1. 在您要配置的项目的 GDC 控制台中,前往导航菜单中的网络 > 防火墙,打开防火墙页面。
  2. 点击操作栏中的创建,开始创建新的防火墙规则。
  3. 防火墙规则详情页面上,填写以下信息:

    1. 名称字段中,为防火墙规则输入一个有效名称。
    2. 流量方向部分中,选择入站以允许来自其他项目中工作负载的入站流量。
    3. 目标部分中,选择以下选项之一:
      • 所有用户工作负载:允许连接到您正在配置的项目的工作负载。
      • 服务:表示此防火墙规则针对的是您正在配置的项目中的特定服务。
    4. 如果您的目标是项目服务,请从服务下拉菜单中的可用服务列表中选择相应服务的名称。
    5. 发件人部分,选择以下两个选项之一:
      • 所有项目:允许来自所有项目中工作负载的连接。
      • 其他项目所有用户工作负载:允许从其他项目中的工作负载进行连接。
    6. 如果您只想从其他项目转移工作负载,请从项目 ID 下拉菜单的项目列表中选择一个您可以访问的项目。
    7. 如果您的目标是所有用户工作负载,请在协议和端口部分中选择以下选项之一:
      • 允许所有:允许使用任何协议或端口建立连接。
      • 指定的协议和端口:仅允许使用您在入站防火墙规则的相应字段中指定的协议和端口建立连接。
  4. 防火墙规则详情页面上,点击创建

您现在已允许其他项目工作负载建立连接。创建防火墙规则后,该规则会显示在防火墙页面上的表格中。

API

以下政策可让 PROJECT_1 项目中的工作负载允许来自 PROJECT_2 项目中工作负载的连接,以及相同流量的返回流量。应用政策:

kubectl --kubeconfig 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

API_SERVER 替换为 API 服务器的 kubeconfig 路径。 如果您尚未为 API 服务器生成 kubeconfig 文件,请参阅登录了解详情。

上述命令允许 PROJECT_2 连接到 PROJECT_1,但不允许从 PROJECT_1 发起的连接到 PROJECT_2。对于后者,您需要在 PROJECT_2 项目中设置对等政策。应用互惠政策:

kubectl --kubeconfig 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_1PROJECT_2 建立连接。