Skip to content

Commit 29fa927

Browse files
TomerNewmank8s-ci-robot
authored andcommitted
Making KMM's configuration be persist during upgrade
Until now, whenever a user upgraded KMM, the ConfigMap containing the operator configuration was redeployed, causing any user changes to be lost. This commit removes the ConfigMap from KMM's deploy process, meaning KMM will take hard-coded default configuration and the user can apply manually the ConfigMap, meaning it will not be re-deployed during upgrades.
1 parent 1b6eb71 commit 29fa927

File tree

18 files changed

+620
-154
lines changed

18 files changed

+620
-154
lines changed

cmd/manager-hub/main.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ func main() {
6969
logConfig := textlogger.NewConfig()
7070
logConfig.AddFlags(flag.CommandLine)
7171

72-
var configFile string
72+
var userConfigMapName string
7373

74-
flag.StringVar(&configFile, "config", "", "The path to the configuration file.")
74+
flag.StringVar(&userConfigMapName, "config", "", "Name of the ConfigMap containing user config.")
7575

7676
flag.Parse()
7777

@@ -80,6 +80,7 @@ func main() {
8080
ctrl.SetLogger(logger)
8181

8282
setupLogger := logger.WithName("setup")
83+
operatorNamespace := cmd.GetEnvOrFatalError(constants.OperatorNamespaceEnvVar, setupLogger)
8384

8485
commit, err := cmd.GitCommit()
8586
if err != nil {
@@ -89,15 +90,16 @@ func main() {
8990

9091
setupLogger.Info("Creating manager", "git commit", commit)
9192

92-
cfg, err := config.ParseFile(configFile)
93+
ctx := ctrl.SetupSignalHandler()
94+
cg := config.NewConfigGetter(setupLogger)
95+
96+
cfg, err := cg.GetConfig(ctx, userConfigMapName, operatorNamespace, true)
9397
if err != nil {
94-
cmd.FatalError(setupLogger, err, "could not parse the configuration file", "path", configFile)
98+
cmd.FatalError(setupLogger, err, "failed to get kmm config")
9599
}
96100

97-
options := cfg.ManagerOptions()
98-
options.Scheme = scheme
99-
100-
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), *options)
101+
options := cg.GetManagerOptionsFromConfig(cfg, scheme)
102+
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), options)
101103
if err != nil {
102104
cmd.FatalError(setupLogger, err, "unable to create manager")
103105
}
@@ -123,8 +125,6 @@ func main() {
123125
ctrlLogger := setupLogger.WithValues("name", hub.ManagedClusterModuleReconcilerName)
124126
ctrlLogger.Info("Adding controller")
125127

126-
operatorNamespace := cmd.GetEnvOrFatalError(constants.OperatorNamespaceEnvVar, setupLogger)
127-
ctx := ctrl.SetupSignalHandler()
128128
mcmr := hub.NewManagedClusterModuleReconciler(
129129
client,
130130
manifestwork.NewCreator(client, scheme, kernelAPI, operatorNamespace),

cmd/manager/main.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import (
2222
"os"
2323
"strconv"
2424

25+
"github.com/kubernetes-sigs/kernel-module-management/internal/constants"
26+
2527
"github.com/kubernetes-sigs/kernel-module-management/internal/buildsign"
2628
"github.com/kubernetes-sigs/kernel-module-management/internal/mbsc"
2729
"github.com/kubernetes-sigs/kernel-module-management/internal/mic"
@@ -66,9 +68,9 @@ func main() {
6668
logConfig := textlogger.NewConfig()
6769
logConfig.AddFlags(flag.CommandLine)
6870

69-
var configFile string
71+
var userConfigMapName string
7072

71-
flag.StringVar(&configFile, "config", "", "The path to the configuration file.")
73+
flag.StringVar(&userConfigMapName, "config", "", "Name of the ConfigMap containing user config.")
7274

7375
flag.Parse()
7476

@@ -77,6 +79,7 @@ func main() {
7779
ctrl.SetLogger(logger)
7880

7981
setupLogger := logger.WithName("setup")
82+
operatorNamespace := cmd.GetEnvOrFatalError(constants.OperatorNamespaceEnvVar, setupLogger)
8083

8184
commit, err := cmd.GitCommit()
8285
if err != nil {
@@ -94,15 +97,16 @@ func main() {
9497

9598
setupLogger.Info("Creating manager", "git commit", commit)
9699

97-
cfg, err := config.ParseFile(configFile)
100+
ctx := ctrl.SetupSignalHandler()
101+
cg := config.NewConfigGetter(setupLogger)
102+
103+
cfg, err := cg.GetConfig(ctx, userConfigMapName, operatorNamespace, false)
98104
if err != nil {
99-
cmd.FatalError(setupLogger, err, "could not parse the configuration file", "path", configFile)
105+
cmd.FatalError(setupLogger, err, "failed to get kmm config")
100106
}
101107

102-
options := cfg.ManagerOptions()
103-
options.Scheme = scheme
104-
105-
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), *options)
108+
options := cg.GetManagerOptionsFromConfig(cfg, scheme)
109+
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), options)
106110
if err != nil {
107111
cmd.FatalError(setupLogger, err, "unable to create manager")
108112
}
@@ -146,8 +150,6 @@ func main() {
146150
cmd.FatalError(setupLogger, err, "unable to create controller", "name", controllers.ModuleReconcilerName)
147151
}
148152

149-
ctx := ctrl.SetupSignalHandler()
150-
151153
eventRecorder := mgr.GetEventRecorderFor("kmm")
152154

153155
workerPodManagerAPI := pod.NewWorkerPodManager(client, workerImage, scheme, &cfg.Worker)

cmd/webhook-server/main.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
kmmv1beta2 "github.com/kubernetes-sigs/kernel-module-management/api/v1beta2"
99
"github.com/kubernetes-sigs/kernel-module-management/internal/cmd"
1010
"github.com/kubernetes-sigs/kernel-module-management/internal/config"
11+
"github.com/kubernetes-sigs/kernel-module-management/internal/constants"
1112
"github.com/kubernetes-sigs/kernel-module-management/internal/webhook"
1213
"github.com/kubernetes-sigs/kernel-module-management/internal/webhook/hub"
1314
"k8s.io/apimachinery/pkg/runtime"
@@ -33,14 +34,14 @@ func main() {
3334
logConfig.AddFlags(flag.CommandLine)
3435

3536
var (
36-
configFile string
3737
enableModule bool
3838
enableManagedClusterModule bool
3939
enableNamespaceDeletion bool
4040
enablePreflightValidation bool
41+
userConfigMapName string
4142
)
4243

43-
flag.StringVar(&configFile, "config", "", "The path to the configuration file.")
44+
flag.StringVar(&userConfigMapName, "config", "", "Name of the ConfigMap containing user config.")
4445
flag.BoolVar(&enableModule, "enable-module", false, "Enable the webhook for Module resources")
4546
flag.BoolVar(&enableManagedClusterModule, "enable-managedclustermodule", false, "Enable the webhook for ManagedClusterModule resources")
4647
flag.BoolVar(&enableNamespaceDeletion, "enable-namespace", false, "Enable the webhook for Namespace deletion")
@@ -61,17 +62,20 @@ func main() {
6162
}
6263

6364
setupLogger.Info("Creating manager", "git commit", commit)
65+
operatorNamespace := cmd.GetEnvOrFatalError(constants.OperatorNamespaceEnvVar, setupLogger)
6466

65-
cfg, err := config.ParseFile(configFile)
67+
ctx := ctrl.SetupSignalHandler()
68+
cg := config.NewConfigGetter(setupLogger)
69+
70+
cfg, err := cg.GetConfig(ctx, userConfigMapName, operatorNamespace, false)
6671
if err != nil {
67-
cmd.FatalError(setupLogger, err, "could not parse the configuration file", "path", configFile)
72+
cmd.FatalError(setupLogger, err, "failed to get kmm config")
6873
}
6974

70-
options := cfg.ManagerOptions()
75+
options := cg.GetManagerOptionsFromConfig(cfg, scheme)
7176
options.LeaderElection = false
72-
options.Scheme = scheme
7377

74-
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), *options)
78+
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), options)
7579
if err != nil {
7680
cmd.FatalError(setupLogger, err, "unable to create manager")
7781
}
@@ -118,7 +122,7 @@ func main() {
118122
}
119123

