Skip to content

Commit d23a95a

Browse files
committed
Add the NodeModulesConfig controller
Reconcile NodeModulesConfig resources by creating and monitoring worker Pods. Use the NodeModulesConfig status to maintain the state of modules on nodes.
1 parent 1767d02 commit d23a95a

14 files changed

+1847
-8
lines changed

api/v1beta1/nodemodulesconfig_types.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,10 @@ type ModuleConfig struct {
3131
}
3232

3333
type NodeModuleSpec struct {
34-
Name string `json:"name"`
35-
Namespace string `json:"namespace"`
36-
Config ModuleConfig `json:"config"`
34+
Name string `json:"name"`
35+
Namespace string `json:"namespace"`
36+
Config ModuleConfig `json:"config"`
37+
ServiceAccountName string `json:"serviceAccountName"`
3738
}
3839

3940
// NodeModulesConfigSpec describes the desired state of modules on the node

cmd/manager/main.go

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

25-
"github.com/kubernetes-sigs/kernel-module-management/internal/build/pod"
26-
"github.com/kubernetes-sigs/kernel-module-management/internal/config"
2725
"k8s.io/apimachinery/pkg/runtime"
2826
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
2927
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
@@ -40,7 +38,9 @@ import (
4038
v1beta12 "github.com/kubernetes-sigs/kernel-module-management/api/v1beta1"
4139
"github.com/kubernetes-sigs/kernel-module-management/controllers"
4240
"github.com/kubernetes-sigs/kernel-module-management/internal/build"
41+
"github.com/kubernetes-sigs/kernel-module-management/internal/build/pod"
4342
"github.com/kubernetes-sigs/kernel-module-management/internal/cmd"
43+
"github.com/kubernetes-sigs/kernel-module-management/internal/config"
4444
"github.com/kubernetes-sigs/kernel-module-management/internal/constants"
4545
"github.com/kubernetes-sigs/kernel-module-management/internal/daemonset"
4646
"github.com/kubernetes-sigs/kernel-module-management/internal/filter"
@@ -86,6 +86,7 @@ func main() {
8686
}
8787

8888
operatorNamespace := cmd.GetEnvOrFatalError(constants.OperatorNamespaceEnvVar, setupLogger)
89+
workerImage := cmd.GetEnvOrFatalError("RELATED_IMAGES_WORKER", setupLogger)
8990

9091
managed, err := GetBoolEnv("KMM_MANAGED")
9192
if err != nil {
@@ -163,6 +164,17 @@ func main() {
163164
cmd.FatalError(setupLogger, err, "unable to create controller", "name", controllers.ModuleNMCReconcilerName)
164165
}
165166

167+
workerHelper := controllers.NewWorkerHelper(
168+
client,
169+
controllers.NewPodManager(client, workerImage, scheme),
170+
)
171+
172+
ctx := ctrl.SetupSignalHandler()
173+
174+
if err = controllers.NewNodeModulesConfigReconciler(client, workerHelper).SetupWithManager(ctx, mgr); err != nil {
175+
cmd.FatalError(setupLogger, err, "unable to create controller", "name", controllers.NodeModulesConfigReconcilerName)
176+
}
177+
166178
nodeKernelReconciler := controllers.NewNodeKernelReconciler(client, constants.KernelLabel, filterAPI)
167179

168180
if err = nodeKernelReconciler.SetupWithManager(mgr); err != nil {
@@ -210,7 +222,7 @@ func main() {
210222
}
211223

212224
setupLogger.Info("starting manager")
213-
if err = mgr.Start(ctrl.SetupSignalHandler()); err != nil {
225+
if err = mgr.Start(ctx); err != nil {
214226
cmd.FatalError(setupLogger, err, "problem running manager")
215227
}
216228
}

config/crd/bases/kmm.sigs.x-k8s.io_nodemodulesconfigs.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,13 @@ spec:
149149
type: string
150150
namespace:
151151
type: string
152+
serviceAccountName:
153+
type: string
152154
required:
153155
- config
154156
- name
155157
- namespace
158+
- serviceAccountName
156159
type: object
157160
type: array
158161
type: object

config/manager/kustomization.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,16 @@ kind: Kustomization
44
resources:
55
- ../manager-base
66

7+
patches:
8+
- path: manager_worker_image_patch.yaml
9+
710
images:
811
- name: controller
912
newName: gcr.io/k8s-staging-kmm/kernel-module-management-operator
1013
newTag: latest
14+
- name: worker
15+
newName: gcr.io/k8s-staging-kmm/kernel-module-management-worker
16+
newTag: latest
1117

1218
configMapGenerator:
1319
- files:
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: controller-manager
5+
namespace: system
6+
spec:
7+
template:
8+
spec:
9+
containers:
10+
- name: manager
11+
env:
12+
- name: RELATED_IMAGES_WORKER
13+
value: worker

config/rbac/role.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,12 @@ rules:
9898
- list
9999
- patch
100100
- watch
101+
- apiGroups:
102+
- kmm.sigs.x-k8s.io
103+
resources:
104+
- nodemodulesconfigs/status
105+
verbs:
106+
- patch
101107
- apiGroups:
102108
- kmm.sigs.x-k8s.io
103109
resources:

controllers/mock_nodemodulesconfig_reconciler.go

Lines changed: 174 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

controllers/module_nmc_reconciler.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,10 @@ func (mnrh *moduleNMCReconcilerHelper) enableModuleOnNode(ctx context.Context, m
178178
Modprobe: mld.Modprobe,
179179
}
180180

181+
if tls := mld.RegistryTLS; tls != nil {
182+
moduleConfig.InsecurePull = tls.Insecure || tls.InsecureSkipTLSVerify
183+
}
184+
181185
nmc := &kmmv1beta1.NodeModulesConfig{
182186
ObjectMeta: metav1.ObjectMeta{Name: nodeName},
183187
}

0 commit comments

Comments
 (0)