From f3e635a1d46d855fbcd1a9a67e11ec7830137a40 Mon Sep 17 00:00:00 2001 From: runkecheng <1131648942@qq.com> Date: Sat, 9 Oct 2021 10:11:19 +0800 Subject: [PATCH 1/2] cluster: Support extranet access service. #251 --- cluster/syncer/follower_service.go | 5 ++++- cluster/syncer/leader_service.go | 5 ++++- cluster/syncer/metrics_service.go | 5 ++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/cluster/syncer/follower_service.go b/cluster/syncer/follower_service.go index fa77b84f..03339593 100644 --- a/cluster/syncer/follower_service.go +++ b/cluster/syncer/follower_service.go @@ -41,7 +41,10 @@ func NewFollowerSVCSyncer(cli client.Client, c *cluster.Cluster) syncer.Interfac }, } return syncer.NewObjectSyncer("FollowerSVC", c.Unwrap(), service, cli, func() error { - service.Spec.Type = "ClusterIP" + // Allows to modify the service access method, the default is ClusterIP. + if service.Spec.Type == "" { + service.Spec.Type = "ClusterIP" + } service.Spec.Selector = c.GetSelectorLabels() service.Spec.Selector["role"] = "follower" service.Spec.Selector["healthy"] = "yes" diff --git a/cluster/syncer/leader_service.go b/cluster/syncer/leader_service.go index 31abb73c..3260f8e0 100644 --- a/cluster/syncer/leader_service.go +++ b/cluster/syncer/leader_service.go @@ -41,7 +41,10 @@ func NewLeaderSVCSyncer(cli client.Client, c *cluster.Cluster) syncer.Interface }, } return syncer.NewObjectSyncer("LeaderSVC", c.Unwrap(), service, cli, func() error { - service.Spec.Type = "ClusterIP" + // Allows to modify the service access method, the default is ClusterIP. + if service.Spec.Type == "" { + service.Spec.Type = "ClusterIP" + } service.Spec.Selector = c.GetSelectorLabels() service.Spec.Selector["role"] = "leader" diff --git a/cluster/syncer/metrics_service.go b/cluster/syncer/metrics_service.go index 466de1f5..110c2d3a 100644 --- a/cluster/syncer/metrics_service.go +++ b/cluster/syncer/metrics_service.go @@ -41,7 +41,10 @@ func NewMetricsSVCSyncer(cli client.Client, c *cluster.Cluster) syncer.Interface }, } return syncer.NewObjectSyncer("MetricsSVC", c.Unwrap(), service, cli, func() error { - service.Spec.Type = "ClusterIP" + // Allows to modify the service access method, the default is ClusterIP. + if service.Spec.Type == "" { + service.Spec.Type = "ClusterIP" + } service.Spec.Selector = c.GetSelectorLabels() if len(service.Spec.Ports) != 1 { From 101a3056c74c325807ad4739adf24b6a81155fe3 Mon Sep 17 00:00:00 2001 From: runkecheng <1131648942@qq.com> Date: Sat, 9 Oct 2021 10:16:05 +0800 Subject: [PATCH 2/2] cluster: Add unique label to different services. #254 --- cluster/syncer/follower_service.go | 4 +++- cluster/syncer/leader_service.go | 4 +++- cluster/syncer/metrics_service.go | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/cluster/syncer/follower_service.go b/cluster/syncer/follower_service.go index 03339593..c541013a 100644 --- a/cluster/syncer/follower_service.go +++ b/cluster/syncer/follower_service.go @@ -29,6 +29,8 @@ import ( // NewFollowerSVCSyncer returns follower service syncer. func NewFollowerSVCSyncer(cli client.Client, c *cluster.Cluster) syncer.Interface { + labels := c.GetLabels() + labels["mysql.radondb.com/service-type"] = string(utils.FollowerService) service := &corev1.Service{ TypeMeta: metav1.TypeMeta{ APIVersion: "v1", @@ -37,7 +39,7 @@ func NewFollowerSVCSyncer(cli client.Client, c *cluster.Cluster) syncer.Interfac ObjectMeta: metav1.ObjectMeta{ Name: c.GetNameForResource(utils.FollowerService), Namespace: c.Namespace, - Labels: c.GetLabels(), + Labels: labels, }, } return syncer.NewObjectSyncer("FollowerSVC", c.Unwrap(), service, cli, func() error { diff --git a/cluster/syncer/leader_service.go b/cluster/syncer/leader_service.go index 3260f8e0..228f7a9a 100644 --- a/cluster/syncer/leader_service.go +++ b/cluster/syncer/leader_service.go @@ -29,6 +29,8 @@ import ( // NewLeaderSVCSyncer returns leader service syncer. func NewLeaderSVCSyncer(cli client.Client, c *cluster.Cluster) syncer.Interface { + labels := c.GetLabels() + labels["mysql.radondb.com/service-type"] = string(utils.LeaderService) service := &corev1.Service{ TypeMeta: metav1.TypeMeta{ APIVersion: "v1", @@ -37,7 +39,7 @@ func NewLeaderSVCSyncer(cli client.Client, c *cluster.Cluster) syncer.Interface ObjectMeta: metav1.ObjectMeta{ Name: c.GetNameForResource(utils.LeaderService), Namespace: c.Namespace, - Labels: c.GetLabels(), + Labels: labels, }, } return syncer.NewObjectSyncer("LeaderSVC", c.Unwrap(), service, cli, func() error { diff --git a/cluster/syncer/metrics_service.go b/cluster/syncer/metrics_service.go index 110c2d3a..d6223047 100644 --- a/cluster/syncer/metrics_service.go +++ b/cluster/syncer/metrics_service.go @@ -29,6 +29,8 @@ import ( // NewMetricsSVCSyncer returns metrics service syncer. func NewMetricsSVCSyncer(cli client.Client, c *cluster.Cluster) syncer.Interface { + labels := c.GetLabels() + labels["mysql.radondb.com/service-type"] = string(utils.MetricsService) service := &corev1.Service{ TypeMeta: metav1.TypeMeta{ APIVersion: "v1", @@ -37,7 +39,7 @@ func NewMetricsSVCSyncer(cli client.Client, c *cluster.Cluster) syncer.Interface ObjectMeta: metav1.ObjectMeta{ Name: c.GetNameForResource(utils.MetricsService), Namespace: c.Namespace, - Labels: c.GetLabels(), + Labels: labels, }, } return syncer.NewObjectSyncer("MetricsSVC", c.Unwrap(), service, cli, func() error {