Skip to content

Commit c32bb53

Browse files
ppxlcesmarvin
authored andcommitted
Merge branch 'release/v3.9.0-2'
2 parents d9f6248 + e740b1a commit c32bb53

14 files changed

+347
-246
lines changed

.env.template

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export STAGE=development
2+
export LOG_LEVEL=debug
3+
export NAMESPACE=ecosystem
4+
5+
#export RUNTIME_ENV=remote

.gitignore

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,6 @@
88
/httpRequests/
99
integrationTests/node_modules
1010

11-
.bin
11+
.bin
12+
.env
13+
target

CHANGELOG.md

+8-1
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77
## [Unreleased]
88

9+
## [v3.9.0-2] - 2024-08-07
10+
### Changed
11+
- [#28] Upgrade base-image to v3.20.2-1
12+
13+
### Security
14+
- close CVE-2024-41110
15+
916
## [v3.9.0-1] - 2024-06-27
1017
### Changed
11-
- [#26] Upgraded alpine base image to `3.20.1-2`
18+
- [#26] Upgraded alpine base image to 3.20.1-2
1219

1320
## [v3.8.4-1] - 2023-12-27
1421
### Security

Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
FROM registry.cloudogu.com/official/base:3.20.1-2
1+
FROM registry.cloudogu.com/official/base:3.20.2-1
22
LABEL NAME="official/postfix" \
3-
VERSION="3.9.0-1" \
3+
VERSION="3.9.0-2" \
44
55

66
# INSTALL POSTFIX

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
MAKEFILES_VERSION=8.8.0
1+
MAKEFILES_VERSION=9.1.0
22

33
.DEFAULT_GOAL:=dogu-release
44

build/make/build.mk

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
ADDITIONAL_LDFLAGS?=-extldflags -static
44
LDFLAGS?=-ldflags "$(ADDITIONAL_LDFLAGS) -X main.Version=$(VERSION) -X main.CommitID=$(COMMIT_ID)"
55
GOIMAGE?=golang
6-
GOTAG?=1.14.13
6+
GOTAG?=1.22
77
GOOS?=linux
88
GOARCH?=amd64
99
PRE_COMPILE?=

build/make/k8s-component.mk

+96-83
Original file line numberDiff line numberDiff line change
@@ -1,142 +1,155 @@
1-
DEV_VERSION?=${VERSION}-dev
2-
## Image URL to use all building/pushing image targets
3-
IMAGE_DEV?=${K3CES_REGISTRY_URL_PREFIX}/${ARTIFACT_ID}:${DEV_VERSION}
1+
COMPONENT_DEV_VERSION?=${VERSION}-dev
42

5-
include $(WORKDIR)/build/make/k8s.mk
3+
include ${BUILD_DIR}/make/k8s.mk
64

7-
BINARY_HELM = $(UTILITY_BIN_PATH)/helm
8-
BINARY_HELM_VERSION?=v3.13.0
9-
BINARY_HELM_ADDITIONAL_PUSH_ARGS?=--plain-http
5+
ifeq (${RUNTIME_ENV}, local)
6+
BINARY_HELM_ADDITIONAL_PUSH_ARGS?=--plain-http
7+
endif
108
BINARY_HELM_ADDITIONAL_PACK_ARGS?=
119
BINARY_HELM_ADDITIONAL_UNINST_ARGS?=
1210
BINARY_HELM_ADDITIONAL_UPGR_ARGS?=
1311

14-
K8S_HELM_TARGET ?= $(K8S_RESOURCE_TEMP_FOLDER)/helm
15-
K8S_HELM_RESSOURCES ?= k8s/helm
16-
K8S_HELM_RELEASE_TGZ=${K8S_HELM_TARGET}/${ARTIFACT_ID}-${VERSION}.tgz
17-
K8S_HELM_DEV_RELEASE_TGZ=${K8S_HELM_TARGET}/${ARTIFACT_ID}-${DEV_VERSION}.tgz
18-
K8S_HELM_ARTIFACT_NAMESPACE?=k8s
12+
HELM_TARGET_DIR ?= $(K8S_RESOURCE_TEMP_FOLDER)/helm
13+
HELM_SOURCE_DIR ?= k8s/helm
14+
HELM_RELEASE_TGZ=${HELM_TARGET_DIR}/${ARTIFACT_ID}-${VERSION}.tgz
15+
HELM_DEV_RELEASE_TGZ=${HELM_TARGET_DIR}/${ARTIFACT_ID}-${COMPONENT_DEV_VERSION}.tgz
16+
HELM_ARTIFACT_NAMESPACE?=k8s
17+
ifeq (${RUNTIME_ENV}, remote)
18+
HELM_ARTIFACT_NAMESPACE?=testing/k8s
19+
endif
1920

2021
K8S_RESOURCE_COMPONENT ?= "${K8S_RESOURCE_TEMP_FOLDER}/component-${ARTIFACT_ID}-${VERSION}.yaml"
21-
K8S_RESOURCE_COMPONENT_CR_TEMPLATE_YAML ?= $(WORKDIR)/build/make/k8s-component.tpl
22+
K8S_RESOURCE_COMPONENT_CR_TEMPLATE_YAML ?= $(BUILD_DIR)/make/k8s-component.tpl
23+
# HELM_PRE_GENERATE_TARGETS allows to execute targets that affect Helm source files AND Helm target files.
24+
HELM_PRE_GENERATE_TARGETS ?=
25+
# HELM_POST_GENERATE_TARGETS allows to execute targets that only affect Helm target files.
26+
HELM_POST_GENERATE_TARGETS ?=
27+
HELM_PRE_APPLY_TARGETS ?=
28+
COMPONENT_PRE_APPLY_TARGETS ?=
29+
30+
# This can be used by components with own images to build and push to the dev registry.
31+
# These components should override this variable with `image-import`.
32+
IMAGE_IMPORT_TARGET?=
2233

2334
##@ K8s - Helm general
2435
.PHONY: helm-init-chart
2536
helm-init-chart: ${BINARY_HELM} ## Creates a Chart.yaml-template with zero values
26-
@echo "Initialize ${K8S_HELM_RESSOURCES}/Chart.yaml..."
27-
@mkdir -p ${K8S_HELM_RESSOURCES}/tmp/
28-
@${BINARY_HELM} create ${K8S_HELM_RESSOURCES}/tmp/${ARTIFACT_ID}
29-
@cp ${K8S_HELM_RESSOURCES}/tmp/${ARTIFACT_ID}/Chart.yaml ${K8S_HELM_RESSOURCES}/
30-
@rm -dr ${K8S_HELM_RESSOURCES}/tmp
31-
@sed -i 's/appVersion: ".*"/appVersion: "0.0.0-replaceme"/' ${K8S_HELM_RESSOURCES}/Chart.yaml
32-
@sed -i 's/version: .*/version: 0.0.0-replaceme/' ${K8S_HELM_RESSOURCES}/Chart.yaml
33-
34-
.PHONY: helm-generate-chart
35-
helm-generate-chart: k8s-generate ${K8S_HELM_TARGET}/Chart.yaml ## Generates the final helm chart.
36-
37-
.PHONY: ${K8S_HELM_TARGET}/Chart.yaml
38-
${K8S_HELM_TARGET}/Chart.yaml: $(K8S_RESOURCE_TEMP_FOLDER) k8s-generate helm-update-dependencies
39-
@echo "Generate helm chart..."
40-
@rm -drf ${K8S_HELM_TARGET} # delete folder, so the chart is newly created.
41-
@mkdir -p ${K8S_HELM_TARGET}/templates
42-
@cp $(K8S_RESOURCE_TEMP_YAML) ${K8S_HELM_TARGET}/templates
43-
@${BINARY_YQ} 'select(document_index != (select(.kind == "CustomResourceDefinition") | document_index))' $(K8S_RESOURCE_TEMP_YAML) > ${K8S_HELM_TARGET}/templates/$(ARTIFACT_ID)_$(VERSION).yaml # select all documents without the CRD
44-
@sed -i "s/'{{ .Namespace }}'/'{{ .Release.Namespace }}'/" ${K8S_HELM_TARGET}/templates/$(ARTIFACT_ID)_$(VERSION).yaml
45-
@cp -r ${K8S_HELM_RESSOURCES}/** ${K8S_HELM_TARGET}
37+
@echo "Initialize ${HELM_SOURCE_DIR}/Chart.yaml..."
38+
@mkdir -p ${HELM_SOURCE_DIR}/tmp/
39+
@${BINARY_HELM} create ${HELM_SOURCE_DIR}/tmp/${ARTIFACT_ID}
40+
@cp ${HELM_SOURCE_DIR}/tmp/${ARTIFACT_ID}/Chart.yaml ${HELM_SOURCE_DIR}/
41+
@rm -dr ${HELM_SOURCE_DIR}/tmp
42+
@sed -i 's/appVersion: ".*"/appVersion: "0.0.0-replaceme"/' ${HELM_SOURCE_DIR}/Chart.yaml
43+
@sed -i 's/version: .*/version: 0.0.0-replaceme/' ${HELM_SOURCE_DIR}/Chart.yaml
44+
45+
.PHONY: helm-generate
46+
helm-generate: ${HELM_TARGET_DIR}/Chart.yaml ${HELM_POST_GENERATE_TARGETS} ## Generates the final helm chart.
47+
48+
# this is phony because of it is easier this way than the makefile-single-run way
49+
.PHONY: ${HELM_TARGET_DIR}/Chart.yaml
50+
${HELM_TARGET_DIR}/Chart.yaml: $(K8S_RESOURCE_TEMP_FOLDER) validate-chart ${HELM_PRE_GENERATE_TARGETS} copy-helm-files
51+
@echo "Generate Helm chart..."
4652
@if [[ ${STAGE} == "development" ]]; then \
47-
sed -i 's/appVersion: "0.0.0-replaceme"/appVersion: '$(DEV_VERSION)'/' ${K8S_HELM_TARGET}/Chart.yaml; \
48-
sed -i 's/version: 0.0.0-replaceme/version: '$(DEV_VERSION)'/' ${K8S_HELM_TARGET}/Chart.yaml; \
53+
sed -i 's/appVersion: "0.0.0-replaceme"/appVersion: '$(COMPONENT_DEV_VERSION)'/' ${HELM_TARGET_DIR}/Chart.yaml; \
54+
sed -i 's/version: 0.0.0-replaceme/version: '$(COMPONENT_DEV_VERSION)'/' ${HELM_TARGET_DIR}/Chart.yaml; \
4955
else \
50-
sed -i 's/appVersion: "0.0.0-replaceme"/appVersion: "${VERSION}"/' ${K8S_HELM_TARGET}/Chart.yaml; \
51-
sed -i 's/version: 0.0.0-replaceme/version: ${VERSION}/' ${K8S_HELM_TARGET}/Chart.yaml; \
56+
sed -i 's/appVersion: "0.0.0-replaceme"/appVersion: "${VERSION}"/' ${HELM_TARGET_DIR}/Chart.yaml; \
57+
sed -i 's/version: 0.0.0-replaceme/version: ${VERSION}/' ${HELM_TARGET_DIR}/Chart.yaml; \
5258
fi
5359

54-
##@ K8s - Helm dev targets
60+
.PHONY: copy-helm-files
61+
copy-helm-files:
62+
@echo "Copying Helm files..."
63+
@rm -drf ${HELM_TARGET_DIR} # delete folder, so the chart is newly created.
64+
@mkdir -p ${HELM_TARGET_DIR}/templates
65+
@cp -r ${HELM_SOURCE_DIR}/** ${HELM_TARGET_DIR}
66+
67+
.PHONY: validate-chart
68+
validate-chart:
69+
@if [ ! -f ${HELM_SOURCE_DIR}/Chart.yaml ] ; then \
70+
echo "Could not find source Helm chart under \$${HELM_SOURCE_DIR}/Chart.yaml" ; \
71+
exit 22 ; \
72+
fi
5573

56-
.PHONY: helm-generate
57-
helm-generate: helm-generate-chart ## Generates the final helm chart with dev-urls.
74+
.PHONY: helm-update-dependencies
75+
helm-update-dependencies: ${BINARY_HELM} ## Update Helm chart dependencies
76+
@$(BINARY_HELM) dependency update "${HELM_SOURCE_DIR}"
77+
78+
##@ K8s - Helm dev targets
5879

5980
.PHONY: helm-apply
60-
helm-apply: ${BINARY_HELM} check-k8s-namespace-env-var $(PRE_APPLY_TARGETS) helm-generate $(K8S_POST_GENERATE_TARGETS) ## Generates and installs the helm chart.
81+
helm-apply: ${BINARY_HELM} check-k8s-namespace-env-var ${IMAGE_IMPORT_TARGET} helm-generate ${HELM_PRE_APPLY_TARGETS} ## Generates and installs the Helm chart.
6182
@echo "Apply generated helm chart"
62-
@${BINARY_HELM} upgrade -i ${ARTIFACT_ID} ${K8S_HELM_TARGET} ${BINARY_HELM_ADDITIONAL_UPGR_ARGS} --namespace ${NAMESPACE}
83+
@${BINARY_HELM} --kube-context="${KUBE_CONTEXT_NAME}" upgrade -i ${ARTIFACT_ID} ${HELM_TARGET_DIR} ${BINARY_HELM_ADDITIONAL_UPGR_ARGS} --namespace ${NAMESPACE}
6384

6485
.PHONY: helm-delete
65-
helm-delete: ${BINARY_HELM} check-k8s-namespace-env-var ## Uninstalls the current helm chart.
86+
helm-delete: ${BINARY_HELM} check-k8s-namespace-env-var ## Uninstalls the current Helm chart.
6687
@echo "Uninstall helm chart"
67-
@${BINARY_HELM} uninstall ${ARTIFACT_ID} --namespace=${NAMESPACE} ${BINARY_HELM_ADDITIONAL_UNINST_ARGS} || true
88+
@${BINARY_HELM} --kube-context="${KUBE_CONTEXT_NAME}" uninstall ${ARTIFACT_ID} --namespace=${NAMESPACE} ${BINARY_HELM_ADDITIONAL_UNINST_ARGS} || true
6889

6990
.PHONY: helm-reinstall
7091
helm-reinstall: helm-delete helm-apply ## Uninstalls the current helm chart and reinstalls it.
7192

7293
.PHONY: helm-chart-import
73-
helm-chart-import: check-all-vars check-k8s-artifact-id helm-generate-chart helm-package-release ## Imports the currently available chart into the cluster-local registry.
94+
helm-chart-import: ${CHECK_VAR_TARGETS} helm-generate helm-package ${IMAGE_IMPORT_TARGET} ## Imports the currently available chart into the cluster-local registry.
7495
@if [[ ${STAGE} == "development" ]]; then \
75-
echo "Import ${K8S_HELM_DEV_RELEASE_TGZ} into K8s cluster ${K3CES_REGISTRY_URL_PREFIX}..."; \
76-
${BINARY_HELM} push ${K8S_HELM_DEV_RELEASE_TGZ} oci://${K3CES_REGISTRY_URL_PREFIX}/${K8S_HELM_ARTIFACT_NAMESPACE} ${BINARY_HELM_ADDITIONAL_PUSH_ARGS}; \
96+
echo "Import ${HELM_DEV_RELEASE_TGZ} into K8s cluster ${CES_REGISTRY_HOST}..."; \
97+
${BINARY_HELM} push ${HELM_DEV_RELEASE_TGZ} oci://${CES_REGISTRY_HOST}/${HELM_ARTIFACT_NAMESPACE} ${BINARY_HELM_ADDITIONAL_PUSH_ARGS}; \
7798
else \
78-
echo "Import ${K8S_HELM_RELEASE_TGZ} into K8s cluster ${K3CES_REGISTRY_URL_PREFIX}..."; \
79-
${BINARY_HELM} push ${K8S_HELM_RELEASE_TGZ} oci://${K3CES_REGISTRY_URL_PREFIX}/${K8S_HELM_ARTIFACT_NAMESPACE} ${BINARY_HELM_ADDITIONAL_PUSH_ARGS}; \
99+
echo "Import ${HELM_RELEASE_TGZ} into K8s cluster ${CES_REGISTRY_HOST}..."; \
100+
${BINARY_HELM} push ${HELM_RELEASE_TGZ} oci://${CES_REGISTRY_HOST}/${HELM_ARTIFACT_NAMESPACE} ${BINARY_HELM_ADDITIONAL_PUSH_ARGS}; \
80101
fi
81102
@echo "Done."
82103

83104
##@ K8s - Helm release targets
84105

85106
.PHONY: helm-generate-release
86-
helm-generate-release: ${K8S_HELM_TARGET}/templates/$(ARTIFACT_ID)_$(VERSION).yaml ## Generates the final helm chart with release urls.
107+
helm-generate-release: update-urls ## Generates the final helm chart with release URLs.
87108

88-
${K8S_HELM_TARGET}/templates/$(ARTIFACT_ID)_$(VERSION).yaml: $(K8S_PRE_GENERATE_TARGETS) ${K8S_HELM_TARGET}/Chart.yaml
89-
@sed -i "s/'{{ .Namespace }}'/'{{ .Release.Namespace }}'/" ${K8S_HELM_TARGET}/templates/$(ARTIFACT_ID)_$(VERSION).yaml
90109

91-
.PHONY: helm-package-release
92-
helm-package-release: ${BINARY_HELM} helm-delete-existing-tgz ${K8S_HELM_RELEASE_TGZ} ## Generates and packages the helm chart with release urls.
110+
.PHONY: helm-package
111+
helm-package: helm-delete-existing-tgz ${HELM_RELEASE_TGZ} ## Generates and packages the helm chart with release URLs.
112+
113+
${HELM_RELEASE_TGZ}: ${BINARY_HELM} ${HELM_TARGET_DIR}/Chart.yaml ${HELM_POST_GENERATE_TARGETS} ## Generates and packages the helm chart with release URLs.
114+
@echo "Package generated helm chart"
115+
@if [[ ${STAGE} == "development" ]]; then \
116+
echo "WARNING: You are using a development environment" ; \
117+
fi
118+
@${BINARY_HELM} package ${HELM_TARGET_DIR} -d ${HELM_TARGET_DIR} ${BINARY_HELM_ADDITIONAL_PACK_ARGS}
93119

94120
.PHONY: helm-delete-existing-tgz
95-
helm-delete-existing-tgz: ## Remove an existing Helm package.
96-
# remove
97-
@rm -f ${K8S_HELM_RELEASE_TGZ}*
121+
helm-delete-existing-tgz: ## Remove an existing Helm package from the target directory.
122+
@echo "Delete ${HELM_RELEASE_TGZ}*"
123+
@rm -f ${HELM_TARGET_DIR}/${ARTIFACT_ID}-*.tgz
98124

99-
${K8S_HELM_RELEASE_TGZ}: ${BINARY_HELM} ${K8S_HELM_TARGET}/templates/$(ARTIFACT_ID)_$(VERSION).yaml helm-generate-chart $(K8S_POST_GENERATE_TARGETS) ## Generates and packages the helm chart with release urls.
100-
@echo "Package generated helm chart"
101-
@${BINARY_HELM} package ${K8S_HELM_TARGET} -d ${K8S_HELM_TARGET} ${BINARY_HELM_ADDITIONAL_PACK_ARGS}
125+
##@ K8s - Helm lint targets
102126

103-
${BINARY_HELM}: $(UTILITY_BIN_PATH) ## Download helm locally if necessary.
104-
$(call go-get-tool,$(BINARY_HELM),helm.sh/helm/v3/cmd/helm@${BINARY_HELM_VERSION})
127+
.PHONY: helm-lint
128+
helm-lint: $(BINARY_HELM) helm-generate
129+
@$(BINARY_HELM) lint "${HELM_TARGET_DIR}"
105130

106131
##@ K8s - Component dev targets
107132

108133
.PHONY: component-generate
109-
component-generate: ${K8S_RESOURCE_TEMP_FOLDER} ${BINARY_YQ} ## Generate the component yaml resource.
110-
@echo "Generating temporary K8s component resource: $'{K8S_RESOURCE_COMPONENT}"
111-
@cp "${K8S_RESOURCE_COMPONENT_CR_TEMPLATE_YAML}" "${K8S_RESOURCE_COMPONENT}"
112-
@$(BINARY_YQ) -i ".metadata.name = \"$(ARTIFACT_ID)\"" "${K8S_RESOURCE_COMPONENT}"
113-
@$(BINARY_YQ) -i ".spec.namespace = \"$(K8S_HELM_ARTIFACT_NAMESPACE)\"" "${K8S_RESOURCE_COMPONENT}"
114-
@$(BINARY_YQ) -i ".spec.name = \"$(ARTIFACT_ID)\"" "${K8S_RESOURCE_COMPONENT}"
134+
component-generate: ${K8S_RESOURCE_COMPONENT_CR_TEMPLATE_YAML} ${COMPONENT_POST_GENERATE_TARGETS} ## Generate the component yaml resource.
135+
136+
${K8S_RESOURCE_COMPONENT_CR_TEMPLATE_YAML}: ${K8S_RESOURCE_TEMP_FOLDER}
137+
@echo "Generating temporary K8s component resource: ${K8S_RESOURCE_COMPONENT}"
115138
@if [[ ${STAGE} == "development" ]]; then \
116-
$(BINARY_YQ) -i ".spec.version = \"$(DEV_VERSION)\"" "${K8S_RESOURCE_COMPONENT}"; \
139+
sed "s|NAMESPACE|$(HELM_ARTIFACT_NAMESPACE)|g" "${K8S_RESOURCE_COMPONENT_CR_TEMPLATE_YAML}" | sed "s|NAME|$(ARTIFACT_ID)|g" | sed "s|VERSION|$(COMPONENT_DEV_VERSION)|g" > "${K8S_RESOURCE_COMPONENT}"; \
117140
else \
118-
$(BINARY_YQ) -i ".spec.version = \"$(VERSION)\"" "${K8S_RESOURCE_COMPONENT}"; \
119-
fi
120-
@if [[ -n "${COMPONENT_DEPLOY_NAMESPACE}" ]]; then \
121-
$(BINARY_YQ) -i ".spec.deployNamespace = \"$(COMPONENT_DEPLOY_NAMESPACE)\"" "${K8S_RESOURCE_COMPONENT}"; \
141+
sed "s|NAMESPACE|$(HELM_ARTIFACT_NAMESPACE)|g" "${K8S_RESOURCE_COMPONENT_CR_TEMPLATE_YAML}" | sed "s|NAME|$(ARTIFACT_ID)|g" | sed "s|VERSION|$(VERSION)|g" > "${K8S_RESOURCE_COMPONENT}"; \
122142
fi
123143

124144
.PHONY: component-apply
125-
component-apply: check-k8s-namespace-env-var $(PRE_APPLY_TARGETS) helm-generate helm-chart-import component-generate $(K8S_POST_GENERATE_TARGETS) ## Applies the component yaml resource to the actual defined context.
126-
@kubectl apply -f "${K8S_RESOURCE_COMPONENT}" --namespace="${NAMESPACE}"
145+
component-apply: check-k8s-namespace-env-var ${COMPONENT_PRE_APPLY_TARGETS} ${IMAGE_IMPORT_TARGET} helm-generate helm-chart-import component-generate ## Applies the component yaml resource to the actual defined context.
146+
@kubectl apply -f "${K8S_RESOURCE_COMPONENT}" --namespace="${NAMESPACE}" --context="${KUBE_CONTEXT_NAME}"
127147
@echo "Done."
128148

129149
.PHONY: component-delete
130150
component-delete: check-k8s-namespace-env-var component-generate $(K8S_POST_GENERATE_TARGETS) ## Deletes the component yaml resource from the actual defined context.
131-
@kubectl delete -f "${K8S_RESOURCE_COMPONENT}" --namespace="${NAMESPACE}" || true
151+
@kubectl delete -f "${K8S_RESOURCE_COMPONENT}" --namespace="${NAMESPACE}" --context="${KUBE_CONTEXT_NAME}" || true
132152
@echo "Done."
133153

134154
.PHONY: component-reinstall
135155
component-reinstall: component-delete component-apply ## Reinstalls the component yaml resource from the actual defined context.
136-
137-
.PHONY: helm-update-dependencies
138-
helm-update-dependencies: ${BINARY_HELM}
139-
@$(BINARY_HELM) dependency update "${K8S_HELM_RESSOURCES}"
140-
141-
.PHONY: install-helm
142-
install-helm: ${BINARY_HELM}

build/make/k8s-controller.mk

+9-44
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,6 @@
1-
# This script can be used to build and deploy kubernetes controllers. It is required to implement the controller
2-
# specific targets `manifests` and `generate`:
3-
#
4-
# Examples:
5-
#
6-
#.PHONY: manifests
7-
#manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects.
8-
# @echo "Generate manifests..."
9-
# @$(CONTROLLER_GEN) rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases
10-
#
11-
#.PHONY: generate
12-
#generate: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.
13-
# @echo "Auto-generate deepcopy functions..."
14-
# @$(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..."
15-
161
# This script requires the k8s.mk script
17-
include $(WORKDIR)/build/make/k8s-component.mk
18-
include $(WORKDIR)/build/make/k8s-crd.mk
2+
include ${BUILD_DIR}/make/k8s-component.mk
3+
include ${BUILD_DIR}/make/k8s-crd.mk
194

205
## Variables
216

@@ -50,7 +35,7 @@ build-controller: ${SRC} compile ## Builds the controller Go binary.
5035
# Allows to perform tasks before locally running the controller
5136
K8S_RUN_PRE_TARGETS ?=
5237
.PHONY: run
53-
run: manifests generate $(K8S_RUN_PRE_TARGETS) ## Run a controller from your host.
38+
run: generate-deepcopy $(K8S_RUN_PRE_TARGETS) ## Run a controller from your host.
5439
go run -ldflags "-X main.Version=$(VERSION)" ./main.go
5540

5641
##@ K8s - Integration test with envtest
@@ -59,33 +44,13 @@ $(K8S_INTEGRATION_TEST_DIR):
5944
@mkdir -p $@
6045

6146
.PHONY: k8s-integration-test
62-
k8s-integration-test: $(K8S_INTEGRATION_TEST_DIR) manifests generate envtest ## Run k8s integration tests.
47+
k8s-integration-test: $(K8S_INTEGRATION_TEST_DIR) ${ENVTEST} ## Run k8s integration tests.
6348
@echo "Running K8s integration tests..."
6449
@KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path)" go test -tags=k8s_integration ./... -coverprofile ${K8S_INTEGRATION_TEST_DIR}/report-k8s-integration.out
6550

66-
##@ K8s - Controller Resource
67-
68-
# The pre generation script creates a K8s resource yaml containing generated manager yaml.
69-
.PHONY: k8s-create-temporary-resource
70-
k8s-create-temporary-resource: $(K8S_RESOURCE_TEMP_FOLDER) manifests kustomize
71-
@echo "Generating temporary k8s resources $(K8S_RESOURCE_TEMP_YAML)..."
72-
cd $(WORKDIR)/config/manager && $(KUSTOMIZE) edit set image controller=$(IMAGE)
73-
$(KUSTOMIZE) build config/default > $(K8S_RESOURCE_TEMP_YAML)
74-
@echo "Done."
75-
76-
##@ K8s - Download Kubernetes Utility Tools
77-
78-
CONTROLLER_GEN = $(UTILITY_BIN_PATH)/controller-gen
79-
.PHONY: controller-gen
80-
controller-gen: ## Download controller-gen locally if necessary.
81-
$(call go-get-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/[email protected])
82-
83-
KUSTOMIZE = $(UTILITY_BIN_PATH)/kustomize
84-
.PHONY: kustomize
85-
kustomize: ## Download kustomize locally if necessary.
86-
$(call go-get-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/[email protected])
51+
##@ Controller specific targets
8752

88-
ENVTEST = $(UTILITY_BIN_PATH)/setup-envtest
89-
.PHONY: envtest
90-
envtest: ## Download envtest-setup locally if necessary.
91-
$(call go-get-tool,$(ENVTEST),sigs.k8s.io/controller-runtime/tools/setup-envtest@latest)
53+
.PHONY: generate-deepcopy
54+
generate-deepcopy: ${CONTROLLER_GEN} ## Generate code containing DeepCopy* method implementations.
55+
@echo "Auto-generate deepcopy functions..."
56+
@$(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..."

0 commit comments

Comments
 (0)