Configurar o armazenamento para comandos de vídeo do Gemini

Com o Gemini no Google Distributed Cloud (GDC) com isolamento físico, é possível enviar comandos de vídeo por dois métodos principais:

  • Codificação base64 inline: codifique o vídeo no formato base64 e envie como dados inline na solicitação de API.
  • Bucket de armazenamento: envie o vídeo para um bucket de armazenamento e forneça o URL dele no bucket como parte da solicitação.

Nesta página, você vai aprender a configurar outras configurações de bucket necessárias para comandos de vídeo com o Gemini no GDC para que o gateway de inferência tenha acesso ao bucket.

Antes de começar

Antes de configurar o bucket para comandos de vídeo do Gemini no GDC, é necessário atender aos seguintes pré-requisitos:

  • Instale as ferramentas CLI jq e yq. Para detalhes sobre a configuração do contêiner de ferramentas, que contém jq e yq, consulte o runbook OOPS-P0065.
  • Consiga a função de administrador secreto do Inference Gateway (inference-gateway-secret-admin) no namespace aics-system para criar um recurso Secret. Para mais detalhes, consulte o runbook IAM-R0005.
  • Crie uma organização do Gemini.

Configurar o bucket de armazenamento para comandos de vídeo

Configure um bucket de armazenamento de objetos para permitir que os usuários enviem comandos de vídeo na sua organização de clientes.

Crie um bucket no projeto aics-system com os seguintes valores:

  • Nome do bucket: aics-inference-gateway
  • Namespace: aics-system
  • Descrição: Bucket for video prompts

Por padrão, o bucket é criptografado automaticamente com V2 encryption, e o local está na mesma zona que o kube-apiserver de gerenciamento em que você cria o recurso. Portanto, é necessário criar um recurso zonal Bucket no servidor da API de gerenciamento da organização do cliente, localizado na zona do Gemini. Para mais informações sobre a API Storage, consulte a visão geral da API Storage.

O recurso Bucket precisa ser semelhante ao exemplo a seguir:

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  labels:
    object.gdc.goog/bucket-type: normal
    object.gdc.goog/encryption-version: v2
    object.gdc.goog/tenant-category: system
  name: aics-inference-gateway
  namespace: aics-system
spec:
  description: Bucket for video prompts
  location: GEMINI_ZONE
  storageClass: Standard

Substitua GEMINI_ZONE pelo nome da zona do Gemini.

Configurar o acesso ao bucket

Siga estas etapas para configurar o acesso ao bucket criado para solicitações de vídeo:

  1. Crie uma conta de serviço no servidor da API de gerenciamento da organização do cliente:

    KUBECONFIG=CUS_ORG_MGMT_KUBECONFIG_PATH
    
    kubectl --kubeconfig ${KUBECONFIG:?} apply -f - << EOF
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: aics-inference-gateway
      namespace: aics-system
    EOF
    

    Substitua CUS_ORG_MGMT_KUBECONFIG_PATH pelo caminho do arquivo kubeconfig do servidor da API de gerenciamento da organização do cliente.

  2. Aplique os recursos Role e RoleBinding que dão à conta de serviço acesso de leitura e gravação ao bucket:

    kubectl --kubeconfig ${KUBECONFIG:?} apply -f - << EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      labels:
        logging.private.gdch.goog/loggingpipeline-name: default
      name: aics-inference-gateway-buckets-role
      namespace: aics-system
    rules:
    - apiGroups:
      - object.gdc.goog
      resourceNames:
      - aics-inference-gateway
      resources:
      - buckets
      verbs:
      - read-object
      - write-object
    EOF
    
    kubectl --kubeconfig ${KUBECONFIG:?} apply -f - << EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      labels:
        logging.private.gdch.goog/loggingpipeline-name: default
      name: audit-logs-loki-pa-buckets-binding
      namespace: aics-system
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: Role
      name: aics-inference-gateway-buckets-role
    subjects:
    - kind: ServiceAccount
      name: aics-inference-gateway
      namespace: aics-system
    EOF
    
  3. Copie a chave de acesso do servidor da API de gerenciamento da organização do cliente. Essa chave de acesso é montada na implantação do Inference Gateway, que a usa para acessar o bucket. Siga estas etapas para copiar a chave de acesso de um servidor de API para outro:

    1. Extraia o nome do secret que contém a chave de acesso:

      MGMT_KUBECONFIG=CUS_ORG_MGMT_KUBECONFIG_PATH
      
      kubectl get secret -n aics-system \
        --kubeconfig {MGMT_KUBECONFIG:?} | grep object-storage-key
      

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

      A saída será semelhante ao exemplo a seguir:

      object-storage-key-sysstd-sa-5adjkgdmmn6fyd4o6ybnrnuaiomsbihq4jluymifw4jvcf7w7aya   Opaque                           3      14m
      
    2. Copie a chave de acesso:

      SECRET_NAME=object-storage-key-sysstd-sa-5adjkgdmmn6fyd4o6ybnrnuaiomsbihq4jluymifw4jvcf7w7aya
      
      kubectl get secret/$SECRET_NAME -n aics-system
        --kubeconfig {MGMT_KUBECONFIG:?} -o yaml | yq .data > access-key.yaml
      
    3. Crie um novo secret com a chave de acesso no cluster de infraestrutura da organização:

      CP_KUBECONFIG=CUS_ORG_CP_KUBECONFIG_PATH
      
      (echo "apiVersion: v1"; echo "kind: Secret"; echo "metadata:"; echo "  name: object-storage-key-std-sa"; \
      echo "  namespace: aics-system"; echo "data:"; sed 's/^/  /' access-key.yaml | cat -) > object-storage-key-std-sa.yaml
      
      kubectl apply --kubeconfig {CP_KUBECONFIG} -f object-storage-key-std-sa.yaml
      

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

A seguir