Skip to content

Commit 99d93f6

Browse files
ybettank8s-ci-robot
authored andcommitted
Updated the MCM controller to work with the new MIC implementation.
The MCM controller doesn't have to create build/sign pods manually anymore, all it needs to do is to create 1 MIC object in the cluster per MCM object per managed cluster. If all images in an MIC are ready, then the controller can proceed with creating the manifestWork because it guarantees that the targeted managed cluster can pull all kmod images successfully. Signed-off-by: Yoni Bettan <[email protected]>
1 parent 22274a5 commit 99d93f6

File tree

12 files changed

+873
-853
lines changed

12 files changed

+873
-853
lines changed

ci/prow/e2e-hub-spoke-incluster-build

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,12 @@ kubectl label node/${MINIKUBE} node-role.kubernetes.io/worker=""
1414

1515
# Init OCM in the cluster
1616
clusteradm init --wait
17-
kubectl wait --for=condition=Available deployment/cluster-manager -n open-cluster-management
18-
kubectl wait --for=condition=Available deployment/cluster-manager-placement-controller -n open-cluster-management-hub
19-
kubectl wait --for=condition=Available deployment/cluster-manager-registration-controller -n open-cluster-management-hub
20-
kubectl wait --for=condition=Available deployment/cluster-manager-registration-webhook -n open-cluster-management-hub
21-
kubectl wait --for=condition=Available deployment/cluster-manager-work-webhook -n open-cluster-management-hub
17+
kubectl wait --for=condition=Available -n open-cluster-management deployment/cluster-manager
18+
kubectl wait --for=condition=Available --timeout=2m -n open-cluster-management-hub \
19+
deployment/cluster-manager-placement-controller \
20+
deployment/cluster-manager-registration-controller \
21+
deployment/cluster-manager-registration-webhook \
22+
deployment/cluster-manager-work-webhook
2223

