Skip to content

Commit

Permalink
in cluster etcd use headless svc by default (#160)
Browse files Browse the repository at this point in the history
Signed-off-by: haorenfsa <[email protected]>
  • Loading branch information
haorenfsa authored Aug 8, 2024
1 parent 978972e commit 1bb1db4
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 8 deletions.
26 changes: 22 additions & 4 deletions apis/milvus.io/v1beta1/milvus_webhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -354,18 +354,36 @@ func (r *Milvus) DefaultDependencies() {

func (r *Milvus) defaultEtcd() {
if !r.Spec.Dep.Etcd.External {
r.Spec.Dep.Etcd.Endpoints = []string{fmt.Sprintf("%s-etcd.%s:2379", r.Name, r.Namespace)}
if r.Spec.Dep.Etcd.InCluster == nil {
r.Spec.Dep.Etcd.InCluster = &InClusterConfig{}
}
if r.Spec.Dep.Etcd.InCluster.Values.Data == nil {
r.Spec.Dep.Etcd.InCluster.Values.Data = map[string]interface{}{}
}
if r.Spec.Mode == MilvusModeStandalone {
if _, exists := r.Spec.Dep.Etcd.InCluster.Values.Data["replicaCount"]; !exists {
r.Spec.Dep.Etcd.InCluster.Values.Data["replicaCount"] = 1
etcdReplicaCountRaw, etcdReplicaCountExists := r.Spec.Dep.Etcd.InCluster.Values.Data["replicaCount"]
etcdReplicaCountInt64, etcdReplicaCountValid := etcdReplicaCountRaw.(int64)
var etcdReplicaCount int
if !etcdReplicaCountExists || !etcdReplicaCountValid {
if r.Spec.Mode == MilvusModeStandalone {
etcdReplicaCount = 1
} else {
etcdReplicaCount = 3
}
r.Spec.Dep.Etcd.InCluster.Values.Data["replicaCount"] = int64(etcdReplicaCount)
} else {
etcdReplicaCount = int(etcdReplicaCountInt64)
}
if len(r.Spec.Dep.Etcd.Endpoints) == 0 &&
etcdReplicaCount > 0 {
headlessServiceName := fmt.Sprintf("%s-etcd-headless", r.Name)
for i := 0; i < etcdReplicaCount; i++ {
podName := fmt.Sprintf("%s-etcd-%d", r.Name, i)
r.Spec.Dep.Etcd.Endpoints = append(r.Spec.Dep.Etcd.Endpoints,
fmt.Sprintf("%s.%s.%s:2379", podName, headlessServiceName, r.Namespace),
)
}
}

r.defaultValuesByDependency(values.DependencyKindEtcd)
if r.Spec.Dep.Etcd.InCluster.DeletionPolicy == "" {
r.Spec.Dep.Etcd.InCluster.DeletionPolicy = DeletionPolicyRetain
Expand Down
20 changes: 16 additions & 4 deletions apis/milvus.io/v1beta1/milvus_webhook_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"github.com/stretchr/testify/assert"
appsv1 "k8s.io/api/apps/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/yaml"
)

func TestMilvus_Default_NotExternal(t *testing.T) {
Expand All @@ -28,8 +29,7 @@ func TestMilvus_Default_NotExternal(t *testing.T) {
}

etcdStandaloneDefaultInClusterConfig := defaultInClusterConfig.DeepCopy()
etcdStandaloneDefaultInClusterConfig.Values.Data["replicaCount"] = 1

etcdStandaloneDefaultInClusterConfig.Values.Data["replicaCount"] = int64(1)
minioStandAloneDefaultInClusterConfig := defaultInClusterConfig.DeepCopy()
minioStandAloneDefaultInClusterConfig.Values.Data["mode"] = "standalone"

Expand All @@ -39,7 +39,7 @@ func TestMilvus_Default_NotExternal(t *testing.T) {
Mode: MilvusModeStandalone,
Dep: MilvusDependencies{
Etcd: MilvusEtcd{
Endpoints: []string{"mc-etcd.default:2379"},
Endpoints: []string{"mc-etcd-0.mc-etcd-headless.default:2379"},
InCluster: etcdStandaloneDefaultInClusterConfig,
},
MsgStreamType: MsgStreamTypeRocksMQ,
Expand Down Expand Up @@ -94,7 +94,12 @@ func TestMilvus_Default_NotExternal(t *testing.T) {
Endpoint: "mc-pulsar-proxy.default:6650",
InCluster: defaultInClusterConfig,
}
delete(clusterDefault.Dep.Etcd.InCluster.Values.Data, "replicaCount")
clusterDefault.Dep.Etcd.Endpoints = []string{
"mc-etcd-0.mc-etcd-headless.default:2379",
"mc-etcd-1.mc-etcd-headless.default:2379",
"mc-etcd-2.mc-etcd-headless.default:2379",
}
clusterDefault.Dep.Etcd.InCluster.Values.Data["replicaCount"] = int64(3)
delete(clusterDefault.Dep.Storage.InCluster.Values.Data, "mode")
clusterDefault.Com = MilvusComponents{
ImageUpdateMode: ImageUpdateModeRollingUpgrade,
Expand Down Expand Up @@ -139,8 +144,15 @@ func TestMilvus_Default_NotExternal(t *testing.T) {
newReplica := int32(2)
mc.Spec.Com.RootCoord = &MilvusRootCoord{}
mc.Spec.Com.RootCoord.Replicas = &newReplica
mc.Spec.Dep.Etcd.InCluster = &InClusterConfig{}
mc.Spec.Dep.Etcd.InCluster.Values.Data = map[string]interface{}{}
err := yaml.Unmarshal([]byte(`
replicaCount: 1
`), &mc.Spec.Dep.Etcd.InCluster.Values.Data)
assert.NoError(t, err)
mc.Default()
assert.Equal(t, newReplica, *mc.Spec.Com.RootCoord.Replicas)
assert.Equal(t, int64(1), mc.Spec.Dep.Etcd.InCluster.Values.Data["replicaCount"])
})

}
Expand Down

0 comments on commit 1bb1db4

Please sign in to comment.