配置外部负载平衡器

外部负载平衡器 (ELB) 通过从分配给项目的池的 IP 地址(来自更大的实例外部 IP 池)将项目外部的服务公开。

ELB 虚拟 IP (VIP) 地址在组织之间不会发生冲突,并且在所有组织中都是唯一的。因此,您必须仅针对项目外部的客户端必须访问的服务使用 ELB 服务。

只要您允许工作负载退出项目,在项目内运行的工作负载就可以访问 ELB 服务。此流量模式实际上要求项目中的出站流量先返回到内部服务,然后再返回到项目。

准备工作

如需配置 ELB 服务,您必须具备以下条件:

  • 拥有您要配置负载均衡器的项目。如需了解详情,请参阅创建项目
  • 自定义的 ProjectNetworkPolicy (PNP) 入站流量政策,用于允许流量流向此 ELB 服务。如需了解详情,请参阅配置 PNP 以允许流量流向 ELB
  • 必要的身份和访问权限角色:

    • Project NetworkPolicy Admin:有权管理项目命名空间中的项目网络政策。请让您的组织 IAM 管理员为您授予 Project NetworkPolicy Admin (project-networkpolicy-admin) 角色。
    • Load Balancer Admin:请组织 IAM 管理员为您授予 Load Balancer Admin (load-balancer-admin) 角色。

配置 PNP 以允许流量流向 ELB

为了使 ELB 服务正常运行,您必须配置并应用自己的自定义 ProjectNetworkPolicy 入站流量政策,以允许流量流向此 ELB 服务。指定外部 CIDR 地址以允许流量进入此 ELB:

kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
apiVersion: networking.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT
  name: allow-inbound-traffic-from-external
spec:
  policyType: Ingress
  subject:
    subjectType: UserWorkload
  ingress:
  - from:
    - ipBlock:
        cidr: CIDR
    ports:
    - protocol: TCP
      port: PORT
EOF

替换以下内容:

  • MANAGEMENT_API_SERVER:管理 API 服务器的 kubeconfig 路径的 kubeconfig 路径。如果您尚未为目标可用区中的 API 服务器生成 kubeconfig 文件,请参阅登录了解详情。
  • PROJECT:您的 GDC 项目的名称。
  • CIDR:需要从哪个外部 CIDR 访问 ELB。此政策是必需的,因为外部负载均衡器使用直接服务器返回 (DSR),该功能可保留源外部 IP 地址,并在返回路径上绕过负载均衡器。
  • PORT:负载均衡器后面的 pod 上的后端端口。此值位于 Service 资源的清单的 .spec.ports[].targetPort 字段中。

创建外部负载平衡器

在 GDC 中使用三种不同的方法创建 ELB:

您可以使用 KRM API 和 gdcloud CLI 定位 Pod 或虚拟机工作负载。当您直接在 Kubernetes 集群中使用 Kubernetes 服务时,只能以创建 Service 对象的集群中的工作负载为目标。