实现跨组织通信

本页介绍了 Gemini 与客户组织之间如何建立通信。

客户组织从其推理网关向托管生成式 AI 路由器和模型服务器的 Gemini 组织发送请求。GenAI 路由器的 API 平台 (APIP) 集成会检查来自推理网关的请求。APIP 集成可确保请求具有适当的凭据 (STS 令牌) 和角色权限。

如需详细了解 Gemini 和客户组织,请参阅 Gemini 和客户组织

准备工作

如需启用跨组织通信,您必须满足以下条件:

在 Gemini 组织与客户组织之间建立连接

为了满足 GDC 上 Gemini 所需的网络带宽,Gemini 组织需要自定义硬件网络配置。如需使用硬件并增加带宽,您需要使用互连进行额外配置。

如需在两个组织之间建立连接,请在根管理员集群中创建 AttachmentGroup 资源,以配对 Gemini 和客户组织。

自定义资源必须如下例所示:

IDENTIFIER=ag-gdc-gemini
GEMINI_ORG_NAME=GEMINI_ORG_NAME
CUSTOMER_ORG_NAME=CUSTOMER_ORG_NAME

apiVersion: system.private.gdc.goog/v1alpha1
kind: AttachmentGroup
metadata:
  name: attachment-group-$IDENTIFIER
  namespace: gpc-system
spec:
  entities:
  - domainType: OrgMixed
    orgName: $CUSTOMER_ORG_NAME
  - domainType: OrgMixed
    orgName: $GEMINI_ORG_NAME
  identifier: $IDENTIFIER

替换以下内容:

  • GEMINI_ORG_NAME:Gemini 组织的名称。
  • CUSTOMER_ORG_NAME:客户组织的名称。

配置推理网关请求以使用数据网络

推理网关和 GenAI 路由器服务在其各自组织的组织基础架构集群中运行。默认情况下,这两种服务都通过基础设施网络进行路由,但它们必须使用数据网络。

为确保有足够的网络带宽来处理 Gemini 请求,您必须通过数据网络将推理网关请求路由到 GenAI 路由器。您必须使用 Istio 网络资源,通过 Gemini 组织的数据入站网关(而不是默认的基础设施入站网关)来路由请求。

