Gemini 동영상 프롬프트의 스토리지 구성

Google Distributed Cloud (GDC) 에어 갭의 Gemini를 사용하면 다음 두 가지 기본 방법을 통해 동영상 프롬프트를 제출할 수 있습니다.

  • 인라인 base64 인코딩: 동영상을 base64 형식으로 인코딩하고 API 요청 내에서 인라인 데이터로 전송합니다.
  • 스토리지 버킷: 스토리지 버킷에 동영상을 업로드하고 요청의 일부로 버킷에 있는 동영상의 URL을 제공합니다.

이 페이지에서는 추론 게이트웨이가 버킷에 액세스할 수 있도록 GDC의 Gemini를 사용한 동영상 프롬프트에 필요한 추가 버킷 구성을 설정하는 방법을 안내합니다.

시작하기 전에

GDC에서 Gemini 동영상 프롬프트용 버킷을 설정하기 전에 다음 기본 요건을 충족해야 합니다.

  • jqyq CLI 도구를 설치합니다. jqyq이 포함된 도구 컨테이너 설정에 관한 자세한 내용은 OOPS-P0065 런북을 참고하세요.
  • aics-system 네임스페이스에서 추론 게이트웨이 보안 비밀 관리자 (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 영역의 이름으로 바꿉니다.

버킷에 대한 액세스 구성

동영상 프롬프트용으로 만든 버킷에 대한 액세스를 구성하려면 다음 단계를 따르세요.

  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 리소스를 적용합니다.

    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 서버에서 액세스 키를 복사합니다. 이 액세스 키는 추론 게이트웨이 배포에 마운트되며 추론 게이트웨이는 이를 사용하여 버킷에 액세스합니다. 다음 단계에 따라 한 API 서버에서 다른 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 파일의 경로로 바꿉니다.

다음 단계