Attivare la comunicazione tra organizzazioni

Questa pagina descrive come stabilire la comunicazione tra l'organizzazione Gemini e i clienti.

L'organizzazione del cliente invia richieste dal proprio Inference Gateway all'organizzazione Gemini che ospita i server del router GenAI e del modello. L'integrazione della piattaforma API (APIP) del router GenAI controlla le richieste dell'Inference Gateway. L'integrazione APIP garantisce che le richieste dispongano di credenziali appropriate (token STS) e autorizzazioni di ruolo.

Per saperne di più su Gemini e sulle organizzazioni dei clienti, vedi Gemini e le organizzazioni dei clienti.

Prima di iniziare

Per abilitare la comunicazione tra organizzazioni, devi disporre di quanto segue:

Stabilire la connettività tra le organizzazioni Gemini e quelle dei clienti

Per soddisfare la larghezza di banda di rete richiesta per Gemini su GDC, esiste una configurazione di rete hardware personalizzata per l'organizzazione Gemini. Per utilizzare l'hardware e aumentare la larghezza di banda, è necessaria una configurazione aggiuntiva con un interconnect.

Per stabilire la connettività tra le due organizzazioni, crea una risorsa AttachmentGroup nel cluster di amministrazione principale per accoppiare Gemini e le organizzazioni dei clienti.

La risorsa personalizzata deve essere simile all'esempio seguente:

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

Sostituisci quanto segue:

  • GEMINI_ORG_NAME: il nome dell'organizzazione Gemini.
  • CUSTOMER_ORG_NAME: il nome dell'organizzazione del cliente.

Configura le richieste del gateway di inferenza per utilizzare la rete dati

I servizi Inference Gateway e GenAI Router vengono eseguiti nel cluster dell'infrastruttura dell'organizzazione rispettiva. Per impostazione predefinita, entrambi i servizi vengono instradati tramite la rete dell'infrastruttura, ma devono utilizzare la rete dati.

Per garantire che sia disponibile una larghezza di banda di rete sufficiente per le richieste di Gemini, devi instradare le richieste del gateway di inferenza destinate al router GenAI tramite la rete dati. Devi utilizzare le risorse di networking Istio per instradare le richieste tramite il gateway di ingresso dei dati dell'organizzazione Gemini anziché il gateway di ingresso dell'infrastruttura predefinito.

Segui questi passaggi per configurare le richieste di Inference Gateway destinate al router GenAI in modo che utilizzino la rete dati:

  1. Recupera il nome di 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
    

    Sostituisci GEMINI_ORG_MGMT_KUBECONFIG_PATH con il percorso del file kubeconfig del server API di gestione dell'organizzazione Gemini.

    L'output deve essere simile all'esempio seguente:

    "genai-router.org-1.zone1.google.gdch.test"
    
  2. Recupera il nome di dominio completo (FQDN) del account di servizio dall'organizzazione 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
    

    L'output deve essere simile all'esempio seguente:

    "service-accounts.org-1.zone1.google.gdch.test"
    
  3. Recupera l'indirizzo IP ELB di Ingress Gateway dal data plane dell'organizzazione 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
    

    L'output deve essere simile all'esempio seguente:

    "10.137.14.0/32"
    
  4. Aggiungi una risorsa ServiceEntry per il router GenAI e l'FQDN dell'identità. Poi, risolvi l'indirizzo IP statico dell'indirizzo IP ELB di Ingress Gateway dal piano dati dell'organizzazione 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
    

    Sostituisci CUS_ORG_CP_KUBECONFIG_PATH con il percorso del file kubeconfig del data plane del cluster di infrastruttura dell'organizzazione dell'organizzazione cliente.

  5. Recupera l'indirizzo IP NAT in uscita del progetto di 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
    

    Sostituisci CUS_ORG_MGMT_KUBECONFIG_PATH con il percorso del file kubeconfig del server API di gestione dell'organizzazione del cliente.

    L'output deve essere simile all'esempio seguente:

    "10.200.32.29"
    
  6. Applica un criterio di rete dell'organizzazione al server API di gestione dall'organizzazione Gemini per consentire le richieste dell'organizzazione 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
    

    Sostituisci GEMINI_ORG_MGMT_KUBECONFIG_PATH con il percorso del file kubeconfig del server API di gestione dell'organizzazione Gemini.

  7. (Facoltativo) Applica una policy di rete dell'organizzazione al server API di gestione dall'organizzazione del cliente per consentire le richieste all'organizzazione 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
    

    Sostituisci quanto segue:

    • CUS_ORG_MGMT_KUBECONFIG_PATH: il percorso del file kubeconfig del server API di gestione dell'organizzazione del cliente.
    • CUSTOMER_ORG_OIQ: l'OIQ dell'organizzazione del cliente.

Passaggi successivi