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.
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 adalahDelete
dan memilikiRetain
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 setelspec.config.minio.useIAM
ketrue
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
menjadistorage.googleapis.com:443
dan mengaturspec.config.minio.cloudProvider
menjadigcp
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 mengaturspec.config.minio.useIAM
ketrue
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: