🚀 Coba Zilliz Cloud, Milvus yang sepenuhnya terkelola, secara gratis—rasakan performa 10x lebih cepat! Coba Sekarang>>

milvus-logo
LFAI
Beranda
  • Panduan Administrasi
    • Mengelola Ketergantungan
  • Home
  • Docs
  • Panduan Administrasi

  • Mengelola Ketergantungan

  • Dengan Operator Milvus

  • Penyimpanan Objek

Mengkonfigurasi Penyimpanan Objek dengan Operator Milvus

Milvus menggunakan MinIO atau S3 sebagai penyimpanan objek untuk menyimpan berkas berskala besar, seperti berkas indeks dan log biner. Topik ini memperkenalkan cara mengonfigurasi ketergantungan penyimpanan objek ketika Anda menginstal Milvus dengan Milvus Operator. Untuk detail lebih lanjut, lihat Mengonfigurasi Penyimpanan Objek dengan Milvus Operator di repositori Milvus Operator.

Topik ini mengasumsikan bahwa Anda telah men-deploy Milvus Operator.

Lihat Menerapkan Milvus Operator untuk informasi lebih lanjut.

Anda perlu menentukan file konfigurasi untuk menggunakan Milvus Operator untuk memulai cluster Milvus.

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

Anda hanya perlu mengedit template kode di milvus_cluster_default.yaml untuk mengonfigurasi dependensi pihak ketiga. Bagian berikut ini memperkenalkan cara mengonfigurasi penyimpanan objek, etcd, dan Pulsar.

Mengkonfigurasi penyimpanan objek

Milvus cluster menggunakan MinIO atau S3 sebagai penyimpanan objek untuk menyimpan berkas-berkas berskala besar, seperti berkas indeks dan log biner. Tambahkan bidang yang diperlukan di bawah spec.dependencies.storage untuk mengonfigurasi penyimpanan objek, opsi yang memungkinkan adalah external dan inCluster.

Penyimpanan objek internal

Secara default, Operator Milvus menggunakan MinIO dalam cluster untuk Milvus. Berikut ini adalah contoh konfigurasi untuk mendemonstrasikan bagaimana menggunakan MinIO ini sebagai penyimpanan objek internal.

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

Setelah konfigurasi di atas diterapkan, MinIO in-cluster akan berjalan dalam mode mandiri dengan batas memori hingga 100Mi. Perhatikan bahwa

  • Kolom deletionPolicy menentukan kebijakan penghapusan MinIO dalam cluster. Secara default adalah Delete dan memiliki Retain sebagai opsi alternatif.

    • Delete mengindikasikan bahwa penyimpanan objek dalam klaster akan dihapus ketika Anda menghentikan instans Milvus.
    • Retain mengindikasikan bahwa penyimpanan objek dalam cluster dipertahankan sebagai layanan ketergantungan untuk startup berikutnya dari instans Milvus Anda.
  • Kolom pvcDeletion menentukan apakah akan menghapus PVC (Persistent Volume Claim) ketika MinIO dalam cluster dihapus.

Kolom di bawah inCluster.values sama dengan yang ada di Milvus Helm Chart, dan Anda dapat menemukannya di sini.

Penyimpanan objek eksternal

Menggunakan external dalam file YAML template menunjukkan penggunaan layanan penyimpanan objek eksternal. Untuk menggunakan penyimpanan objek eksternal, Anda perlu mengatur bidang dengan benar di bawah spec.dependencies.storage dan spec.config.minio di Milvus CRD.

Menggunakan Amazon Web Service (AWS) S3 sebagai penyimpanan objek eksternal

  • Mengonfigurasi Akses AWS S3 dengan AK/SK

    Bucket S3 biasanya dapat diakses dengan sepasang kunci akses dan kunci rahasia akses. Anda dapat membuat objek Secret untuk menyimpannya di Kubernetes Anda sebagai berikut:

    # # 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>
    

    Kemudian Anda dapat mengonfigurasi AWS S3 bucket sebagai penyimpanan objek eksternal:

    # # 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"
    
  • Mengonfigurasi Akses AWS S3 dengan AssumeRole

    Sebagai alternatif, Anda dapat membuat Milvus mengakses bucket AWS S3 Anda menggunakan AssumeRole, sehingga hanya kredensial sementara yang dilibatkan, bukan AK/SK Anda yang sebenarnya.

    Jika ini yang Anda inginkan, Anda perlu menyiapkan role di konsol AWS Anda dan mendapatkan ARN-nya, yang biasanya dalam bentuk arn:aws:iam::<your account id>:role/<role-name>.

    Kemudian buatlah objek ServiceAccount untuk menyimpannya di Kubernetes Anda sebagai berikut:

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

    Setelah semuanya siap, rujuk ServiceAccount di atas pada berkas YAML template, dan setel spec.config.minio.useIAM ke true untuk mengaktifkan 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
    

Gunakan Google Cloud Storage (GCS) sebagai penyimpanan objek eksternal

Penyimpanan objek AWS S3 bukan satu-satunya pilihan. Anda juga dapat menggunakan layanan penyimpanan objek dari penyedia cloud publik lainnya, seperti Google Cloud.

  • Konfigurasikan Akses GCS dengan AK/SK

    Konfigurasinya sebagian besar mirip dengan menggunakan AWS S3. Anda masih perlu membuat objek Secret untuk menyimpan kredensial Anda di Kubernetes.

    # # 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>
    

    Kemudian, Anda hanya perlu mengubah endpoint menjadi storage.googleapis.com:443 dan mengatur spec.config.minio.cloudProvider menjadi gcp sebagai berikut:

    # # 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
    
  • Mengonfigurasi Akses GCS dengan AssumeRole

    Mirip dengan AWS S3, Anda juga dapat menggunakan Workload Identity untuk mengakses GCS dengan kredensial sementara jika Anda menggunakan GKE sebagai cluster Kubernetes Anda.

    Penjelasan pada ServiceAccount berbeda dengan penjelasan pada AWS EKS. Anda perlu menentukan nama akun layanan GCP, bukan ARN peran.

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

    Kemudian, Anda dapat mengonfigurasi instans Milvus Anda untuk menggunakan ServiceAccount di atas dan mengaktifkan AssumeRole dengan mengatur spec.config.minio.useIAM ke true sebagai berikut:

    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 ...  
    

Apa selanjutnya

Pelajari cara mengonfigurasi dependensi Milvus lainnya dengan Milvus Operator:

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?