120124
setupLogger.Info("starting manager")
121-
if err = mgr.Start(ctrl.SetupSignalHandler()); err != nil {
125+
if err = mgr.Start(ctx); err != nil {
122126
cmd.FatalError(setupLogger, err, "problem running manager")
123127
}
124128
}

config/manager-base/kustomization.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,5 @@ images:
99
newName: gcr.io/k8s-staging-kmm/kernel-module-management-signimage
1010
newTag: latest
1111

12-
patches:
13-
- path: manager_config_patch.yaml
14-
1512
configurations:
1613
- kustomizeconfig.yaml

config/manager-base/manager_config_patch.yaml

Lines changed: 0 additions & 20 deletions
This file was deleted.

config/manager-hub/controller_config.yaml

Lines changed: 0 additions & 10 deletions
This file was deleted.

config/manager-hub/kustomization.yaml

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,5 @@ images:
99
newName: gcr.io/k8s-staging-kmm/kernel-module-management-operator-hub
1010
newTag: latest
1111

12-
configMapGenerator:
13-
- files:
14-
- controller_config.yaml
15-
name: manager-config
16-
17-
generatorOptions:
18-
disableNameSuffixHash: true
12+
patches:
13+
- path: manager_hub_config_patch.yaml
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: controller
5+
namespace: system
6+
spec:
7+
template:
8+
spec:
9+
containers:
10+
- name: manager
11+
args:
12+
- "--config=kmm-operator-hub-manager-config"

config/manager/kustomization.yaml

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ resources:
66

77
patches:
88
- path: manager_worker_image_patch.yaml
9+
- path: manager_config_patch.yaml
910

1011
images:
1112
- name: controller
@@ -14,11 +15,3 @@ images:
1415
- name: worker
1516
newName: gcr.io/k8s-staging-kmm/kernel-module-management-worker
1617
newTag: latest
17-
18-
configMapGenerator:
19-
- files:
20-
- controller_config.yaml
21-
name: manager-config
22-
23-
generatorOptions:
24-
disableNameSuffixHash: true
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: controller
5+
namespace: system
6+
spec:
7+
template:
8+
spec:
9+
containers:
10+
- name: manager
11+
args:
12+
- "--config=kmm-operator-manager-config"

0 commit comments

Comments
 (0)