Configurer le stockage pour les requêtes vidéo Gemini

Gemini sur Google Distributed Cloud (GDC) sous air gap vous permet d'envoyer des requêtes vidéo de deux manières principales :

  • Encodage base64 intégré : encodez la vidéo au format base64 et envoyez-la en tant que données intégrées dans la requête API.
  • Bucket de stockage : Mettez en ligne la vidéo dans un bucket de stockage et fournissez l'URL de la vidéo dans le bucket dans la requête.

Cette page vous explique comment configurer des buckets supplémentaires nécessaires aux requêtes vidéo avec Gemini sur GDC afin que la passerelle d'inférence puisse accéder au bucket.

Avant de commencer

Avant de configurer le bucket pour les requêtes vidéo Gemini dans GDC, vous devez remplir les conditions préalables suivantes :

  • Installez les outils CLI jq et yq. Pour en savoir plus sur la configuration du conteneur d'outils, qui contient jq et yq, consultez le runbook OOPS-P0065.
  • Obtenez le rôle d'administrateur de secrets Inference Gateway (inference-gateway-secret-admin) dans l'espace de noms aics-system pour créer une ressource Secret. Pour en savoir plus, consultez le runbook IAM-R0005.
  • Créez une organisation Gemini.

Configurer le bucket de stockage pour les suggestions vidéo

Configurez un bucket de stockage d'objets pour permettre aux utilisateurs d'envoyer des requêtes vidéo dans votre organisation cliente.

Créez un bucket dans le projet aics-system avec les valeurs suivantes :

  • Nom du bucket : aics-inference-gateway
  • Namespace (Espace de noms) : aics-system
  • Description : Bucket for video prompts

Par défaut, le bucket est automatiquement chiffré avec V2 encryption et l'emplacement se trouve dans la même zone que le kube-apiserver de gestion où vous créez la ressource. Vous devez donc créer une ressource Bucket zonale dans le serveur de l'API Management de l'organisation cliente, située dans la zone Gemini. Pour en savoir plus sur l'API Storage, consultez la présentation de l'API Storage.

La ressource Bucket doit ressembler à l'exemple suivant :

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

Remplacez GEMINI_ZONE par le nom de la zone Gemini.

Configurer l'accès au bucket

Pour configurer l'accès au bucket que vous avez créé pour les suggestions vidéo, procédez comme suit :

  1. Créez un compte de service sur le serveur de l'API Management à partir de l'organisation 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
    

    Remplacez CUS_ORG_MGMT_KUBECONFIG_PATH par le chemin d'accès au fichier kubeconfig du serveur d'API de gestion de l'organisation cliente.

  2. Appliquez les ressources Role et RoleBinding qui accordent au compte de service un accès en lecture et en écriture au 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. Copiez la clé d'accès du serveur de l'API Management de l'organisation cliente. Cette clé d'accès est installée sur le déploiement Inference Gateway, qui l'utilise pour accéder au bucket. Pour copier la clé d'accès d'un serveur d'API à un autre, procédez comme suit :

    1. Obtenez le nom du secret contenant la clé d'accès :

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

      Remplacez CUS_ORG_MGMT_KUBECONFIG_PATH par le chemin d'accès au fichier kubeconfig du serveur d'API de gestion de l'organisation cliente.

      Le résultat doit ressembler à l'exemple suivant :

      object-storage-key-sysstd-sa-5adjkgdmmn6fyd4o6ybnrnuaiomsbihq4jluymifw4jvcf7w7aya   Opaque                           3      14m
      
    2. Copiez la clé d'accès :

      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. Créez un secret avec une clé d'accès dans le cluster d'infrastructure de l'organisation :

      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
      

      Remplacez CUS_ORG_CP_KUBECONFIG_PATH par le chemin d'accès au fichier kubeconfig du cluster d'infrastructure de l'organisation du client.

Étapes suivantes