Habilitar la comunicación entre organizaciones

En esta página se describe cómo puedes establecer una comunicación entre la organización de Gemini y los clientes.

La organización del cliente envía solicitudes desde su Inference Gateway a la organización de Gemini, que aloja el GenAI Router y los servidores de modelos. La integración de la plataforma de APIs (APIP) del GenAI Router comprueba las solicitudes de Inference Gateway. La integración de la APIP asegura que las solicitudes tengan las credenciales adecuadas (token STS) y los permisos de rol.

Para obtener más información sobre Gemini y las organizaciones de clientes, consulta el artículo Gemini y las organizaciones de clientes.

Antes de empezar

Para habilitar la comunicación entre organizaciones, debes tener lo siguiente:

Establecer la conectividad entre las organizaciones de Gemini y del cliente

Para cumplir el ancho de banda de red necesario para Gemini en GDC, la organización de Gemini cuenta con una configuración de red de hardware personalizada. Para usar el hardware y aumentar el ancho de banda, necesitas una configuración adicional con una interconexión.

Para establecer la conectividad entre ambas organizaciones, crea un recurso AttachmentGroup en el clúster de administrador raíz para emparejar las organizaciones de Gemini y del cliente.

El recurso personalizado debe tener el siguiente aspecto:

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

Haz los cambios siguientes:

  • GEMINI_ORG_NAME: el nombre de la organización de Gemini.
  • CUSTOMER_ORG_NAME: el nombre de la organización del cliente.

Configurar las solicitudes de Inference Gateway para que usen la red de datos

Los servicios Inference Gateway y GenAI Router se ejecutan en el clúster de infraestructura de la organización correspondiente. De forma predeterminada, ambos servicios se enrutan a través de la red de infraestructura, pero deben usar la red de datos.

Para asegurarte de que haya suficiente ancho de banda de red disponible para las solicitudes de Gemini, debes enrutar las solicitudes de Inference Gateway destinadas a GenAIRouter a través de la red de datos. Debes usar recursos de red de Istio para enrutar las solicitudes a través de la pasarela de entrada de datos de la organización de Gemini en lugar de la pasarela de entrada de la infraestructura predeterminada.

Sigue estos pasos para configurar las solicitudes de Inference Gateway destinadas a GenAI Router para que usen la red de datos:

  1. Recupera el nombre de dominio completo (FQDN) del componente GenAI Router:

    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
    

    Sustituye GEMINI_ORG_MGMT_KUBECONFIG_PATH por la ruta al archivo kubeconfig del servidor de la API de gestión de la organización de Gemini.

    La salida debe tener el siguiente aspecto:

    "genai-router.org-1.zone1.google.gdch.test"
    
  2. Recupera el FQDN de la cuenta de servicio de la organización de Gemini:

    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
    

    La salida debe tener el siguiente aspecto:

    "service-accounts.org-1.zone1.google.gdch.test"
    
  3. Recupera la dirección IP de ELB de Ingress Gateway del plano de datos de la organización de Gemini:

    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
    

    La salida debe tener el siguiente aspecto:

    "10.137.14.0/32"
    
  4. Añade un recurso ServiceEntry para el router de GenAI y el nombre de dominio completo de la identidad. A continuación, resuelve la dirección IP estática de la dirección IP de ELB de Ingress Gateway desde el plano de datos de la organización de Gemini:

    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
    

    Sustituye CUS_ORG_CP_KUBECONFIG_PATH por la ruta al archivo kubeconfig del plano de datos del clúster de infraestructura de la organización de la organización del cliente.

  5. Recupera la dirección IP de NAT de salida del proyecto de sistema aics-system:

    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
    

    Sustituye CUS_ORG_MGMT_KUBECONFIG_PATH por la ruta al archivo kubeconfig del servidor de la API de gestión de la organización del cliente.

    La salida debe tener el siguiente aspecto:

    "10.200.32.29"
    
  6. Aplica una política de red de la organización al servidor de la API de gestión de la organización de Gemini para permitir las solicitudes de la organización del cliente:

    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
    

    Sustituye GEMINI_ORG_MGMT_KUBECONFIG_PATH por la ruta al archivo kubeconfig del servidor de la API de gestión de la organización de Gemini.

  7. Opcional: Aplica una política de red de la organización a la API de gestión del servidor de la organización del cliente para permitir solicitudes a la organización de 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
    

    Haz los cambios siguientes:

    • CUS_ORG_MGMT_KUBECONFIG_PATH: la ruta al archivo kubeconfig del servidor de la API Management de la organización del cliente.
    • CUSTOMER_ORG_OIQ: el OIQ de la organización del cliente.

Siguientes pasos