Ative a comunicação entre organizações

Esta página descreve como pode estabelecer comunicação entre a organização do Gemini e a organização de clientes.

A organização do cliente envia pedidos do respetivo Inference Gateway para a organização do Gemini que aloja o GenAI Router e os servidores de modelos. A integração da plataforma de APIs (APIP) do router de IA gen verifica os pedidos do gateway de inferência. A integração da APIP garante que os pedidos têm credenciais adequadas (token STS) e autorizações de funções.

Para mais informações sobre o Gemini e as organizações de clientes, consulte o artigo Gemini e organizações de clientes.

Antes de começar

Para ativar a comunicação entre organizações, tem de ter o seguinte:

Estabeleça a conetividade entre o Gemini e as organizações dos clientes

Para cumprir a largura de banda da rede necessária para o Gemini no GDC, existe uma configuração de rede de hardware personalizada para a organização do Gemini. Para usar o hardware e aumentar a largura de banda, precisa de uma configuração adicional com uma interligação.

Para estabelecer a conetividade entre ambas as organizações, crie um recurso AttachmentGroup no cluster de administrador raiz para sincronizar o Gemini e as organizações de clientes.

O recurso personalizado tem de ser semelhante ao seguinte exemplo:

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

Substitua o seguinte:

  • GEMINI_ORG_NAME: o nome da organização do Gemini.
  • CUSTOMER_ORG_NAME: o nome da organização do cliente.

Configure os pedidos do gateway de inferência para usar a rede de dados

Os serviços Inference Gateway e GenAI Router são executados no cluster de infraestrutura da organização respetiva. Por predefinição, ambos os serviços são encaminhados através da rede de infraestrutura, mas têm de usar a rede de dados.

Para garantir que está disponível largura de banda de rede suficiente para os pedidos do Gemini, tem de encaminhar os pedidos do Inference Gateway destinados ao GenAI Router através da rede de dados. Tem de usar recursos de rede do Istio para encaminhar pedidos através do gateway de entrada de dados da organização do Gemini, em vez do gateway de entrada de infraestrutura predefinido.

Siga estes passos para configurar os pedidos do Inference Gateway destinados ao GenAI Router para usar a rede de dados:

  1. Obtenha o nome do domínio totalmente qualificado (FQDN) do 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
    

    Substitua GEMINI_ORG_MGMT_KUBECONFIG_PATH pelo caminho para o ficheiro kubeconfig do servidor da API de gestão da organização Gemini.

    O resultado tem de ser semelhante ao seguinte exemplo:

    "genai-router.org-1.zone1.google.gdch.test"
    
  2. Obtenha o FQDN da conta de serviço da organização do 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
    

    O resultado tem de ser semelhante ao seguinte exemplo:

    "service-accounts.org-1.zone1.google.gdch.test"
    
  3. Recupere o endereço IP do ELB do gateway de entrada do plano de dados da organização do 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
    

    O resultado tem de ser semelhante ao seguinte exemplo:

    "10.137.14.0/32"
    
  4. Adicione um recurso ServiceEntry para o GenAI Router e o FQDN de identidade. Em seguida, resolva para o endereço IP estático do endereço IP do ELB do gateway de entrada a partir do plano de dados da organização 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
    

    Substitua CUS_ORG_CP_KUBECONFIG_PATH pelo caminho para o ficheiro kubeconfig do plano de dados do cluster de infraestrutura da organização da organização do cliente.

  5. Recupere o endereço IP NAT de saída do projeto do 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
    

    Substitua CUS_ORG_MGMT_KUBECONFIG_PATH pelo caminho para o ficheiro kubeconfig do servidor da API de gestão da organização do cliente.

    O resultado tem de ser semelhante ao seguinte exemplo:

    "10.200.32.29"
    
  6. Aplique uma política de rede da organização ao servidor da API de gestão a partir da organização do Gemini para permitir pedidos da organização do 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
    

    Substitua GEMINI_ORG_MGMT_KUBECONFIG_PATH pelo caminho para o ficheiro kubeconfig do servidor da API de gestão da organização Gemini.

  7. Opcional: aplique uma política de rede da organização ao servidor da API de gestão da organização do cliente para permitir pedidos à organização do 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
    

    Substitua o seguinte:

    • CUS_ORG_MGMT_KUBECONFIG_PATH: o caminho para o ficheiro kubeconfig do servidor da API de gestão da organização do cliente.
    • CUSTOMER_ORG_OIQ: o OIQ da organização do cliente.

O que se segue?