From 8e2aa2e166258088635c0da3d43e01b2655d70d5 Mon Sep 17 00:00:00 2001 From: Dayuan Date: Wed, 6 Sep 2023 15:43:50 +0800 Subject: [PATCH] fix: add a kusion-control label in svc labels and allow empty ports in a Service --- .../generator/workload/network/ports_generator.go | 9 +++------ .../generator/workload/network/ports_generator_test.go | 3 ++- .../generator/workload/service_generator_test.go | 2 ++ 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pkg/generator/appconfiguration/generator/workload/network/ports_generator.go b/pkg/generator/appconfiguration/generator/workload/network/ports_generator.go index 4da20752..fe61925a 100644 --- a/pkg/generator/appconfiguration/generator/workload/network/ports_generator.go +++ b/pkg/generator/appconfiguration/generator/workload/network/ports_generator.go @@ -19,9 +19,10 @@ const ( suffixPublic = "public" suffixPrivate = "private" - // aliyun SLB annotations, ref: https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/add-annotations-to-the-yaml-file-of-a-service-to-configure-clb-instances?spm=a2c4g.11186623.0.0.59e26219ESUbqe + // aliyun SLB annotations, ref: https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/add-annotations-to-the-yaml-file-of-a-service-to-configure-clb-instances aliyunLBSpec = "service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec" aliyunSLBS1Small = "slb.s1.small" + kusionControl = "kusionstack.io/control" ) var ( @@ -29,7 +30,6 @@ var ( ErrEmptyProjectName = errors.New("project name must not be empty") ErrEmptyStackName = errors.New("stack name must not be empty") ErrEmptySelectors = errors.New("selectors must not be empty") - ErrEmptyPorts = errors.New("ports must not be empty") ErrInvalidPort = errors.New("port must be between 1 and 65535") ErrInvalidTargetPort = errors.New("targetPort must be between 1 and 65535 if exist") ErrInvalidProtocol = errors.New("protocol must be TCP or UDP") @@ -163,16 +163,13 @@ func (g *portsGenerator) generateK8sSvc(public bool, ports []network.Port) *v1.S // only support Aliyun SLB for now, and set SLB spec by default. svc.Annotations[aliyunLBSpec] = aliyunSLBS1Small + svc.Labels[kusionControl] = "true" } return svc } func validatePorts(ports []network.Port) error { - if len(ports) == 0 { - return ErrEmptyPorts - } - portProtocolRecord := make(map[string]struct{}) for _, port := range ports { if err := validatePort(&port); err != nil { diff --git a/pkg/generator/appconfiguration/generator/workload/network/ports_generator_test.go b/pkg/generator/appconfiguration/generator/workload/network/ports_generator_test.go index 23e2bd14..c126df81 100644 --- a/pkg/generator/appconfiguration/generator/workload/network/ports_generator_test.go +++ b/pkg/generator/appconfiguration/generator/workload/network/ports_generator_test.go @@ -175,7 +175,8 @@ func TestPortsGenerator_Generate(t *testing.T) { Name: "testProject-testStack-testApp-public", Namespace: "testProject", Labels: map[string]string{ - "test-l-key": "test-l-value", + "test-l-key": "test-l-value", + kusionControl: "true", }, Annotations: map[string]string{ "test-a-key": "test-a-value", diff --git a/pkg/generator/appconfiguration/generator/workload/service_generator_test.go b/pkg/generator/appconfiguration/generator/workload/service_generator_test.go index af6b865d..43925d5e 100644 --- a/pkg/generator/appconfiguration/generator/workload/service_generator_test.go +++ b/pkg/generator/appconfiguration/generator/workload/service_generator_test.go @@ -5,6 +5,7 @@ import ( "github.com/stretchr/testify/require" "gopkg.in/yaml.v3" + "kusionstack.io/kusion/pkg/models" "kusionstack.io/kusion/pkg/models/appconfiguration/workload" "kusionstack.io/kusion/pkg/models/appconfiguration/workload/container" @@ -31,6 +32,7 @@ metadata: labels: app.kubernetes.io/name: foo app.kubernetes.io/part-of: default + kusionstack.io/control: "true" name: default-dev-foo-public namespace: default spec: