milvus-logo
LFAI
홈페이지
  • 관리 가이드
    • 종속성 관리

Milvus 오퍼레이터로 오브젝트 스토리지 구성하기

Milvus는 인덱스 파일 및 바이너리 로그와 같은 대규모 파일을 보존하기 위해 MinIO 또는 S3를 오브젝트 스토리지로 사용합니다. 이 항목에서는 Milvus 오퍼레이터와 함께 Milvus를 설치할 때 오브젝트 스토리지 종속성을 구성하는 방법을 소개합니다. 자세한 내용은 Milvus Operator 리포지토리에서 Milvus Operator로 오브젝트 스토리지 구성하기를 참조하세요.

이 항목에서는 Milvus Operator를 배포했다고 가정합니다.

자세한 내용은 Milvus Operator 배포하기를 참조하세요.

밀버스 오퍼레이터를 사용하여 밀버스 클러스터를 시작하려면 구성 파일을 지정해야 합니다.

kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml

타사 종속성을 구성하려면 milvus_cluster_default.yaml 에서 코드 템플릿을 편집하기만 하면 됩니다. 다음 섹션에서는 각각 개체 스토리지, etcd 및 Pulsar를 구성하는 방법을 소개합니다.

오브젝트 스토리지 구성하기

Milvus 클러스터는 인덱스 파일 및 바이너리 로그와 같은 대용량 파일을 유지하기 위해 MinIO 또는 S3를 오브젝트 스토리지로 사용합니다. 개체 스토리지를 구성하려면 spec.dependencies.storage 에서 필수 필드를 추가하고, 가능한 옵션은 externalinCluster 입니다.

내부 오브젝트 스토리지

기본적으로 Milvus Operator는 Milvus용 클러스터 내 MinIO를 배포합니다. 다음은 이 MinIO를 내부 오브젝트 스토리지로 사용하는 방법을 보여주는 구성 예시입니다.

apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec:
  # Omit other fields ...
  dependencies:
    # Omit other fields ...
    storage:
      inCluster:
        values:
          mode: standalone
          resources:
            requests:
              memory: 100Mi
        deletionPolicy: Delete # Delete | Retain, default: Retain
        pvcDeletion: true # default: false

위의 구성이 적용되면 클러스터 내 MinIO는 최대 100Mi의 메모리 제한으로 독립형 모드로 실행됩니다. 참고 사항

  • deletionPolicy 필드는 클러스터 내 MinIO의 삭제 정책을 지정합니다. 기본값은 Delete 이며 대체 옵션으로 Retain 이 있습니다.

    • Delete 는 Milvus 인스턴스를 중지할 때 클러스터 내 오브젝트 스토리지가 삭제됨을 나타냅니다.
    • Retain 는 클러스터 내 오브젝트 스토리지가 나중에 Milvus 인스턴스를 시작할 때 종속성 서비스로 유지됨을 나타냅니다.
  • pvcDeletion 필드는 클러스터 내 MinIO가 삭제될 때 PVC(퍼시스턴트 볼륨 클레임)를 삭제할지 여부를 지정합니다.

inCluster.values 아래의 필드는 Milvus 헬름 차트에 있는 필드와 동일하며 여기에서 찾을 수 있습니다.

외부 오브젝트 스토리지

템플릿 YAML 파일에서 external 을 사용하면 외부 오브젝트 스토리지 서비스를 사용함을 나타냅니다. 외부 오브젝트 저장소를 사용하려면 Milvus CRD의 spec.dependencies.storagespec.config.minio 에서 필드를 올바르게 설정해야 합니다.

