From d763c08ca7a38a930533114377c51181012c6c6f Mon Sep 17 00:00:00 2001 From: Noor Malik Date: Tue, 24 Jun 2025 13:42:15 +0200 Subject: [PATCH 1/4] add CLI flag to disable per-stack hostnames --- cmd/stackset-controller/main.go | 3 +++ controller/stack_resources.go | 4 ++-- controller/stack_resources_test.go | 2 +- controller/stackset.go | 1 + pkg/core/stack_resources.go | 14 +++++++++----- pkg/core/stack_resources_test.go | 6 +++--- 6 files changed, 19 insertions(+), 11 deletions(-) diff --git a/cmd/stackset-controller/main.go b/cmd/stackset-controller/main.go index 4270c11b..40c5f5f4 100644 --- a/cmd/stackset-controller/main.go +++ b/cmd/stackset-controller/main.go @@ -47,6 +47,7 @@ var ( ConfigMapSupportEnabled bool SecretSupportEnabled bool PCSSupportEnabled bool + PerStackHostnameEnabled bool } ) @@ -70,6 +71,7 @@ func main() { kingpin.Flag("enable-configmap-support", "Enable support for ConfigMaps on StackSets.").Default("false").BoolVar(&config.ConfigMapSupportEnabled) kingpin.Flag("enable-secret-support", "Enable support for Secrets on StackSets.").Default("false").BoolVar(&config.SecretSupportEnabled) kingpin.Flag("enable-pcs-support", "Enable support for PlatformCredentialsSet on StackSets.").Default("false").BoolVar(&config.PCSSupportEnabled) + kingpin.Flag("enable-per-stack-hostname", "Enable support for per-stack hostnames.").Default("false").BoolVar(&config.PerStackHostnameEnabled) kingpin.Parse() if config.Debug { @@ -91,6 +93,7 @@ func main() { ConfigMapSupportEnabled: config.ConfigMapSupportEnabled, SecretSupportEnabled: config.SecretSupportEnabled, PcsSupportEnabled: config.PCSSupportEnabled, + PerStackHostnameEnabled: config.PerStackHostnameEnabled, } ctx, cancel := context.WithCancel(context.Background()) diff --git a/controller/stack_resources.go b/controller/stack_resources.go index 8e53fb14..354fa975 100644 --- a/controller/stack_resources.go +++ b/controller/stack_resources.go @@ -188,8 +188,8 @@ func (c *StackSetController) ReconcileStackService(ctx context.Context, stack *z return nil } -func (c *StackSetController) ReconcileStackIngress(ctx context.Context, stack *zv1.Stack, existing *networking.Ingress, generateUpdated func() (*networking.Ingress, error)) error { - ingress, err := generateUpdated() +func (c *StackSetController) ReconcileStackIngress(ctx context.Context, stack *zv1.Stack, existing *networking.Ingress, generateUpdated func(bool) (*networking.Ingress, error)) error { + ingress, err := generateUpdated(c.config.PerStackHostnameEnabled) if err != nil { return err } diff --git a/controller/stack_resources_test.go b/controller/stack_resources_test.go index 68c09568..a77db62c 100644 --- a/controller/stack_resources_test.go +++ b/controller/stack_resources_test.go @@ -788,7 +788,7 @@ func TestReconcileStackIngress(t *testing.T) { require.NoError(t, err) } - err = env.controller.ReconcileStackIngress(context.Background(), &tc.stack, tc.existing, func() (*networking.Ingress, error) { + err = env.controller.ReconcileStackIngress(context.Background(), &tc.stack, tc.existing, func(bool) (*networking.Ingress, error) { return tc.updated, nil }) require.NoError(t, err) diff --git a/controller/stackset.go b/controller/stackset.go index ccb664ad..6d640312 100644 --- a/controller/stackset.go +++ b/controller/stackset.go @@ -77,6 +77,7 @@ type StackSetConfig struct { ConfigMapSupportEnabled bool SecretSupportEnabled bool PcsSupportEnabled bool + PerStackHostnameEnabled bool } type stacksetEvent struct { diff --git a/pkg/core/stack_resources.go b/pkg/core/stack_resources.go index 61218941..9edaa84f 100644 --- a/pkg/core/stack_resources.go +++ b/pkg/core/stack_resources.go @@ -342,15 +342,15 @@ func (sc *StackContainer) stackHostnames( return result.List(), nil } -func (sc *StackContainer) GenerateIngress() (*networking.Ingress, error) { - return sc.generateIngress(false) +func (sc *StackContainer) GenerateIngress(perStackHostnameEnabled bool) (*networking.Ingress, error) { + return sc.generateIngress(false, perStackHostnameEnabled) } -func (sc *StackContainer) GenerateIngressSegment() ( +func (sc *StackContainer) GenerateIngressSegment(perStackHostnameEnabled bool) ( *networking.Ingress, error, ) { - res, err := sc.generateIngress(true) + res, err := sc.generateIngress(true, perStackHostnameEnabled) if err != nil || res == nil { return res, err } @@ -379,11 +379,15 @@ func (sc *StackContainer) GenerateIngressSegment() ( return res, nil } -func (sc *StackContainer) generateIngress(segment bool) ( +func (sc *StackContainer) generateIngress(segment bool, perStackHostnameEnabled bool) ( *networking.Ingress, error, ) { + // If Per-stack Hostnames are disabled, no need to generate per stack ingresses + if !perStackHostnameEnabled { + return nil, nil + } if !sc.HasBackendPort() || sc.ingressSpec == nil { return nil, nil } diff --git a/pkg/core/stack_resources_test.go b/pkg/core/stack_resources_test.go index 80d2bbba..f2d22eb0 100644 --- a/pkg/core/stack_resources_test.go +++ b/pkg/core/stack_resources_test.go @@ -322,7 +322,7 @@ func TestStackGenerateIngress(t *testing.T) { backendPort: &intStrBackendPort, clusterDomains: []string{"example.org"}, } - ingress, err := c.GenerateIngress() + ingress, err := c.GenerateIngress(true) if tc.expectError { require.Error(t, err) @@ -461,7 +461,7 @@ func TestStackGenerateIngressSegment(t *testing.T) { segmentUpperLimit: tc.upperLimit, backendPort: &backendPort, } - ingress, err := c.GenerateIngressSegment() + ingress, err := c.GenerateIngressSegment(true) if (err != nil) != tc.expectError { t.Errorf("expected error: %t , got %v", tc.expectError, err) @@ -570,7 +570,7 @@ func TestGenerateIngressSegmentWithSyncAnnotations(t *testing.T) { ingressAnnotationsToSync: tc.ingresssAnnotationsToSync, syncAnnotationsInIngress: tc.syncAnnotationsInIngress, } - res, _ := c.GenerateIngressSegment() + res, _ := c.GenerateIngressSegment(true) delete( res.Annotations, From 19a2a55b50af8f8e77b9c38af98c2fa5b0abf0b0 Mon Sep 17 00:00:00 2001 From: Noor Malik Date: Wed, 25 Jun 2025 16:08:05 +0200 Subject: [PATCH 2/4] enable per-stack hostnames by default --- cmd/stackset-controller/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/stackset-controller/main.go b/cmd/stackset-controller/main.go index 40c5f5f4..bc87c7d8 100644 --- a/cmd/stackset-controller/main.go +++ b/cmd/stackset-controller/main.go @@ -71,7 +71,7 @@ func main() { kingpin.Flag("enable-configmap-support", "Enable support for ConfigMaps on StackSets.").Default("false").BoolVar(&config.ConfigMapSupportEnabled) kingpin.Flag("enable-secret-support", "Enable support for Secrets on StackSets.").Default("false").BoolVar(&config.SecretSupportEnabled) kingpin.Flag("enable-pcs-support", "Enable support for PlatformCredentialsSet on StackSets.").Default("false").BoolVar(&config.PCSSupportEnabled) - kingpin.Flag("enable-per-stack-hostname", "Enable support for per-stack hostnames.").Default("false").BoolVar(&config.PerStackHostnameEnabled) + kingpin.Flag("enable-per-stack-hostname", "Enable support for per-stack hostnames.").Default("true").BoolVar(&config.PerStackHostnameEnabled) kingpin.Parse() if config.Debug { From b25f58248141b80f4172aac4c91500ccbb4bbd0f Mon Sep 17 00:00:00 2001 From: Noor Malik Date: Wed, 25 Jun 2025 17:01:06 +0200 Subject: [PATCH 3/4] Revert "enable per-stack hostnames by default" This reverts commit 19a2a55b50af8f8e77b9c38af98c2fa5b0abf0b0. --- cmd/stackset-controller/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/stackset-controller/main.go b/cmd/stackset-controller/main.go index bc87c7d8..40c5f5f4 100644 --- a/cmd/stackset-controller/main.go +++ b/cmd/stackset-controller/main.go @@ -71,7 +71,7 @@ func main() { kingpin.Flag("enable-configmap-support", "Enable support for ConfigMaps on StackSets.").Default("false").BoolVar(&config.ConfigMapSupportEnabled) kingpin.Flag("enable-secret-support", "Enable support for Secrets on StackSets.").Default("false").BoolVar(&config.SecretSupportEnabled) kingpin.Flag("enable-pcs-support", "Enable support for PlatformCredentialsSet on StackSets.").Default("false").BoolVar(&config.PCSSupportEnabled) - kingpin.Flag("enable-per-stack-hostname", "Enable support for per-stack hostnames.").Default("true").BoolVar(&config.PerStackHostnameEnabled) + kingpin.Flag("enable-per-stack-hostname", "Enable support for per-stack hostnames.").Default("false").BoolVar(&config.PerStackHostnameEnabled) kingpin.Parse() if config.Debug { From abdfa74a4be47b2911d24bb8bc1192c42bba33de Mon Sep 17 00:00:00 2001 From: Noor Malik Date: Thu, 26 Jun 2025 15:21:32 +0200 Subject: [PATCH 4/4] fix logic in segment ingresses --- pkg/core/stack_resources.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/core/stack_resources.go b/pkg/core/stack_resources.go index 9edaa84f..1910cf19 100644 --- a/pkg/core/stack_resources.go +++ b/pkg/core/stack_resources.go @@ -384,8 +384,8 @@ func (sc *StackContainer) generateIngress(segment bool, perStackHostnameEnabled error, ) { - // If Per-stack Hostnames are disabled, no need to generate per stack ingresses - if !perStackHostnameEnabled { + // If Per-stack Hostnames and segments are disabled, no need to generate per stack ingresses + if !perStackHostnameEnabled && !segment { return nil, nil } if !sc.HasBackendPort() || sc.ingressSpec == nil {