@@ -63,33 +63,61 @@ help: ## Display this help.
6363# #@ Development
6464
6565# ## CRD manifests (one per API group)
66- .PHONY : manifests-bootstrap manifests-controlplane manifests-infrastructure manifests-k0smotron
66+ .PHONY : manifests-bootstrap manifests-controlplane manifests-infrastructure manifests-standalone
6767manifests-bootstrap : $(CONTROLLER_GEN ) # # Generate CRDs for bootstrap.cluster.x-k8s.io
68- $(CONTROLLER_GEN ) rbac:roleName=manager-role crd:generateEmbeddedObjectMeta=true webhook \
69- paths=" ./..." \
70- output:crd:artifacts:config=config/crd/bases/bootstrap
71- find ./config/crd/bases/bootstrap -type f ! -name " bootstrap*" ! -name " kustomization.yaml" -print0 | xargs -0 rm
68+ $(CONTROLLER_GEN ) rbac:roleName=manager-role crd:generateEmbeddedObjectMeta=true \
69+ paths=" ./api/bootstrap/v1beta1/..." \
70+ paths=./internal/controller/bootstrap/... \
71+ output:crd:artifacts:config=config/clusterapi/bootstrap/crd/bases \
72+ output:rbac:dir=config/clusterapi/bootstrap/rbac
7273
73- manifests-controlplane : $(CONTROLLER_GEN ) # # Generate CRDs for controlplane.cluster.x-k8s.io
74+ manifests-controlplane : $(CONTROLLER_GEN ) # # Generate CRDs for controlplane.cluster.x-k8s.io.
75+ $(CONTROLLER_GEN ) rbac:roleName=manager-role crd:generateEmbeddedObjectMeta=true webhook \
76+ paths=" ./api/controlplane/v1beta1/..." \
77+ paths=./internal/controller/controlplane/... \
78+ output:crd:artifacts:config=config/clusterapi/controlplane/crd/bases
7479 $(CONTROLLER_GEN ) rbac:roleName=manager-role crd:generateEmbeddedObjectMeta=true webhook \
75- paths=" ./..." \
76- output:crd:artifacts:config=config/crd/bases/controlplane
77- find ./config/crd/bases/controlplane -type f ! -name " controlplane*" ! -name " kustomization.yaml" -print0 | xargs -0 rm
80+ paths=" ./api/controlplane/v1beta1/..." \
81+ paths=" ./api/k0smotron.io/v1beta1/..." \
82+ paths=./internal/controller/controlplane/... \
83+ paths=./internal/controller/k0smotron.io/... \
84+ output:rbac:dir=config/clusterapi/controlplane/rbac \
85+ output:webhook:dir=config/clusterapi/controlplane/webhook
7886
7987manifests-infrastructure : $(CONTROLLER_GEN ) # # Generate CRDs for infrastructure.cluster.x-k8s.io
80- $(CONTROLLER_GEN ) rbac:roleName=manager-role crd:generateEmbeddedObjectMeta=true webhook \
81- paths=" ./..." \
82- output:crd:artifacts:config=config/crd/bases/infrastructure
83- find ./config/crd/bases/infrastructure -type f ! -name " infrastructure*" ! -name " kustomization.yaml" -print0 | xargs -0 rm
88+ $(CONTROLLER_GEN ) rbac:roleName=manager-role crd:generateEmbeddedObjectMeta=true \
89+ paths=" ./api/infrastructure/v1beta1/..." \
90+ paths=./internal/controller/infrastructure/... \
91+ output:crd:artifacts:config=config/clusterapi/infrastructure/crd/bases \
92+ output:rbac:dir=config/clusterapi/infrastructure/rbac
8493
85- manifests-k0smotron : $(CONTROLLER_GEN ) # # Generate CRDs for k0smotron.io
94+ manifests-standalone : $(CONTROLLER_GEN ) # # Generate CRDs for k0smotron.io standalone
8695 $(CONTROLLER_GEN ) rbac:roleName=manager-role crd:generateEmbeddedObjectMeta=true webhook \
87- paths=" ./..." \
88- output:crd:artifacts:config=config/crd/bases/k0smotron.io
89- find ./config/crd/bases/k0smotron.io -type f ! -name " k0smotron.io*" ! -name " kustomization.yaml" -print0 | xargs -0 rm
96+ paths=" ./api/k0smotron.io/v1beta1/..." \
97+ paths=./internal/controller/k0smotron.io/... \
98+ output:crd:artifacts:config=config/standalone/crd/bases \
99+ output:rbac:dir=config/standalone/rbac \
100+ output:webhook:dir=config/standalone/webhook
101+
102+ .PHONY : manifests-capi-integration
103+ manifests-capi-integration : manifests manifests-capi-integration-without-crd
104+
105+ .PHONY : manifests-capi-integration-without-crd
106+ manifests-capi-integration-without-crd : $(CONTROLLER_GEN ) # Generate RBAC and webhook manifests for all controllers except CRDs in order to reuse them from each config/clusterapi/{provider}
107+ $(CONTROLLER_GEN ) rbac:roleName=manager-role webhook \
108+ paths=" ./api/bootstrap/v1beta1/..." \
109+ paths=./internal/controller/bootstrap/... \
110+ paths=" ./api/controlplane/v1beta1/..." \
111+ paths=" ./api/k0smotron.io/v1beta1/..." \
112+ paths=./internal/controller/controlplane/... \
113+ paths=./internal/controller/k0smotron.io/... \
114+ paths=" ./api/infrastructure/v1beta1/..." \
115+ paths=./internal/controller/infrastructure/... \
116+ output:rbac:dir=config/clusterapi/all/rbac \
117+ output:webhook:dir=config/clusterapi/all/webhook
90118
91119.PHONY : manifests
92- manifests : manifests-bootstrap manifests-controlplane manifests-infrastructure manifests-k0smotron # # Generate all CRD YAMLs per group
120+ manifests : manifests-bootstrap manifests-controlplane manifests-infrastructure manifests-standalone # # Generate all CRD YAMLs per group
93121
94122# ## generate
95123generate_targets += api/k0smotron.io/v1beta1/zz_generated.deepcopy.go
@@ -100,7 +128,7 @@ generate_targets += api/infrastructure/v1beta1/zz_generated.deepcopy.go
100128$(generate_targets ) : $(CONTROLLER_GEN )
101129 $(CONTROLLER_GEN ) object:headerFile=" hack/boilerplate.go.txt" paths=" ./..."
102130
103- generate : $(generate_targets ) clusterapi- manifests # # Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.
131+ generate : $(generate_targets ) manifests # # Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.
104132
105133
106134GO_PKGS =$(shell go list ./...)
@@ -151,10 +179,6 @@ e2e-aws:
151179build :
152180 go build -o bin/manager cmd/main.go
153181
154- .PHONY : run
155- run : manifests generate fmt vet # # Run a controller from your host.
156- go run ./cmd/main.go
157-
158182# If you wish built the manager image targeting other platforms you can use the --platform flag.
159183# (i.e. docker build --platform linux/arm64 ). However, you must enable docker buildKit for it.
160184# More info: https://docs.docker.com/develop/develop-images/build_enhancements/
@@ -195,49 +219,43 @@ ifndef ignore-not-found
195219 ignore-not-found = false
196220endif
197221
198- .PHONY : install
199- install : manifests kustomize # # Install CRDs into the K8s cluster specified in ~/.kube/config.
200- $(KUSTOMIZE ) build config/crd | kubectl create -f -
201-
202- .PHONY : uninstall
203- uninstall : manifests kustomize # # Uninstall CRDs from the K8s cluster specified in ~/.kube/config. Call with ignore-not-found=true to ignore resource not found errors during deletion.
204- $(KUSTOMIZE ) build config/crd | kubectl delete --ignore-not-found=$(ignore-not-found ) -f -
205-
206222.PHONY : deploy
207223deploy : manifests kustomize # # Deploy controller to the K8s cluster specified in ~/.kube/config.
208- cd config/manager && $(KUSTOMIZE ) edit set image k0s/k0smotron=${IMG}
209- $(KUSTOMIZE ) build config/default | kubectl create -f -
224+ cd config/clusterapi/all/manager && $(KUSTOMIZE ) edit set image k0s/k0smotron=${IMG}
225+ $(KUSTOMIZE ) build config/clusterapi/all | kubectl create -f -
226+ git checkout config/clusterapi/all/manager/kustomization.yaml
210227
211228.PHONY : undeploy
212229undeploy : # # Undeploy controller from the K8s cluster specified in ~/.kube/config. Call with ignore-not-found=true to ignore resource not found errors during deletion.
213- $(KUSTOMIZE ) build config/default | kubectl delete --ignore-not-found=$(ignore-not-found ) -f -
230+ $(KUSTOMIZE ) build config/clusterapi/all | kubectl delete --ignore-not-found=$(ignore-not-found ) -f -
214231
215232.PHONY : release
216- release : manifests kustomize # # Deploy controller to the K8s cluster specified in ~/.kube/config.
233+ release : manifests-capi-integration kustomize # # Deploy controller to the K8s cluster specified in ~/.kube/config.
234+ cd config/clusterapi/all/manager && $(KUSTOMIZE ) edit set image controller=${IMG}
235+ $(KUSTOMIZE ) build config/clusterapi/all > install.yaml
236+ git checkout config/clusterapi/all/manager/kustomization.yaml
237+
238+ .PHONY : release-standalone
239+ release-standalone : manifests-standalone kustomize # # Generate install yaml for standalone mode
217240 cd config/manager && $(KUSTOMIZE ) edit set image controller=${IMG}
218- $(KUSTOMIZE ) build config/default > install.yaml
241+ $(KUSTOMIZE ) build config/standalone > install-standalone .yaml
219242 git checkout config/manager/kustomization.yaml
220243
221- clusterapi-manifests :
222- $(CONTROLLER_GEN ) rbac:roleName=manager-role crd:generateEmbeddedObjectMeta=true webhook paths=" ./api/bootstrap/..." output:crd:artifacts:config=config/clusterapi/bootstrap/bases
223- $(CONTROLLER_GEN ) rbac:roleName=manager-role crd:generateEmbeddedObjectMeta=true webhook paths=" ./api/controlplane/..." output:crd:artifacts:config=config/clusterapi/controlplane/bases
224- $(CONTROLLER_GEN ) rbac:roleName=manager-role crd:generateEmbeddedObjectMeta=true webhook paths=" ./api/infrastructure/..." output:crd:artifacts:config=config/clusterapi/infrastructure/bases
225- $(CONTROLLER_GEN ) rbac:roleName=manager-role crd:generateEmbeddedObjectMeta=true webhook paths=" ./api/k0smotron.io/..." output:crd:artifacts:config=config/clusterapi/k0smotron.io/bases
226-
227- bootstrap-components.yaml : $(CONTROLLER_GEN ) clusterapi-manifests kustomize
244+ bootstrap-components.yaml : $(CONTROLLER_GEN ) manifests-bootstrap kustomize
228245 cd config/manager && $(KUSTOMIZE ) edit set image controller=${IMG}
229246 $(KUSTOMIZE ) build config/clusterapi/bootstrap/ > bootstrap-components.yaml
230247 git checkout config/manager/kustomization.yaml
231248
232- control-plane-components.yaml : $(CONTROLLER_GEN ) clusterapi- manifests kustomize
249+ control-plane-components.yaml : $(CONTROLLER_GEN ) manifests-controlplane kustomize
233250 cd config/manager && $(KUSTOMIZE ) edit set image controller=${IMG}
234251 $(KUSTOMIZE ) build config/clusterapi/controlplane/ > control-plane-components.yaml
235252 git checkout config/manager/kustomization.yaml
236253
237- infrastructure-components.yaml : $(CONTROLLER_GEN ) clusterapi- manifests kustomize
254+ infrastructure-components.yaml : $(CONTROLLER_GEN ) manifests-infrastructure kustomize
238255 cd config/manager && $(KUSTOMIZE ) edit set image controller=${IMG}
239256 $(KUSTOMIZE ) build config/clusterapi/infrastructure/ > infrastructure-components.yaml
240257 git checkout config/manager/kustomization.yaml
258+
241259# #@ Build Dependencies
242260
243261kustomize : $(KUSTOMIZE ) # # Download kustomize locally if necessary. If wrong version is installed, it will be removed before downloading.
@@ -272,23 +290,23 @@ $(CRDOC): Makefile.variables | $(LOCALBIN)
272290
273291.PHONY : docs-generate-bootstrap docs-generate-controlplane docs-generate-infrastructure docs-generate-k0smotron docs-generate-reference
274292docs-generate-bootstrap : $(CRDOC ) # # Generate docs for bootstrap CRDs
275- $(CRDOC ) --resources config/crd/bases/bootstrap --output docs/resource-reference/bootstrap.cluster.x-k8s.io-v1beta1.md
293+ $(CRDOC ) --resources config/clusterapi/bootstrap/ crd/bases --output docs/resource-reference/bootstrap.cluster.x-k8s.io-v1beta1.md
276294
277295docs-generate-controlplane : $(CRDOC ) # # Generate docs for controlplane CRDs
278- $(CRDOC ) --resources config/crd/bases/controlplane --output docs/resource-reference/controlplane.cluster.x-k8s.io-v1beta1.md
296+ $(CRDOC ) --resources config/clusterapi/controlplane/ crd/bases --output docs/resource-reference/controlplane.cluster.x-k8s.io-v1beta1.md
279297
280298docs-generate-infrastructure : $(CRDOC ) # # Generate docs for infrastructure CRDs
281- $(CRDOC ) --resources config/crd/bases/infrastructure --output docs/resource-reference/infrastructure.cluster.x-k8s.io-v1beta1.md
299+ $(CRDOC ) --resources config/clusterapi/infrastructure/ crd/bases --output docs/resource-reference/infrastructure.cluster.x-k8s.io-v1beta1.md
282300
283301docs-generate-k0smotron : $(CRDOC ) # # Generate docs for k0smotron CRDs
284- $(CRDOC ) --resources config/crd/bases/k0smotron.io --output docs/resource-reference/k0smotron.io-v1beta1.md
302+ $(CRDOC ) --resources config/standalone/ crd/bases --output docs/resource-reference/k0smotron.io-v1beta1.md
285303
286304# Generate docs for all CRDs apis
287305docs-generate-reference : docs-generate-bootstrap docs-generate-controlplane docs-generate-infrastructure docs-generate-k0smotron
288306
289307# # Generate all code, manifests, documentation, and release artifacts
290308.PHONY : generate-all
291- generate-all : clean generate manifests clusterapi-manifests docs-generate-reference release
309+ generate-all : clean generate docs-generate-reference release
292310
293311.PHONY : $(smoketests )
294312$(smoketests ) : release k0smotron-image-bundle.tar
0 commit comments