zilliztech / milvus-operator

The Kubernetes Operator of Milvus.
https://milvus.io
Apache License 2.0
53 stars 25 forks source link
milvus operator vector-database

Milvus Operator

CI Pipeline codecov Go Reference

license

ATTENTIONS: THE MAIN BRANCH MAY BE IN AN UNSTABLE OR EVEN BROKEN STATE DURING DEVELOPMENT.

Overview

Milvus is a cloud-native, open-source vector database built to manage embedding vectors generated by machine learning models and neural networks. It extends the capabilities of best-in-class approximate nearest neighbor (ANN) search libraries (e.g. Faiss, NMSLIB, Annoy) and features on-demand scalability, and high availability.

The Milvus Operator provides an easy and solid solution to deploy and manage a full Milvus service stack including both the milvus components and its relevant dependencies such as etcd, pulsar and minio to the target Kubernetes clusters in a scalable and high-available way. The Milvus Operator defines a Milvus custom resources on top of Kubernetes Custom Resources. The Kubernetes API can then be used in a declarative way to manage Milvus deployment stack and ensure its scalability and high-availability operation.

Milvus Operator VS Helm

In general, Milvus Operator is recommanded for production. Helm is recommanded for beginners.

Milvus Operator provides more features for production. But you need to install it in your kubernetes before you start your first Milvus instance. If you are new to Milvus and Kubernetes. Helm is easier to use and you can start your first Milvus instance in minutes.

For more details, please check the table below:

Advantages Milvus Operator Milvus Helm
Recommended for Beginners
Quick Start
Recommended for Production
Better Managed Rolling Upgrade
Dynamic Configuration Reload
Health Check Metrics
Diagnose Message When Unhealthy
Quick Suspend Running Instance
Cleanup Resources after Deletion

Documentations

Getting started

Deploy milvus operator

Install or upgrade to latest version with helm:

helm repo add milvus-operator https://zilliztech.github.io/milvus-operator/
helm repo update milvus-operator
helm -n milvus-operator upgrade --install --create-namespace milvus-operator milvus-operator/milvus-operator

Or with kubectl & raw manifests:

kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/v1.1.2/deploy/manifests/deployment.yaml

For more infomation Check Installation Instructions

Create milvus demo instance

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

Note: The demo instance starts a standalone milvus & its dependencies with the least resources requests. It is not suitable for production environment. For more deployment examples please check https://github.com/zilliztech/milvus-operator/blob/main/config/samples

Versioning

Versions of the underlying components are listed below:

Components Milvus Pulsar / Kafka Etcd MinIO
Versions v2.4.15 [1] 2.9.5[2] / 3.1.0 3.5.14 RELEASE.2023-03-20T20-16-18Z

[1] Version of milvus is the default version we will use, you can set it to other version. The Compatibility with milvus releases is showed below.

[2] pulsar of 3.x is also supported. check this sample for more details.

Compatibility With Milvus Releases

Milvus Versions <=v2.0.0-rc8 v2.0.0-pre-ga >=v2.0.0
Compatibility

Compatibility With Milvus-Operator Earlier Releases

Milvus Operator Versions <0.4.0 >=0.4.0
Compatibility

Install / upgrade milvus-operator of a specific version

Use helm:

helm upgrade --install milvus-operator \
  -n milvus-operator --create-namespace \
  https://github.com/zilliztech/milvus-operator/releases/download/v1.1.2/milvus-operator-1.1.2.tgz

Or use kubectl & raw manifests:

kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/v1.1.2/deploy/manifests/deployment.yaml