From 4ddc3428b3131e3f01954c72d5ffaaf5573bc398 Mon Sep 17 00:00:00 2001 From: yandongxiao Date: Wed, 27 Nov 2024 10:42:18 +0800 Subject: [PATCH] [BugFix] support to run fe-proxy under customize cluster domain instead of using default one: cluster.local Signed-off-by: yandongxiao --- .golangci.yml | 2 +- cmd/config/config.go | 9 +++++++++ cmd/main.go | 4 +++- .../charts/operator/templates/deployment.yaml | 3 +++ .../charts/kube-starrocks/charts/operator/values.yaml | 4 ++++ helm-charts/charts/kube-starrocks/values.yaml | 4 ++++ pkg/subcontrollers/feproxy/feproxy_configmap.go | 5 +++-- 7 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 cmd/config/config.go diff --git a/.golangci.yml b/.golangci.yml index c1e85e7a..5a59d7e8 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -35,7 +35,7 @@ linters-settings: - pattern: 'interface{}' replacement: 'any' goimports: - local-prefixes: github.com/StarRocks/starrocks-kubernetes-operator/pkg + local-prefixes: github.com/StarRocks/starrocks-kubernetes-operator gomnd: # don't include the "operation" and "assign" checks: diff --git a/cmd/config/config.go b/cmd/config/config.go new file mode 100644 index 00000000..d391e064 --- /dev/null +++ b/cmd/config/config.go @@ -0,0 +1,9 @@ +package config + +import "fmt" + +var DNSDomainSuffix string + +func GetServiceDomainSuffix() string { + return fmt.Sprintf("svc.%s", DNSDomainSuffix) +} diff --git a/cmd/main.go b/cmd/main.go index 14d97216..99c0311a 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -25,6 +25,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/healthz" "sigs.k8s.io/controller-runtime/pkg/log/zap" + "github.com/StarRocks/starrocks-kubernetes-operator/cmd/config" srapi "github.com/StarRocks/starrocks-kubernetes-operator/pkg/apis/starrocks/v1" "github.com/StarRocks/starrocks-kubernetes-operator/pkg/controllers" "github.com/StarRocks/starrocks-kubernetes-operator/pkg/k8sutils" @@ -45,6 +46,7 @@ func main() { "Enabling this will ensure there is only one active controller manager.") flag.StringVar(&_namespace, "namespace", "", "if specified, "+ "restricts the manager's cache to watch objects in the desired namespace. Defaults to all namespaces.") + flag.StringVar(&config.DNSDomainSuffix, "dns-domain-suffix", "cluster.local", "The suffix of the dns domain in k8s") // Set up logger. opts := zap.Options{} @@ -83,7 +85,7 @@ func main() { os.Exit(1) } - //+kubebuilder:scaffold:builder + // +kubebuilder:scaffold:builder if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil { logger.Error(err, "unable to set up health check") diff --git a/helm-charts/charts/kube-starrocks/charts/operator/templates/deployment.yaml b/helm-charts/charts/kube-starrocks/charts/operator/templates/deployment.yaml index e12c1398..aac918aa 100644 --- a/helm-charts/charts/kube-starrocks/charts/operator/templates/deployment.yaml +++ b/helm-charts/charts/kube-starrocks/charts/operator/templates/deployment.yaml @@ -40,6 +40,9 @@ spec: {{- if .Values.starrocksOperator.watchNamespace }} - --namespace={{ .Values.starrocksOperator.watchNamespace }} {{- end }} + {{- if .Values.starrocksOperator.dnsDomainSuffix }} + - --dns-domain-suffix={{ .Values.starrocksOperator.dnsDomainSuffix }} + {{- end }} env: - name: TZ value: {{ .Values.timeZone }} diff --git a/helm-charts/charts/kube-starrocks/charts/operator/values.yaml b/helm-charts/charts/kube-starrocks/charts/operator/values.yaml index 77839a6d..9c0457d9 100644 --- a/helm-charts/charts/kube-starrocks/charts/operator/values.yaml +++ b/helm-charts/charts/kube-starrocks/charts/operator/values.yaml @@ -97,3 +97,7 @@ starrocksOperator: - --zap-encoder=console # if you want open debug log, open this option # - --zap-log-level 4 + # Operator need to specify the FQDN in nginx.conf when it set up fe-proxy service. + # By default, Operator will use cluster.local as the dnsDomainSuffix. + # If you set up a kubernetes cluster with a different dnsDomainSuffix, you need to set this value. + dnsDomainSuffix: "" diff --git a/helm-charts/charts/kube-starrocks/values.yaml b/helm-charts/charts/kube-starrocks/values.yaml index 939dfa1d..56810c67 100644 --- a/helm-charts/charts/kube-starrocks/values.yaml +++ b/helm-charts/charts/kube-starrocks/values.yaml @@ -104,6 +104,10 @@ operator: - --zap-encoder=console # if you want open debug log, open this option # - --zap-log-level 4 + # Operator need to specify the FQDN in nginx.conf when it set up fe-proxy service. + # By default, Operator will use cluster.local as the dnsDomainSuffix. + # If you set up a kubernetes cluster with a different dnsDomainSuffix, you need to set this value. + dnsDomainSuffix: "" starrocks: # set the nameOverride values for creating the same resources with parent chart. diff --git a/pkg/subcontrollers/feproxy/feproxy_configmap.go b/pkg/subcontrollers/feproxy/feproxy_configmap.go index fc004b6b..e3bdd928 100644 --- a/pkg/subcontrollers/feproxy/feproxy_configmap.go +++ b/pkg/subcontrollers/feproxy/feproxy_configmap.go @@ -7,6 +7,7 @@ import ( corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + cmdconfig "github.com/StarRocks/starrocks-kubernetes-operator/cmd/config" srapi "github.com/StarRocks/starrocks-kubernetes-operator/pkg/apis/starrocks/v1" rutils "github.com/StarRocks/starrocks-kubernetes-operator/pkg/common/resource_utils" "github.com/StarRocks/starrocks-kubernetes-operator/pkg/k8sutils" @@ -27,11 +28,11 @@ func (controller *FeProxyController) SyncConfigMap(ctx context.Context, src *sra feSearchServiceName := service.SearchServiceName(src.Name, feSpec) feExternalServiceName := service.ExternalServiceName(src.Name, feSpec) - proxyPass := fmt.Sprintf("http://%s.%s.%s:%d", feExternalServiceName, src.GetNamespace(), "svc.cluster.local", httpPort) + proxyPass := fmt.Sprintf("http://%s.%s.%s:%d", feExternalServiceName, src.GetNamespace(), cmdconfig.GetServiceDomainSuffix(), httpPort) resolver := feProxySpec.Resolver if resolver == "" { - resolver = "kube-dns.kube-system.svc.cluster.local" + resolver = fmt.Sprintf("%s.%s", "kube-dns.kube-system", cmdconfig.GetServiceDomainSuffix()) } or := metav1.NewControllerRef(src, src.GroupVersionKind())