2324
# Join the "spoke" cluster to the "hub" cluster (in this case a single cluster is both hub and spoke)
2425
token=$(clusteradm get token | grep token= | cut -d"=" -f2-)
@@ -49,11 +50,11 @@ clusteradm addon enable addon --names config-policy-controller --clusters ${MINI
4950
# Install kmm and kmm-hub
5051
make deploy deploy-hub
5152

52-
kubectl wait --for=condition=Available -n ${OPERATOR_NAMESPACE} \
53+
kubectl wait --for=condition=Available --timeout=2m -n ${OPERATOR_NAMESPACE} \
5354
deployment/kmm-operator-hub-controller \
5455
deployment/kmm-operator-hub-webhook \
5556
deployment/kmm-operator-controller \
56-
deployment/kmm-operator-webhook \
57+
deployment/kmm-operator-webhook
5758

5859
# Make the ManagedCluster selected by the ManagedClusterModule
5960
kubectl label managedcluster minikube name=minikube

cmd/manager-hub/main.go

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ import (
2121

2222
"github.com/kubernetes-sigs/kernel-module-management/internal/config"
2323
"github.com/kubernetes-sigs/kernel-module-management/internal/controllers"
24+
"github.com/kubernetes-sigs/kernel-module-management/internal/mbsc"
25+
"github.com/kubernetes-sigs/kernel-module-management/internal/mic"
26+
"github.com/kubernetes-sigs/kernel-module-management/internal/pod"
2427
"k8s.io/apimachinery/pkg/runtime"
2528
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
2629
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
@@ -34,8 +37,8 @@ import (
3437
// to ensure that exec-entrypoint and run can make use of them.
3538
_ "k8s.io/client-go/plugin/pkg/client/auth"
3639

37-
"github.com/kubernetes-sigs/kernel-module-management/api-hub/v1beta1"
38-
buildpod "github.com/kubernetes-sigs/kernel-module-management/internal/build/pod"
40+
hubv1beta1 "github.com/kubernetes-sigs/kernel-module-management/api-hub/v1beta1"
41+
kmmv1beta1 "github.com/kubernetes-sigs/kernel-module-management/api/v1beta1"
3942
buildsignpod "github.com/kubernetes-sigs/kernel-module-management/internal/buildsign/pod"
4043
"github.com/kubernetes-sigs/kernel-module-management/internal/cluster"
4144
"github.com/kubernetes-sigs/kernel-module-management/internal/cmd"
@@ -47,7 +50,6 @@ import (
4750
"github.com/kubernetes-sigs/kernel-module-management/internal/module"
4851
"github.com/kubernetes-sigs/kernel-module-management/internal/nmc"
4952
"github.com/kubernetes-sigs/kernel-module-management/internal/registry"
50-
signpod "github.com/kubernetes-sigs/kernel-module-management/internal/sign/pod"
5153
"github.com/kubernetes-sigs/kernel-module-management/internal/statusupdater"
5254
//+kubebuilder:scaffold:imports
5355
)
@@ -56,7 +58,8 @@ var scheme = runtime.NewScheme()
5658

5759
func init() {
5860
utilruntime.Must(clientgoscheme.AddToScheme(scheme))
59-
utilruntime.Must(v1beta1.AddToScheme(scheme))
61+
utilruntime.Must(hubv1beta1.AddToScheme(scheme))
62+
utilruntime.Must(kmmv1beta1.AddToScheme(scheme))
6063
utilruntime.Must(clusterv1.Install(scheme))
6164
utilruntime.Must(workv1.Install(scheme))
6265
//+kubebuilder:scaffold:scheme
@@ -109,21 +112,11 @@ func main() {
109112

110113
registryAPI := registry.NewRegistry()
111114
buildSignCombiner := module.NewCombiner()
112-
buildSignPodAPI := buildsignpod.NewBuildSignPodManager(client, buildSignCombiner, scheme)
113115

114-
buildAPI := buildpod.NewBuildManager(
115-
client,
116-
buildpod.NewMaker(client, buildSignCombiner, buildSignPodAPI, scheme),
117-
buildSignPodAPI,
118-
registryAPI,
119-
)
120-
121-
signAPI := signpod.NewSignPodManager(
122-
client,
123-
signpod.NewSigner(client, scheme, buildSignPodAPI),
124-
buildSignPodAPI,
125-
registryAPI,
126-
)
116+
micAPI := mic.New(client, scheme)
117+
mbscAPI := mbsc.New(client, scheme)
118+
imagePullerAPI := pod.NewImagePuller(client, scheme)
119+
builSignAPI := buildsignpod.NewManager(client, buildSignCombiner, scheme)
127120

128121
kernelAPI := module.NewKernelMapper(buildSignCombiner)
129122

@@ -135,11 +128,20 @@ func main() {
135128
mcmr := hub.NewManagedClusterModuleReconciler(
136129
client,
137130
manifestwork.NewCreator(client, scheme, kernelAPI, registryAPI, operatorNamespace),
138-
cluster.NewClusterAPI(client, kernelAPI, buildAPI, signAPI, operatorNamespace),
131+
cluster.NewClusterAPI(client, kernelAPI, operatorNamespace),
139132
statusupdater.NewManagedClusterModuleStatusUpdater(client),
140133
filterAPI,
134+
micAPI,
141135
)
142136

137+
if err = controllers.NewMICReconciler(client, micAPI, mbscAPI, imagePullerAPI, scheme).SetupWithManager(mgr); err != nil {
138+
cmd.FatalError(setupLogger, err, "unable to create controller", "name", controllers.MICReconcilerName)
139+
}
140+
141+
if err = controllers.NewMBSCReconciler(client, builSignAPI, mbscAPI).SetupWithManager(mgr); err != nil {
142+
cmd.FatalError(setupLogger, err, "unable to create controller", "name", controllers.MBSCReconcilerName)
143+
}
144+
143145
if err = mcmr.SetupWithManager(mgr); err != nil {
144146
cmd.FatalError(ctrlLogger, err, "unable to create controller")
145147
}

config/rbac-hub/role.yaml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,37 @@ rules:
5555
- get
5656
- patch
5757
- update
58+
- apiGroups:
59+
- kmm.sigs.x-k8s.io
60+
resources:
61+
- modulebuildsignconfigs
62+
verbs:
63+
- create
64+
- get
65+
- list
66+
- patch
67+
- update
68+
- watch
69+
- apiGroups:
70+
- kmm.sigs.x-k8s.io
71+
resources:
72+
- modulebuildsignconfigs/status
73+
- moduleimagesconfigs/status
74+
verbs:
75+
- get
76+
- patch
77+
- update
78+
- apiGroups:
79+
- kmm.sigs.x-k8s.io
80+
resources:
81+
- moduleimagesconfigs
82+
verbs:
83+
- create
84+
- delete
85+
- get
86+
- list
87+
- patch
88+
- watch
5889
- apiGroups:
5990
- work.open-cluster-management.io
6091
resources:

0 commit comments

Comments
 (0)