透過 Google Distributed Cloud (GDC) 實體隔離方案使用 Gemini 時,您可以透過兩種主要方法提交影片提示:
- 內嵌 Base64 編碼: 將影片編碼為 Base64 格式,並在 API 要求中以內嵌資料的形式傳送。
- 儲存空間 bucket: 將影片上傳至儲存空間 bucket,並在要求中提供 bucket 內影片的網址。
本頁面將逐步說明如何設定 Gemini on GDC 影片提示所需的額外 bucket 設定,讓 Inference Gateway 能夠存取 bucket。
事前準備
在 GDC 中設定 Gemini 影片提示的 bucket 前,請先符合下列先決條件:
- 安裝
jq和yqCLI 工具。如要進一步瞭解工具容器設定 (包含jq和yq),請參閱 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 區域的名稱。
設定值區的存取權
請按照下列步驟,設定您為影片提示建立的值區存取權:
在管理 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 檔案路徑。套用
Role和RoleBinding資源,授予服務帳戶 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從客戶機構的管理 API 伺服器複製存取金鑰。這個存取金鑰會掛接至 Inference Gateway 部署作業,並由 Inference Gateway 用於存取值區。請按照下列步驟,將存取金鑰從一個 API 伺服器複製到另一個伺服器:
取得包含存取金鑰的密鑰名稱:
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複製存取金鑰:
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在機構基礎架構叢集中,使用存取金鑰建立新密鑰:
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 檔案路徑。