66HUB_AGENT_IMAGE_VERSION ?= $(TAG )
77MEMBER_AGENT_IMAGE_VERSION ?= $(TAG )
88REFRESH_TOKEN_IMAGE_VERSION ?= $(TAG )
9+ CRD_INSTALLER_IMAGE_VERSION ?= $(TAG )
910
1011HUB_AGENT_IMAGE_NAME ?= hub-agent
1112MEMBER_AGENT_IMAGE_NAME ?= member-agent
12- REFRESH_TOKEN_IMAGE_NAME := refresh-token
13+ REFRESH_TOKEN_IMAGE_NAME ?= refresh-token
14+ CRD_INSTALLER_IMAGE_NAME ?= crd-installer
1315
1416KUBECONFIG ?= $(HOME ) /.kube/config
1517HUB_SERVER_URL ?= https://172.19.0.2:6443
@@ -48,7 +50,7 @@ ENVTEST_K8S_VERSION = 1.30.0
4850# ENVTEST_VER is the version of the ENVTEST binary
4951ENVTEST_VER = v0.0.0-20240317073005-bd9ea79e8d18
5052ENVTEST_BIN := setup-envtest
51- ENVTEST := $(abspath $(TOOLS_BIN_DIR ) /$(ENVTEST_BIN ) -$(ENVTEST_VER ) )
53+ ENVTEST := $(abspath $(TOOLS_BIN_DIR ) /$(ENVTEST_BIN ) -$(ENVTEST_VER ) )
5254
5355# Scripts
5456GO_INSTALL := ./hack/go-install.sh
@@ -100,7 +102,7 @@ staticcheck: $(STATICCHECK)
100102 $(STATICCHECK ) ./...
101103
102104.PHONY : fmt
103- fmt : $(GOIMPORTS ) # # Run go fmt against code.
105+ fmt : $(GOIMPORTS ) # # Run go fmt against code.
104106 go fmt ./...
105107 $(GOIMPORTS ) -local go.goms.io/fleet -w $$(go list -f {{.Dir}} ./... )
106108
@@ -121,17 +123,18 @@ create-member-kind-cluster:
121123 kind create cluster --name $(MEMBER_KIND_CLUSTER_NAME ) --image=$(KIND_IMAGE ) --config=$(CLUSTER_CONFIG ) --kubeconfig=$(KUBECONFIG )
122124
123125load-hub-docker-image :
124- kind load docker-image --name $(HUB_KIND_CLUSTER_NAME ) $(REGISTRY ) /$(HUB_AGENT_IMAGE_NAME ) :$(HUB_AGENT_IMAGE_VERSION )
126+ kind load docker-image --name $(HUB_KIND_CLUSTER_NAME ) $(REGISTRY ) /$(HUB_AGENT_IMAGE_NAME ) :$(HUB_AGENT_IMAGE_VERSION )
125127
126128load-member-docker-image :
127- kind load docker-image --name $(MEMBER_KIND_CLUSTER_NAME ) $(REGISTRY ) /$(REFRESH_TOKEN_IMAGE_NAME ) :$(REFRESH_TOKEN_IMAGE_VERSION ) $(REGISTRY ) /$(MEMBER_AGENT_IMAGE_NAME ) :$(MEMBER_AGENT_IMAGE_VERSION )
129+ kind load docker-image --name $(MEMBER_KIND_CLUSTER_NAME ) $(REGISTRY ) /$(REFRESH_TOKEN_IMAGE_NAME ) :$(REFRESH_TOKEN_IMAGE_VERSION )
130+ kind load docker-image --name $(MEMBER_KIND_CLUSTER_NAME ) $(REGISTRY ) /$(MEMBER_AGENT_IMAGE_NAME ) :$(MEMBER_AGENT_IMAGE_VERSION )
128131
129132# # --------------------------------------
130133# # test
131134# # --------------------------------------
132135
133136.PHONY : test
134- test : manifests generate fmt vet local-unit-test integration-test# # Run tests.
137+ test : manifests generate fmt vet local-unit-test integration-test # # Run tests.
135138
136139# #
137140# # workaround to bypass the pkg/controllers/workv1alpha1 tests failure
@@ -148,26 +151,26 @@ integration-test: $(ENVTEST) ## Run tests.
148151 export CGO_ENABLED=1 && \
149152 export KUBEBUILDER_ASSETS=" $( shell $( ENVTEST) use $( ENVTEST_K8S_VERSION) -p path) " && \
150153 ginkgo -v -p --race --cover --coverpkg=./pkg/scheduler/... ./test/scheduler && \
151- ginkgo -v -p --race --cover --coverpkg=./... ./test/apis/... && \
154+ ginkgo -v -p --race --cover --coverpkg=./... ./test/apis/... ./test/crdinstaller && \
152155 go test ./test/integration/... -coverpkg=./... -race -coverprofile=it-coverage.xml -v
153156
154157# # local tests & e2e tests
155158
156159install-hub-agent-helm :
157160 kind export kubeconfig --name $(HUB_KIND_CLUSTER_NAME )
158161 helm install hub-agent ./charts/hub-agent/ \
159- --set image.pullPolicy=Never \
160- --set image.repository=$(REGISTRY)/$(HUB_AGENT_IMAGE_NAME) \
161- --set image.tag=$(HUB_AGENT_IMAGE_VERSION) \
162- --set logVerbosity=5 \
163- --set namespace=fleet-system \
164- --set enableWebhook=true \
165- --set webhookServiceName=fleetwebhook \
166- --set webhookClientConnectionType=service \
167- --set enableV1Alpha1APIs=true \
168- --set enableV1Beta1APIs=false \
169- --set enableClusterInventoryAPI=true \
170- --set logFileMaxSize=1000000
162+ --set image.pullPolicy=Never \
163+ --set image.repository=$(REGISTRY ) /$(HUB_AGENT_IMAGE_NAME ) \
164+ --set image.tag=$(HUB_AGENT_IMAGE_VERSION ) \
165+ --set logVerbosity=5 \
166+ --set namespace=fleet-system \
167+ --set enableWebhook=true \
168+ --set webhookServiceName=fleetwebhook \
169+ --set webhookClientConnectionType=service \
170+ --set enableV1Alpha1APIs=true \
171+ --set enableV1Beta1APIs=false \
172+ --set enableClusterInventoryAPI=true \
173+ --set logFileMaxSize=1000000
171174
172175.PHONY : e2e-v1alpha1-hub-kubeconfig-secret
173176e2e-v1alpha1-hub-kubeconfig-secret :
@@ -187,12 +190,13 @@ install-member-agent-helm: install-hub-agent-helm e2e-v1alpha1-hub-kubeconfig-se
187190 --set config.hubURL=$$ HUB_SERVER_URL \
188191 --set image.repository=$(REGISTRY ) /$(MEMBER_AGENT_IMAGE_NAME ) \
189192 --set image.tag=$(MEMBER_AGENT_IMAGE_VERSION ) \
190- --set refreshtoken.repository=$(REGISTRY)/$(REFRESH_TOKEN_IMAGE_NAME) \
191- --set refreshtoken.tag=$(REFRESH_TOKEN_IMAGE_VERSION) \
192- --set image.pullPolicy=Never --set refreshtoken.pullPolicy=Never \
193- --set config.memberClusterName="kind-$(MEMBER_KIND_CLUSTER_NAME)" \
194- --set logVerbosity=5 \
195- --set namespace=fleet-system
193+ --set refreshtoken.repository=$(REGISTRY ) /$(REFRESH_TOKEN_IMAGE_NAME ) \
194+ --set refreshtoken.tag=$(REFRESH_TOKEN_IMAGE_VERSION ) \
195+ --set image.pullPolicy=Never \
196+ --set refreshtoken.pullPolicy=Never \
197+ --set config.memberClusterName=" kind-$( MEMBER_KIND_CLUSTER_NAME) " \
198+ --set logVerbosity=5 \
199+ --set namespace=fleet-system
196200 # to make sure member-agent reads the token file.
197201 kubectl delete pod --all -n fleet-system
198202
@@ -206,7 +210,7 @@ run-e2e-v1alpha1: build-e2e-v1alpha1
206210create-kind-cluster : create-hub-kind-cluster create-member-kind-cluster install-helm
207211
208212.PHONY : install-helm
209- install-helm : load-hub-docker-image load-member-docker-image install-member-agent-helm
213+ install-helm : load-hub-docker-image load-member-docker-image install-member-agent-helm
210214
211215.PHONY : e2e-tests-v1alpha1
212216e2e-tests-v1alpha1 : create-kind-cluster run-e2e-v1alpha1
@@ -250,6 +254,7 @@ generate: $(CONTROLLER_GEN)
250254build : generate fmt vet # # Build agent binaries.
251255 go build -o bin/hubagent cmd/hubagent/main.go
252256 go build -o bin/memberagent cmd/memberagent/main.go
257+ go build -o bin/crdinstaller cmd/crdinstaller/main.go
253258
254259.PHONY : run-hubagent
255260run-hubagent : manifests generate fmt vet # # Run a controllers from your host.
@@ -259,6 +264,10 @@ run-hubagent: manifests generate fmt vet ## Run a controllers from your host.
259264run-memberagent : manifests generate fmt vet # # Run a controllers from your host.
260265 go run ./cmd/memberagent/main.go
261266
267+ .PHONY : run-crdinstaller
268+ run-crdinstaller : manifests generate fmt vet # # Run CRD installer from your host.
269+ go run ./cmd/crdinstaller/main.go --mode=$(MODE )
270+
262271# # --------------------------------------
263272# # Images
264273# # --------------------------------------
@@ -270,7 +279,7 @@ BUILDKIT_VERSION ?= v0.18.1
270279
271280.PHONY : push
272281push :
273- $(MAKE ) OUTPUT_TYPE=" type=registry" docker-build-hub-agent docker-build-member-agent docker-build-refresh-token
282+ $(MAKE ) OUTPUT_TYPE=" type=registry" docker-build-hub-agent docker-build-member-agent docker-build-refresh-token docker-build-crd-installer
274283
275284# By default, docker buildx create will pull image moby/buildkit:buildx-stable-1 and hit the too many requests error
276285.PHONY : docker-buildx-builder
@@ -308,6 +317,15 @@ docker-build-refresh-token: docker-buildx-builder
308317 --pull \
309318 --tag $(REGISTRY ) /$(REFRESH_TOKEN_IMAGE_NAME ) :$(REFRESH_TOKEN_IMAGE_VERSION ) .
310319
320+ .PHONY : docker-build-crd-installer
321+ docker-build-crd-installer : docker-buildx-builder
322+ docker buildx build \
323+ --file docker/crd-installer.Dockerfile \
324+ --output=$(OUTPUT_TYPE ) \
325+ --platform=" linux/amd64" \
326+ --pull \
327+ --tag $(REGISTRY ) /$(CRD_INSTALLER_IMAGE_NAME ) :$(CRD_INSTALLER_IMAGE_VERSION ) .
328+
311329# # -----------------------------------
312330# # Cleanup
313331# # -----------------------------------
0 commit comments