Habilita la comunicación entre organizaciones

En esta página, se describe cómo puedes establecer 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 router de IA generativa y los servidores de modelos. La integración de la API Platform (APIP) del GenAI Router verifica las solicitudes de Inference Gateway. La integración de la API de APIP garantiza que las solicitudes tengan las credenciales adecuadas (token de STS) y los permisos de rol.

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

Antes de comenzar

Para habilitar la comunicación entre organizaciones, debes cumplir con los siguientes requisitos:

Establece la conectividad entre las organizaciones de Gemini y del cliente

Para cumplir con el ancho de banda de red requerido para Gemini en GDC, existe una configuración de red de hardware personalizada para la organización de Gemini. 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 vincular las organizaciones de Gemini y del cliente.

El recurso personalizado debe verse como el siguiente ejemplo:

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

Reemplaza lo siguiente:

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

Configura las solicitudes de Inference Gateway para usar la red de datos

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

Para garantizar que haya suficiente ancho de banda de red disponible para las solicitudes de Gemini, debes enrutar las solicitudes de Inference Gateway destinadas al GenAI Router a través de la red de datos. Debes usar recursos de redes de Istio para enrutar las solicitudes a través de la puerta de enlace de entrada de datos de la organización de Gemini en lugar de la puerta de enlace de entrada de infraestructura predeterminada.

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

  1. Recupera el nombre de dominio completamente calificado (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
    

    Reemplaza GEMINI_ORG_MGMT_KUBECONFIG_PATH por la ruta de acceso al archivo kubeconfig del servidor de la API de administración de la organización de Gemini.

    El resultado debe verse como el siguiente ejemplo:

    "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
    

    El resultado debe verse como el siguiente ejemplo:

    "service-accounts.org-1.zone1.google.gdch.test"
    
  3. Recupera la dirección IP del ELB de la puerta de enlace de entrada 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
    

    El resultado debe verse como el siguiente ejemplo:

    "10.137.14.0/32"
    
  4. Agrega un recurso ServiceEntry para el enrutador de IA generativa y el FQDN de identidad. Luego, resuelve la dirección IP estática de la dirección IP del ELB de la puerta de enlace de entrada 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
    

    Reemplaza CUS_ORG_CP_KUBECONFIG_PATH por la ruta de acceso 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 del 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
    

    Reemplaza CUS_ORG_MGMT_KUBECONFIG_PATH por la ruta de acceso al archivo kubeconfig del servidor de la API de administración de la organización del cliente.

    El resultado debe verse como el siguiente ejemplo:

    "10.200.32.29"
    
  6. Aplica una política de red de la organización a la API de administración del servidor de la organización de Gemini para permitir 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
    

    Reemplaza GEMINI_ORG_MGMT_KUBECONFIG_PATH por la ruta de acceso al archivo kubeconfig del servidor de la API de administración de la organización de Gemini.

  7. Opcional: Aplica una política de red de la organización al servidor de la API de administración 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
    

    Reemplaza lo siguiente:

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

¿Qué sigue?