외부 오브젝트 스토리지로 아마존 웹 서비스(AWS) S3 사용

  • AK/SK로 AWS S3 액세스 구성하기

    S3 버킷은 일반적으로 액세스 키와 액세스 비밀 키 한 쌍으로 액세스할 수 있습니다. 다음과 같이 Secret 오브젝트를 생성하여 쿠버네티스에 저장할 수 있습니다:

    # # change the <parameters> to match your environment
    apiVersion: v1
    kind: Secret
    metadata:
      name: my-release-s3-secret
    type: Opaque
    stringData:
      accesskey: <my-access-key>
      secretkey: <my-secret-key>
    

    그런 다음 AWS S3 버킷을 외부 오브젝트 스토리지로 구성할 수 있습니다:

    # # change the <parameters> to match your environment
    apiVersion: milvus.io/v1beta1
    kind: Milvus
    metadata:
      name: my-release
      labels:
        app: milvus
    spec:
      # Omit other fields ...
      config:
        minio:
          # your bucket name
          bucketName: <my-bucket>
          # Optional, config the prefix of the bucket milvus will use
          rootPath: milvus/my-release
          useSSL: true
      dependencies:
        storage:
          # enable external object storage
          external: true
          type: S3 # MinIO | S3
          # the endpoint of AWS S3
          endpoint: s3.amazonaws.com:443
          # the secret storing the access key and secret key
          secretRef: "my-release-s3-secret"
    
  • 역할로 AWS S3 액세스 구성하기

    또는, 실제 AK/SK 대신 임시 자격 증명만 사용하도록 AssumeRole을 사용하여 Milvus가 AWS S3 버킷에 액세스하도록 할 수 있습니다.

    이 방법을 선호하는 경우 AWS 콘솔에서 역할을 준비하고 일반적으로 arn:aws:iam::<your account id>:role/<role-name> 형식의 ARN을 가져와야 합니다.

    그런 다음 다음과 같이 ServiceAccount 오브젝트를 생성하여 Kubernetes에 저장합니다:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: my-release-sa
      annotations:
        eks.amazonaws.com/role-arn: <my-role-arn>
    

    모든 설정이 완료되면 템플릿 YAML 파일에서 위의 ServiceAccount 을 참조하고 spec.config.minio.useIAMtrue 으로 설정하여 AssumeRole을 활성화합니다.

    apiVersion: milvus.io/v1beta1
    kind: Milvus
    metadata:
      name: my-release
      labels:
        app: milvus
    spec:
      # Omit other fields ...
      components:
        # use the above ServiceAccount
        serviceAccountName: my-release-sa
      config:
        minio:
          # enable AssumeRole
          useIAM: true
          # Omit other fields ...
      dependencies:
        storage:
          # Omit other fields ...
          # Note: you must use regional endpoint here, otherwise the minio client that milvus uses will fail to connect
          endpoint: s3.<my-bucket-region>.amazonaws.com:443
          secretRef: "" # we don't need to specify the secret here
    

외부 오브젝트 스토리지로 구글 클라우드 스토리지(GCS) 사용

AWS S3 오브젝트 스토리지만이 유일한 선택지는 아닙니다. Google Cloud와 같은 다른 퍼블릭 클라우드 제공업체의 오브젝트 스토리지 서비스를 사용할 수도 있습니다.

  • AK/SK별 GCS 액세스 구성

    구성은 대부분 AWS S3를 사용할 때와 비슷합니다. 여전히 Secret 오브젝트를 생성하여 자격 증명을 쿠버네티스에 저장해야 합니다.

    # # change the <parameters> to match your environment
    apiVersion: v1
    kind: Secret
    metadata:
      name: my-release-gcp-secret
    type: Opaque
    stringData:
      accesskey: <my-access-key>
      secretkey: <my-secret-key>
    

    그런 다음 다음과 같이 endpointstorage.googleapis.com:443 으로 변경하고 spec.config.minio.cloudProvidergcp 으로 설정하기만 하면 됩니다:

    # # change the <parameters> to match your environment
    apiVersion: milvus.io/v1beta1
    kind: Milvus
    metadata:
      name: my-release
      labels:
        app: milvus
    spec:
      # Omit other fields ...
      config:
        minio:
          cloudProvider: gcp
      dependencies:
        storage:
          # Omit other fields ...
          endpoint: storage.googleapis.com:443
    
  • AssumeRole로 GCS 액세스 구성하기

    AWS S3와 마찬가지로, GKE를 Kubernetes 클러스터로 사용하는 경우 임시 자격 증명을 사용하여 임시 자격 증명을 사용하여 GCS에 액세스할 수도 있습니다.

    ServiceAccount 의 어노테이션은 AWS EKS의 어노테이션과 다릅니다. 역할 ARN 대신 GCP 서비스 계정 이름을 지정해야 합니다.

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: my-release-sa
      annotations:
        iam.gke.io/gcp-service-account: <my-gcp-service-account-name>
    

    그런 다음 위의 ServiceAccount 을 사용하도록 Milvus 인스턴스를 구성하고 다음과 같이 spec.config.minio.useIAMtrue 으로 설정하여 AssumeRole을 활성화할 수 있습니다:

    labels:
        app: milvus
    spec:
      # Omit other fields ...
      components:
        # use the above ServiceAccount
        serviceAccountName: my-release-sa
      config:
        minio:
          cloudProvider: gcp
          # enable AssumeRole
          useIAM: true
          # Omit other fields ...  
    

다음 단계

Milvus Operator로 다른 Milvus 종속성을 구성하는 방법을 알아보세요:

번역DeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
피드백

이 페이지가 도움이 되었나요?