Configurare lo spazio di archiviazione per i prompt video di Gemini

Gemini su Google Distributed Cloud (GDC) con air gap ti consente di inviare prompt video tramite due metodi principali:

  • Codifica Base64 incorporata: Codifica il video in formato Base64 e invialo come dati incorporati nella richiesta API.
  • Bucket di archiviazione: carica il video in un bucket di archiviazione e fornisci l'URL del video nel bucket nell'ambito della richiesta.

Questa pagina ti guida nella configurazione dei bucket aggiuntivi necessari per i prompt video con Gemini su GDC, in modo che l'Inference Gateway possa accedere al bucket.

Prima di iniziare

Prima di configurare il bucket per i prompt video di Gemini in GDC, devi soddisfare i seguenti prerequisiti:

  • Installa gli strumenti CLI jq e yq. Per informazioni dettagliate sulla configurazione del contenitore degli strumenti, che contiene jq e yq, consulta il runbook OOPS-P0065.
  • Ottieni il ruolo di amministratore dei secret di Inference Gateway (inference-gateway-secret-admin) nello spazio dei nomi aics-system per creare una risorsa Secret. Per ulteriori dettagli, consulta il runbook IAM-R0005.
  • Crea un'organizzazione Gemini.

Configurare il bucket di archiviazione per i prompt video

Configura un bucket di archiviazione oggetti per consentire agli utenti di inviare prompt video nella tua organizzazione cliente.

Crea un bucket nel progetto aics-system con i seguenti valori:

  • Nome bucket: aics-inference-gateway
  • Namespace: aics-system
  • Descrizione: Bucket for video prompts

Per impostazione predefinita, il bucket viene criptato automaticamente con V2 encryption e la posizione si trova nella stessa zona della gestione kube-apiserver in cui crei la risorsa. Pertanto, devi creare una risorsa Bucket zonale nel server API di gestione dell'organizzazione cliente, che si trova nella zona Gemini. Per ulteriori informazioni sull'API Storage, consulta la panoramica dell'API Storage.

La risorsa Bucket deve essere simile all'esempio seguente:

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

Sostituisci GEMINI_ZONE con il nome della zona Gemini.

Configura l'accesso al bucket

Segui questi passaggi per configurare l'accesso al bucket che hai creato per i prompt video:

  1. Crea un account di servizio nel server API di gestione dall'organizzazione 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
    

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

  2. Applica le risorse Role e RoleBinding che concedono all'account di servizio l'accesso in lettura e scrittura 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 chiave di accesso dal server API di gestione dell'organizzazione cliente. Questa chiave di accesso viene montata sul deployment di Inference Gateway e Inference Gateway la utilizza per accedere al bucket. Segui questi passaggi per copiare la chiave di accesso da un server API a un altro:

    1. Recupera il nome del secret che contiene la chiave di accesso:

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

      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:

      object-storage-key-sysstd-sa-5adjkgdmmn6fyd4o6ybnrnuaiomsbihq4jluymifw4jvcf7w7aya   Opaque                           3      14m
      
    2. Copia la chiave di accesso:

      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 nuovo secret con la chiave di accesso nel cluster dell'infrastruttura dell'organizzazione:

      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
      

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

Passaggi successivi