请按以下步骤操作,将发往 GenAI 路由器的推理网关请求配置为使用数据网络:

  1. 检索 GenAI 路由器组件的完全限定域名 (FQDN):

    KUBECONFIG=GEMINI_ORG_MGMT_KUBECONFIG_PATH
    
    GEN_AI_ROUTER_FQDN=$(kubectl --kubeconfig ${KUBECONFIG:?} \
      get dnsregistrations.network.private.gdc.goog/genai-router \
      -n gemini-system -o json | jq '.status.fqdn')
    
    echo $GEN_AI_ROUTER_FQDN
    

    GEMINI_ORG_MGMT_KUBECONFIG_PATH 替换为 Gemini 组织的管理 API 服务器的 kubeconfig 文件路径。

    输出必须如下例所示:

    "genai-router.org-1.zone1.google.gdch.test"
    
  2. 从 Gemini 组织检索服务账号的 FQDN:

    GEM_ORG_SERVICE_ACCOUNT_SERVICE_FQDN=$(kubectl --kubeconfig ${KUBECONFIG:?} \
      get dnsregistrations.network.private.gdc.goog/service-accounts-infra-external \
      -n iam-system -o json | jq '.status.fqdn')
    
    echo $GEM_ORG_SERVICE_ACCOUNT_SERVICE_FQDN
    

    输出必须如下例所示:

    "service-accounts.org-1.zone1.google.gdch.test"
    
  3. 从 Gemini 组织的数据平面检索入站流量网关 ELB IP 地址:

    KUBECONFIG=GEMINI_ORG_MGMT_KUBECONFIG_PATH
    
    GEM_DATA_INGRSS_ELB_IP_ADDRESS=$(kubectl get Forwardingruleexternals/dataplane-ingress-gateway \
      -n istio-system -ojson | jq .status.cidr)
    
    echo $GEM_DATA_INGRSS_ELB_IP_ADDRESS
    

    输出必须如下例所示:

    "10.137.14.0/32"
    
  4. 为 GenAI 路由器和身份 FQDN 添加 ServiceEntry 资源。然后,从 Gemini 组织的数据平面解析到 Ingress 网关 ELB IP 地址的静态 IP 地址:

    KUBECONFIG=CUS_ORG_CP_KUBECONFIG_PATH
    
    kubectl apply --kubeconfig ${KUBECONFIG:?} -f - << EOF
    apiVersion: networking.istio.io/v1beta1
    kind: ServiceEntry
    metadata:
      name: genai-service-entry
      namespace: aics-system
    spec:
      hosts:
      - $GEN_AI_ROUTER_FQDN
      ports:
      - number: 443
        name: https
        protocol: TLS
      location: MESH_EXTERNAL
      resolution: STATIC
      endpoints:
      - address: $GEM_DATA_INGRSS_ELB_IP_ADDRESS
    EOF
    
    kubectl apply --kubeconfig ${KUBECONFIG:?} -f - << EOF
    apiVersion: networking.istio.io/v1beta1
    kind: ServiceEntry
    metadata:
      name: identity-service-entry
      namespace: aics-system
    spec:
      hosts:
      -  $GEM_ORG_SERVICE_ACCOUNT_SERVICE_FQDN
      ports:
      - number: 443
        name: https
        protocol: TLS
      location: MESH_EXTERNAL
      resolution: STATIC
      endpoints:
      - address: $GEM_DATA_INGRSS_ELB_IP_ADDRESS
    EOF
    

    CUS_ORG_CP_KUBECONFIG_PATH 替换为客户组织中的组织基础架构集群的数据平面 kubeconfig 文件的路径。

  5. 检索 aics-system 系统项目的出站 NAT IP 地址:

    KUBECONFIG=CUS_ORG_MGMT_KUBECONFIG_PATH
    
    IG_PROJECT_EGRESS_IP=$(kubectl --kubeconfig ${KUBECONFIG:?} get projects/aics-system \
      -n gpc-system -ojson | jq .status.clusters[0].egressNATIPAddress)
    
    echo $IG_PROJECT_EGRESS_IP
    

    CUS_ORG_MGMT_KUBECONFIG_PATH 替换为客户组织的管理 API 服务器的 kubeconfig 文件的路径。

    输出必须如下例所示:

    "10.200.32.29"
    
  6. 将组织网络政策从 Gemini 组织应用到管理 API 服务器,以允许来自客户组织的请求:

    KUBECONFIG=GEMINI_ORG_MGMT_KUBECONFIG_PATH
    
    kubectl apply --kubeconfig ${KUBECONFIG:?} -f - << EOF
    apiVersion: networking.gdc.goog/v1
    kind: OrganizationNetworkPolicy
    metadata:
      name: allow-all-access
      namespace: platform
    spec:
      subject:
        services:
          matchTypes:
          - "all"
      ingress:
        - from:
          - ipBlock:
             cidr: $IG_PROJECT_EGRESS_IP
    EOF
    

    GEMINI_ORG_MGMT_KUBECONFIG_PATH 替换为 Gemini 组织的管理 API 服务器的 kubeconfig 文件路径。

  7. 可选:从客户组织向管理 API 服务器应用组织网络政策,以允许向 Gemini 组织发送请求:

    KUBECONFIG=CUS_ORG_MGMT_KUBECONFIG_PATH
    
    kubectl apply --kubeconfig ${KUBECONFIG:?} -f - << EOF
    apiVersion: networking.gdc.goog/v1
    kind: OrganizationNetworkPolicy
    metadata:
      name: allow-all-access
      namespace: platform
    spec:
      ingress:
      - from:
        - ipBlock:
            cidr: CUSTOMER_ORG_OIQ
      subject:
        services:
          matchTypes:
          - all
        subjectType: ManagedService
    EOF
    

    替换以下内容:

    • CUS_ORG_MGMT_KUBECONFIG_PATH:客户组织的管理 API 服务器的 kubeconfig 文件的路径。
    • CUSTOMER_ORG_OIQ:客户组织的 OIQ。

后续步骤