Gemini on Google Distributed Cloud(GDC)エアギャップでは、主に次の 2 つの方法で動画プロンプトを送信できます。
- インライン base64 エンコード: 動画を base64 形式でエンコードし、API リクエスト内のインライン データとして送信します。
- ストレージ バケット: 動画をストレージ バケットにアップロードし、リクエストの一部としてバケット内の動画の URL を指定します。
このページでは、GDC の Gemini で動画プロンプトに必要なバケット構成を追加で設定し、推論ゲートウェイがバケットにアクセスできるようにする方法について説明します。
始める前に
GDC で Gemini 動画プロンプトのバケットを設定する前に、次の前提条件を満たす必要があります。
jqCLI ツールとyqCLI ツールをインストールします。jqとyqを含むツール コンテナの設定の詳細については、OOPS-P0065 ランブックをご覧ください。aics-systemNamespace で Inference Gateway Secret 管理者(inference-gateway-secret-admin)ロールを取得して、Secretリソースを作成します。詳細については、IAM-R0005 ランブックをご覧ください。- Gemini 組織を作成する。
動画プロンプトのストレージ バケットを構成する
ユーザーが顧客組織で動画プロンプトを送信できるように、オブジェクト ストレージ バケットを構成します。
次の値を使用して、aics-system プロジェクトにバケットを作成します。
- バケット名:
aics-inference-gateway - Namespace:
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 EOFCUS_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 サーバーからアクセスキーをコピーします。このアクセスキーは Inference Gateway デプロイにマウントされ、Inference Gateway はこれを使用してバケットにアクセスします。次の手順に沿って、ある API サーバーから別の API サーバーにアクセスキーをコピーします。
アクセスキーを含むシークレットの名前を取得します。
MGMT_KUBECONFIG=CUS_ORG_MGMT_KUBECONFIG_PATH kubectl get secret -n aics-system \ --kubeconfig {MGMT_KUBECONFIG:?} | grep object-storage-keyCUS_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.yamlCUS_ORG_CP_KUBECONFIG_PATHは、顧客組織の組織インフラストラクチャ クラスタの kubeconfig ファイルのパスに置き換えます。