借助 Gemini on Google Distributed Cloud (GDC) air-gapped,您可以通过两种主要方法提交视频提示:
- 内嵌 Base64 编码:将视频编码为 Base64 格式,并将其作为内嵌数据在 API 请求中发送。
- 存储桶:将视频上传到存储桶,并在请求中提供存储桶中视频的网址。
本页面将引导您设置 GDC 上 Gemini 视频提示所需的其他存储桶配置,以便推理网关可以访问该存储桶。
准备工作
在 GDC 中为 Gemini 视频提示设置存储桶之前,您必须满足以下前提条件:
- 安装
jq和yqCLI 工具。如需详细了解包含jq和yq的工具容器设置,请参阅 OOPS-P0065 运行手册。 - 在
aics-system命名空间中获取推理网关 Secret 管理员 (inference-gateway-secret-admin) 角色,以创建Secret资源。如需了解详情,请参阅 IAM-R0005 runbook。 - 创建 Gemini 组织。
为视频提示配置存储桶
配置对象存储桶,以允许客户组织中的用户发送视频提示。
在 aics-system 项目中创建存储桶,并使用以下值:
- 存储分区名称:
aics-inference-gateway - Namespace:
aics-system - 说明:
Bucket for video prompts
默认情况下,存储桶会自动使用 V2 encryption 进行加密,并且位置与您创建资源的管理 kube-apiserver 位于同一可用区。因此,您必须在管理 API 服务器中从客户组织(位于 Gemini 可用区)创建区域性 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资源,以授予服务账号对存储桶的读写权限: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 服务器复制访问密钥。此访问密钥会装载到推理网关部署中,推理网关会使用此密钥访问相应存储桶。请按照以下步骤将访问密钥从一个 API 服务器复制到另一个 API 服务器:
获取包含访问密钥的 Secret 的名称:
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在组织基础架构集群中创建具有访问密钥的新 Secret:
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 文件路径。