Configura el almacenamiento para las instrucciones de video de Gemini

Gemini en Google Distributed Cloud (GDC) aislado te permite enviar instrucciones de video a través de dos métodos principales:

En esta página, se explica cómo configurar bucket adicionales necesarios para las instrucciones de video con Gemini en GDC, de modo que Inference Gateway pueda acceder a bucket.

Antes de comenzar

Antes de configurar el bucket para las instrucciones de video de Gemini en GDC, debes cumplir con los siguientes requisitos previos:

  • Instala las herramientas de la CLI de jq y yq. Para obtener detalles sobre la configuración del contenedor de herramientas, que contiene jq y yq, consulta el manual de ejecución OOPS-P0065.
  • Obtén el rol de administrador de Inference Gateway Secret (inference-gateway-secret-admin) en el espacio de nombres aics-system para crear un recurso Secret. Para obtener más detalles, consulta el runbook IAM-R0005.
  • Crea una organización de Gemini.

Configura el bucket de almacenamiento para las instrucciones de video

Configura un bucket de almacenamiento de objetos para permitir que los usuarios envíen instrucciones de video en tu organización de clientes.

Crea un bucket en el proyecto aics-system con los siguientes valores:

  • Nombre del bucket: aics-inference-gateway
  • Espacio de nombres: aics-system
  • Descripción: Bucket for video prompts

De forma predeterminada, el bucket se encripta automáticamente con V2 encryption, y la ubicación se encuentra en la misma zona que el kube-apiserver de administración en el que creas el recurso. Por lo tanto, debes crear un recurso Bucket zonal en el servidor de la API de administración de la organización del cliente, ubicado en la zona de Gemini. Para obtener más información sobre la API de Storage, consulta la descripción general de la API de Storage.

El recurso Bucket debe verse como el siguiente ejemplo:

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

Reemplaza GEMINI_ZONE por el nombre de la zona de Gemini.

Configura el acceso al bucket

Sigue estos pasos para configurar el acceso al bucket que creaste para las instrucciones de video:

  1. Crea una cuenta de servicio en el servidor de la API de administración desde la organización del 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
    

    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.

  2. Aplica los recursos Role y RoleBinding que otorgan a la cuenta de servicio acceso de lectura y escritura al 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. Copia la clave de acceso del servidor de la API de administración de la organización del cliente. Esta clave de acceso se activa en la implementación de Inference Gateway, y esta la usa para acceder al bucket. Sigue estos pasos para copiar la clave de acceso de un servidor de API a otro:

    1. Obtén el nombre del secreto que contiene la clave de acceso:

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

      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 ser similar al siguiente ejemplo:

      object-storage-key-sysstd-sa-5adjkgdmmn6fyd4o6ybnrnuaiomsbihq4jluymifw4jvcf7w7aya   Opaque                           3      14m
      
    2. Copia la clave de acceso:

      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. Crea un secreto nuevo con la clave de acceso en el clúster de infraestructura de la organización:

      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
      

      Reemplaza CUS_ORG_CP_KUBECONFIG_PATH por la ruta de acceso al archivo kubeconfig del clúster de infraestructura de la organización del cliente.

¿Qué sigue?