設定 Gemini 影片提示的儲存空間

透過 Google Distributed Cloud (GDC) 實體隔離方案使用 Gemini 時,您可以透過兩種主要方法提交影片提示:

  • 內嵌 Base64 編碼: 將影片編碼為 Base64 格式,並在 API 要求中以內嵌資料的形式傳送。
  • 儲存空間 bucket: 將影片上傳至儲存空間 bucket,並在要求中提供 bucket 內影片的網址。

本頁面將逐步說明如何設定 Gemini on GDC 影片提示所需的額外 bucket 設定,讓 Inference Gateway 能夠存取 bucket。

事前準備

在 GDC 中設定 Gemini 影片提示的 bucket 前,請先符合下列先決條件:

  • 安裝 jqyq CLI 工具。如要進一步瞭解工具容器設定 (包含 jqyq),請參閱 OOPS-P0065 執行手冊。
  • aics-system 命名空間中取得 Inference Gateway Secret Admin (inference-gateway-secret-admin) 角色,即可建立 Secret 資源。詳情請參閱 IAM-R0005 runbook。
  • 建立 Gemini 機構

設定影片提示的儲存空間值區

設定物件儲存空間 bucket,允許使用者在客戶機構中傳送影片提示。

aics-system 專案中建立值區,並使用下列值:

  • Bucket name (值區名稱):aics-inference-gateway
  • 命名空間aics-system
  • 說明Bucket for video prompts

根據預設,系統會使用 V2 encryption 自動加密值區,且位置與您建立資源的管理 kube-apiserver 位於同一區域。因此,您必須在 Gemini 區域的客戶機構組織中,透過管理 API 伺服器建立區域 Bucket 資源。如要進一步瞭解 Storage API,請參閱「Storage API 總覽」。

Bucket 資源必須如下列範例所示:

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

GEMINI_ZONE 替換為 Gemini 區域的名稱。

設定值區的存取權

請按照下列步驟,設定您為影片提示建立的值區存取權:

  1. 在管理 API 伺服器中,從客戶機構建立服務帳戶:

    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
    

    CUS_ORG_MGMT_KUBECONFIG_PATH 替換為客戶機構管理 API 伺服器的 kubeconfig 檔案路徑。

  2. 套用 RoleRoleBinding 資源,授予服務帳戶 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. 從客戶機構的管理 API 伺服器複製存取金鑰。這個存取金鑰會掛接至 Inference Gateway 部署作業,並由 Inference Gateway 用於存取值區。請按照下列步驟,將存取金鑰從一個 API 伺服器複製到另一個伺服器:

    1. 取得包含存取金鑰的密鑰名稱:

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

      CUS_ORG_MGMT_KUBECONFIG_PATH 替換為客戶機構管理 API 伺服器的 kubeconfig 檔案路徑。

      輸出內容應與下列範例類似:

      object-storage-key-sysstd-sa-5adjkgdmmn6fyd4o6ybnrnuaiomsbihq4jluymifw4jvcf7w7aya   Opaque                           3      14m
      
    2. 複製存取金鑰:

      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. 在機構基礎架構叢集中,使用存取金鑰建立新密鑰:

      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
      

      CUS_ORG_CP_KUBECONFIG_PATH 替換為客戶機構的機構基礎架構叢集 kubeconfig 檔案路徑。

後續步驟