Menerapkan Cluster Milvus di GKE
Milvus adalah basis data vektor asli cloud dan dapat digunakan di berbagai lingkungan cloud. Panduan ini memandu Anda melalui setiap detail tentang menyiapkan Milvus di Google Cloud Platform (GCP).
Menerapkan cluster Milvus di GCP
Sebelum memulai
Untuk menerapkan Milvus di GCP, pastikan bahwa
Proyek sudah ada di akun GCP Anda.
Untuk membuat proyek, lihat Membuat dan mengelola proyek. Nama proyek yang digunakan dalam panduan ini adalah milvus-testing-nonprod.
Anda telah menginstal gcloud CLI, kubectl, dan Helm secara lokal, atau memutuskan untuk menggunakan Cloud Shell berbasis peramban.
Anda telah menginisialisasi gcloud CLI dengan kredensial akun GCP Anda.
Menyiapkan jaringan
Untuk memastikan keamanan Milvus, Anda perlu membuat jaringan virtual yang terisolasi secara logis dalam proyek GCP Anda. Perintah berikut ini akan membuat sebuah VPC.
gcloud compute networks create milvus-network \
--project=milvus-testing-nonprod \
--subnet-mode=auto \
--mtu=1460 \
--bgp-routing-mode=regional
Untuk memfasilitasi pekerjaan Anda, Anda juga perlu menyiapkan beberapa aturan firewall untuk mengizinkan lalu lintas eksternal melalui ICMP, RDP, dan SSH serta lalu lintas di dalam VPC.
gcloud compute firewall-rules create milvus-network-allow-icmp \
--project=milvus-testing-nonprod \
--network=projects/milvus-testing-nonprod/global/networks/milvus-network \
--description="Allows ICMP connections from any source to any instance on the network." \
--direction=INGRESS \
--priority=65534 \
--source-ranges=0.0.0.0/0 \
--action=ALLOW \
--rules=icmp
gcloud compute firewall-rules create milvus-network-allow-internal \
--project=milvus-testing-nonprod \
--network=projects/milvus-testing-nonprod/global/networks/milvus-network \
--description="Allows connections from any source in the network IP range to any instance on the network using all protocols." \
--direction=INGRESS \
--priority=65534 \
--source-ranges=10.128.0.0/9 \
--action=ALLOW --rules=all
gcloud compute firewall-rules create milvus-network-allow-rdp \
--project=milvus-testing-nonprod \
--network=projects/milvus-testing-nonprod/global/networks/milvus-network \
--description="Allows RDP connections from any source to any instance on the network using port 3389." \
--direction=INGRESS \
--priority=65534 \
--source-ranges=0.0.0.0/0 \
--action=ALLOW \
--rules=tcp:3389
gcloud compute firewall-rules create milvus-network-allow-ssh \
--project=milvus-testing-nonprod \
--network=projects/milvus-testing-nonprod/global/networks/milvus-network \
--description="Allows TCP connections from any source to any instance on the network using port 22." \
--direction=INGRESS \
--priority=65534 \
--source-ranges=0.0.0.0/0 \
--action=ALLOW \
--rules=tcp:22
Terakhir, Anda perlu mengizinkan lalu lintas masuk ke instans Milvus yang akan kita buat nanti di port 19530.
gcloud compute firewall-rules create allow-milvus-in \
--project=milvus-testing-nonprod \
--description="Allow ingress traffic for Milvus on port 19530" \
--direction=INGRESS \
--priority=1000 \
--network=projects/milvus-testing-nonprod/global/networks/milvus-network \
--action=ALLOW \
--rules=tcp:19530 \
--source-ranges=0.0.0.0/0
Menyediakan klaster Kubernetes
Dalam panduan ini, kita akan menggunakan layanan Google Kubernetes Engine (GKE) untuk menyediakan klaster Kubernetes dengan dua node di zona us-west1-a. Setiap node adalah mesin virtual Compute Engine e2-standard-4 yang menjalankan citra COS_CONTAINERD.
Anda disarankan untuk menggunakan jenis mesin yang menawarkan memori minimum 16 GB untuk memastikan stabilitas layanan.
gcloud container clusters create "milvus-cluster-1" \
--project "milvus-testing-nonprod" \
--zone "us-west1-a" \
--workload-pool "milvus-testing-nonprod.svc.id.goog" \
--no-enable-basic-auth \
--cluster-version "1.28.10-gke.1075001" \
--release-channel "regular" \
--machine-type "c2-standard-4" \
--image-type "COS_CONTAINERD" \
--disk-type "pd-standard" \
--disk-size "100" \
--max-pods-per-node "110" \
--num-nodes "3" \
--enable-ip-alias \
--network "projects/milvus-testing-nonprod/global/networks/milvus-network" \
--subnetwork "projects/milvus-testing-nonprod/regions/us-west1/subnetworks/milvus-network"
Diperlukan waktu beberapa menit agar kluster Kubernetes dapat aktif. Setelah klaster siap, gunakan perintah berikut ini untuk mengambil kredensial sehingga Anda dapat menjalankan perintah kubectl
di terminal Anda untuk berkomunikasi dengan klaster dari jarak jauh.
gcloud container clusters get-credentials milvus-cluster-1 --zone "us-west1-a"
Gunakan Google Cloud Storage (GCS) sebagai penyimpanan objek eksternal
- Buat bucket.
gcloud storage buckets create gs://milvus-testing-nonprod --project=milvus-testing-nonprod --default-storage-class=STANDARD --location=us-west1 --uniform-bucket-level-access
- Buat Kunci Akses Pengguna dan Kunci Rahasia, Anda harus masuk ke halaman penyimpanan proyek Anda. Di bilah sisi kiri dasbor, klik Google Cloud Storage, lalu Pengaturan. Pilih tab Interoperabilitas. Jika Anda belum mengaktifkannya, klik Akses yang Dapat Dioperasikan. Kemudian klik tombol BUAT KUNCI untuk membuat.
Kunci Akses GCP untuk akun pengguna Anda
- Tambahkan nilai-nilai.yaml
cluster:
enabled: true
service:
type: LoadBalancer
minio:
enabled: false
externalS3:
enabled: true
host: storage.googleapis.com
port: 443
rootPath: milvus/my-release
bucketName: milvus-testing-nonprod
cloudProvider: gcp
useSSL: true
accessKey: "<access-key>"
secretKey: "<secret-key>"
Menyebarkan Milvus
Sekarang, kluster Kubernetes sudah siap. Mari kita terapkan Milvus sekarang juga.
helm repo add milvus https://zilliztech.github.io/milvus-helm/
helm repo update
helm install -f values.yaml my-release milvus/milvus
Pada perintah sebelumnya, kita menambahkan repo peta Milvus Helm secara lokal dan memperbarui repo untuk mengambil peta terbaru. Kemudian kita menginstal sebuah instans Milvus dan menamainya dengan nama my-release.
Perhatikan nilai konfigurasi service.type
, yang mengindikasikan bahwa kita ingin mengekspos instans Milvus melalui penyeimbang beban Layer-4.
Jika Anda ingin mengekspos instans Milvus Anda melalui penyeimbang beban Layer-7, bacalah ini.
Verifikasi penerapan
Setelah semua pod berjalan, jalankan perintah berikut ini untuk mendapatkan alamat IP eksternal.
kubectl get services|grep my-release-milvus|grep LoadBalancer|awk '{print $4}'
Halo Milvus
Silakan merujuk ke Hello Milvus, ubah nilai host ke alamat IP eksternal, lalu jalankan kodenya.
Apa selanjutnya
Jika Anda ingin mempelajari cara menerapkan Milvus di cloud lain: