Skip to content

Commit 59d4b9d

Browse files
committed
(feat) allow configurable namespace for Sveltos
Historically, the Sveltos namespace has been hardcoded/fixed to `projectsveltos`. This PR is part of series that will remove this limitation.
1 parent 4c027ff commit 59d4b9d

30 files changed

Lines changed: 250 additions & 134 deletions

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ OS ?= $(shell uname -s)
2727
OS := $(shell echo $(OS) | tr '[:upper:]' '[:lower:]')
2828
K8S_LATEST_VER ?= $(shell curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)
2929
export CONTROLLER_IMG ?= $(REGISTRY)/$(IMAGE_NAME)
30-
TAG ?= v1.10.0
30+
TAG ?= main
3131

3232
.PHONY: all
3333
all: build

cmd/main.go

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ const (
110110
defaulReportMode = int(controllers.CollectFromManagementCluster)
111111
mebibytes_bytes = 1 << 20
112112
gibibytes_per_bytes = 1 << 30
113+
sveltosNamespace = "NAMESPACE"
113114
)
114115

115116
// Add RBAC for the authorized diagnostics endpoint.
@@ -124,15 +125,17 @@ func main() {
124125

125126
setupLogging()
126127

128+
sveltosNamespace := os.Getenv(sveltosNamespace)
129+
if sveltosNamespace == "" {
130+
setupLog.V(logs.LogInfo).Error(nil, "Missing required environment variables NAMESPACE")
131+
os.Exit(1)
132+
}
133+
127134
reportMode = controllers.ReportMode(tmpReportMode)
128135
ctrl.SetLogger(klog.Background())
129136
ctrlOptions := getCtrlOptions(scheme)
130137

131-
restConfig := ctrl.GetConfigOrDie()
132-
restConfig.QPS = restConfigQPS
133-
restConfig.Burst = restConfigBurst
134-
restConfig.UserAgent = remote.DefaultClusterAPIUserAgent("addon-controller")
135-
restConfig.WarningHandler = apiwarnings.DefaultHandler(klog.Background().WithName("API Server Warning"))
138+
restConfig := getRestConfig()
136139

137140
ctx := ctrl.SetupSignalHandler()
138141

@@ -143,6 +146,7 @@ func main() {
143146
controllers.SetCAPIOnboardAnnotation(capiOnboardAnnotation)
144147
controllers.SetDriftDetectionRegistry(registry)
145148
controllers.SetAgentInMgmtCluster(agentInMgmtCluster)
149+
controllers.SetSveltosNamespace(sveltosNamespace)
146150

147151
if isInitContainer() {
148152
runInitContainerWork(ctx, restConfig, scheme)
@@ -175,7 +179,7 @@ func main() {
175179
controllers.NewLicenseManager()
176180

177181
if shardKey == "" && !disableTelemetry {
178-
err = telemetry.StartCollecting(ctx, mgr.GetConfig(), mgr.GetClient(), version)
182+
err = telemetry.StartCollecting(ctx, mgr.GetConfig(), mgr.GetClient(), sveltosNamespace, version)
179183
if err != nil {
180184
setupLog.Error(err, "failed starting telemetry client")
181185
}
@@ -256,10 +260,10 @@ func initFlags(fs *pflag.FlagSet) {
256260
"Bind address to expose the pprof profiler (e.g. localhost:6060)")
257261

258262
fs.StringVar(&driftDetectionConfigMap, "drift-detection-config", "",
259-
"The name of the ConfigMap in the projectsveltos namespace containing the drift-detection-manager configuration")
263+
"The name of the ConfigMap in the namespace where projectsveltos is deployed containing the drift-detection-manager configuration")
260264

261265
fs.StringVar(&luaConfigMap, "lua-methods", "",
262-
"The name of the ConfigMap in the projectsveltos namespace containing lua utilities to be loaded."+
266+
"The name of the ConfigMap in the namespace where projectsveltos is deployed containing lua utilities to be loaded."+
263267
"Changing the content of the ConfigMap does not cause Sveltos to redeploy.")
264268

265269
fs.StringVar(&registry, "registry", "",
@@ -797,3 +801,12 @@ func setupLogging() {
797801

798802
ctrl.SetLogger(klog.Background())
799803
}
804+
805+
func getRestConfig() *rest.Config {
806+
restConfig := ctrl.GetConfigOrDie()
807+
restConfig.QPS = restConfigQPS
808+
restConfig.Burst = restConfigBurst
809+
restConfig.UserAgent = remote.DefaultClusterAPIUserAgent("addon-controller")
810+
restConfig.WarningHandler = apiwarnings.DefaultHandler(klog.Background().WithName("API Server Warning"))
811+
return restConfig
812+
}

config/default/manager_auth_proxy_patch.yaml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,19 @@ spec:
1414
- "--report-mode=0"
1515
- --shard-key=
1616
- "--agent-in-mgmt-cluster=false"
17+
env:
18+
- name: GOMEMLIMIT
19+
valueFrom:
20+
resourceFieldRef:
21+
resource: limits.memory
22+
- name: GOMAXPROCS
23+
valueFrom:
24+
resourceFieldRef:
25+
resource: limits.cpu
26+
- name: NAMESPACE
27+
valueFrom:
28+
fieldRef:
29+
fieldPath: metadata.namespace
1730
containers:
1831
- name: controller
1932
args:
@@ -22,7 +35,7 @@ spec:
2235
- --shard-key=
2336
- --capi-onboard-annotation=
2437
- "--v=5"
25-
- "--version=v1.10.0"
38+
- "--version=main"
2639
- "--agent-in-mgmt-cluster=false"
2740
env:
2841
- name: GOMEMLIMIT
@@ -33,3 +46,7 @@ spec:
3346
valueFrom:
3447
resourceFieldRef:
3548
resource: limits.cpu
49+
- name: NAMESPACE
50+
valueFrom:
51+
fieldRef:
52+
fieldPath: metadata.namespace

config/default/manager_image_patch.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ spec:
77
template:
88
spec:
99
initContainers:
10-
- image: docker.io/projectsveltos/addon-controller:v1.10.0
10+
- image: docker.io/projectsveltos/addon-controller:main
1111
name: initialization
1212
containers:
13-
- image: docker.io/projectsveltos/addon-controller:v1.10.0
13+
- image: docker.io/projectsveltos/addon-controller:main
1414
name: controller

controllers/clusterpromotion_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1319,7 +1319,7 @@ func (r *ClusterPromotionReconciler) verifyStageEligibility(ctx context.Context,
13191319
return false, err
13201320
}
13211321

1322-
result := license.VerifyLicenseSecret(ctx, r.Client, publicKey, logger)
1322+
result := license.VerifyLicenseSecret(ctx, r.Client, getSveltosNamespace(), publicKey, logger)
13231323
if result.Message != "" {
13241324
logger.V(logs.LogDebug).Info(result.Message)
13251325
}

controllers/clustersummary_controller.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ func (r *ClusterSummaryReconciler) postFinalizerCleanup(ctx context.Context,
414414

415415
cs := clusterSummaryScope.ClusterSummary
416416
if err := sharding.UnregisterClusterShard(ctx, r.Client, libsveltosv1beta1.ComponentAddonManager,
417-
string(libsveltosv1beta1.FeatureHelm), cs.Spec.ClusterNamespace, cs.Spec.ClusterName,
417+
getSveltosNamespace(), string(libsveltosv1beta1.FeatureHelm), cs.Spec.ClusterNamespace, cs.Spec.ClusterName,
418418
cs.Spec.ClusterType); err != nil {
419419
logger.V(logs.LogInfo).Info(fmt.Sprintf("failed to unregister cluster shard: %v", err))
420420
return err
@@ -1048,7 +1048,7 @@ func (r *ClusterSummaryReconciler) updateMaps(ctx context.Context, clusterSummar
10481048
currentReferences.Insert(&corev1.ObjectReference{
10491049
APIVersion: corev1.SchemeGroupVersion.String(),
10501050
Kind: string(libsveltosv1beta1.ConfigMapReferencedResourceKind),
1051-
Namespace: projectsveltos,
1051+
Namespace: getSveltosNamespace(),
10521052
Name: driftDetectionConfigMap,
10531053
})
10541054
}
@@ -1608,8 +1608,8 @@ func (r *ClusterSummaryReconciler) updateClusterShardPair(ctx context.Context,
16081608
}
16091609

16101610
if hasShardChanged, err := sharding.RegisterClusterShard(ctx, r.Client, libsveltosv1beta1.ComponentAddonManager,
1611-
string(libsveltosv1beta1.FeatureHelm), r.ShardKey, clusterSummary.Spec.ClusterNamespace, clusterSummary.Spec.ClusterName,
1612-
clusterSummary.Spec.ClusterType); err != nil {
1611+
getSveltosNamespace(), string(libsveltosv1beta1.FeatureHelm), r.ShardKey, clusterSummary.Spec.ClusterNamespace,
1612+
clusterSummary.Spec.ClusterName, clusterSummary.Spec.ClusterType); err != nil {
16131613
logger.V(logs.LogDebug).Info(fmt.Sprintf("failed to check/update cluster:shard pair %v", err))
16141614
return err
16151615
} else if hasShardChanged {
@@ -1938,7 +1938,7 @@ func (r *ClusterSummaryReconciler) verifyPullModeEligibility(ctx context.Context
19381938
return false, err
19391939
}
19401940

1941-
result := license.VerifyLicenseSecret(ctx, r.Client, publicKey, logger)
1941+
result := license.VerifyLicenseSecret(ctx, r.Client, getSveltosNamespace(), publicKey, logger)
19421942
maxClusters := 0
19431943
if result.Payload != nil {
19441944
maxClusters = result.Payload.MaxClusters

controllers/controllers_suite_test.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,11 @@ import (
5151
)
5252

5353
var (
54-
testEnv *helpers.TestEnvironment
55-
cancel context.CancelFunc
56-
ctx context.Context
57-
scheme *runtime.Scheme
54+
testEnv *helpers.TestEnvironment
55+
cancel context.CancelFunc
56+
ctx context.Context
57+
scheme *runtime.Scheme
58+
sveltosNamespace string
5859
)
5960

6061
func TestControllers(t *testing.T) {
@@ -86,7 +87,9 @@ var _ = BeforeSuite(func() {
8687
panic(err)
8788
}
8889

90+
sveltosNamespace = randomString()
8991
controllers.SetManagementClusterAccess(testEnv.Client, testEnv.Config, dc)
92+
controllers.SetSveltosNamespace(sveltosNamespace)
9093
controllers.CreatFeatureHandlerMaps()
9194

9295
Expect(index.AddDefaultIndexes(ctx, testEnv.Manager)).To(Succeed())
@@ -137,7 +140,7 @@ var _ = BeforeSuite(func() {
137140

138141
projectsveltosNs := &corev1.Namespace{
139142
ObjectMeta: metav1.ObjectMeta{
140-
Name: "projectsveltos",
143+
Name: sveltosNamespace,
141144
},
142145
}
143146
Expect(testEnv.Create(context.TODO(), projectsveltosNs)).To(Succeed())

controllers/drift_detection_upgrade.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@ func upgradeDriftDetection(ctx context.Context, shardKey string, logger logr.Log
4949
upgradeDriftDetectionDeploymentsInManagedClusters(ctx, shardKey, logger)
5050
}
5151

52-
func upgradeDriftDetectionDeploymentsInManagedClusters(ctx context.Context, shardKey string, logger logr.Logger) {
52+
func upgradeDriftDetectionDeploymentsInManagedClusters(ctx context.Context, shardKey string,
53+
logger logr.Logger) {
54+
5355
const two = 2
5456
const maxRetryAfter = two * time.Minute // Maximum sleep duration
5557
retryAfter := 10 * time.Second
@@ -308,7 +310,7 @@ func skipUpgrading(ctx context.Context, c client.Client, cluster client.Object,
308310
func isDriftDetectionManagerDeployedInCluster(ctx context.Context, c client.Client) (bool, error) {
309311
deployment := &appsv1.Deployment{}
310312
// A test in pkg/drift-detection makes sure this name is correct
311-
err := c.Get(ctx, types.NamespacedName{Namespace: projectsveltos, Name: "drift-detection-manager"}, deployment)
313+
err := c.Get(ctx, types.NamespacedName{Namespace: getSveltosNamespace(), Name: "drift-detection-manager"}, deployment)
312314

313315
if err != nil {
314316
if apierrors.IsNotFound(err) {

controllers/drift_detection_upgrade_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ var _ = Describe("Drift Detection Upgrade", func() {
157157
depl := &appsv1.Deployment{
158158
ObjectMeta: metav1.ObjectMeta{
159159
Name: "drift-detection-manager",
160-
Namespace: "projectsveltos",
160+
Namespace: sveltosNamespace,
161161
Labels: map[string]string{
162162
"control-plane": "drift-detection-manager",
163163
},
@@ -171,7 +171,7 @@ var _ = Describe("Drift Detection Upgrade", func() {
171171
depl := &appsv1.Deployment{
172172
ObjectMeta: metav1.ObjectMeta{
173173
Name: "some-other-deployment",
174-
Namespace: "projectsveltos",
174+
Namespace: sveltosNamespace,
175175
Labels: map[string]string{
176176
"control-plane": "drift-detection-manager",
177177
},

controllers/management_cluster.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ var (
3434
managementClusterMapper *restmapper.DeferredDiscoveryRESTMapper
3535
managementClusterCachedDiscovery discovery.CachedDiscoveryInterface
3636

37+
sveltosNamespace string
3738
driftdetectionConfigMap string
3839
luaConfigMap string
3940
capiOnboardAnnotation string
@@ -79,6 +80,10 @@ func SetAgentInMgmtCluster(isInMgmtCluster bool) {
7980
agentInMgmtCluster = isInMgmtCluster
8081
}
8182

83+
func SetSveltosNamespace(namespace string) {
84+
sveltosNamespace = namespace
85+
}
86+
8287
func getManagementClusterConfig() *rest.Config {
8388
return managementClusterConfig
8489
}
@@ -119,6 +124,10 @@ func getAgentInMgmtCluster() bool {
119124
return agentInMgmtCluster
120125
}
121126

127+
func getSveltosNamespace() string {
128+
return sveltosNamespace
129+
}
130+
122131
func resetManagementClusterMapper() {
123132
managementClusterMapper.Reset()
124133
}
@@ -131,7 +140,7 @@ func collectDriftDetectionConfigMap(ctx context.Context) (*corev1.ConfigMap, err
131140
c := getManagementClusterClient()
132141
configMap := &corev1.ConfigMap{}
133142

134-
err := c.Get(ctx, types.NamespacedName{Namespace: projectsveltos, Name: getDriftDetectionConfigMap()},
143+
err := c.Get(ctx, types.NamespacedName{Namespace: sveltosNamespace, Name: getDriftDetectionConfigMap()},
135144
configMap)
136145
if err != nil {
137146
return nil, err
@@ -144,7 +153,7 @@ func collectLuaConfigMap(ctx context.Context) (*corev1.ConfigMap, error) {
144153
c := getManagementClusterClient()
145154
configMap := &corev1.ConfigMap{}
146155

147-
err := c.Get(ctx, types.NamespacedName{Namespace: projectsveltos, Name: getLuaConfigMap()},
156+
err := c.Get(ctx, types.NamespacedName{Namespace: sveltosNamespace, Name: getLuaConfigMap()},
148157
configMap)
149158
if err != nil {
150159
return nil, err

0 commit comments

Comments
 (0)