Skip to content

Commit a307065

Browse files
Upgrade project to use kustomize v4.5.5 and bump kubebuilder release 3.6.0 (#187)
1 parent bfc8643 commit a307065

File tree

18 files changed

+434
-308
lines changed

18 files changed

+434
-308
lines changed

Makefile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,13 @@ fix:
7171
lint:
7272
fetch golangci-lint 1.45.2 && golangci-lint run
7373

74+
.PHONY: fix
75+
fix: ## Fixup files in the repo.
76+
go mod tidy
77+
go fmt ./...
78+
make lint
79+
golangci-lint run --fix
80+
7481
.PHONY: release
7582
release: GORELEASER_ARGS ?= --snapshot --rm-dist --skip-sign
7683
release:

go.mod

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ require (
2020
github.com/stretchr/testify v1.7.1
2121
gomodules.xyz/jsonpatch/v2 v2.2.0
2222
helm.sh/helm/v3 v3.9.0
23-
k8s.io/api v0.24.0
24-
k8s.io/apiextensions-apiserver v0.24.0
25-
k8s.io/apimachinery v0.24.0
23+
k8s.io/api v0.24.2
24+
k8s.io/apiextensions-apiserver v0.24.2
25+
k8s.io/apimachinery v0.24.2
2626
k8s.io/cli-runtime v0.24.0
27-
k8s.io/client-go v0.24.0
27+
k8s.io/client-go v0.24.2
2828
k8s.io/kubectl v0.24.0
2929
k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9
30-
sigs.k8s.io/controller-runtime v0.12.1
31-
sigs.k8s.io/kubebuilder/v3 v3.0.0-alpha.0.0.20220613172611-57aed3f94a44
30+
sigs.k8s.io/controller-runtime v0.12.2
31+
sigs.k8s.io/kubebuilder/v3 v3.6.0
3232
sigs.k8s.io/yaml v1.3.0
3333
)
3434

@@ -174,12 +174,12 @@ require (
174174
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
175175
gopkg.in/yaml.v2 v2.4.0 // indirect
176176
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
177-
k8s.io/apiserver v0.24.0 // indirect
178-
k8s.io/component-base v0.24.0 // indirect
177+
k8s.io/apiserver v0.24.2 // indirect
178+
k8s.io/component-base v0.24.2 // indirect
179179
k8s.io/klog/v2 v2.60.1 // indirect
180180
k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42 // indirect
181181
oras.land/oras-go v1.1.0 // indirect
182-
sigs.k8s.io/controller-tools v0.9.0 // indirect
182+
sigs.k8s.io/controller-tools v0.9.2 // indirect
183183
sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 // indirect
184184
sigs.k8s.io/kustomize/api v0.11.4 // indirect
185185
sigs.k8s.io/kustomize/kyaml v0.13.6 // indirect

go.sum

Lines changed: 19 additions & 45 deletions
Large diffs are not rendered by default.

main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"fmt"
2121
"log"
2222
"runtime"
23+
kustomizev2alpha "sigs.k8s.io/kubebuilder/v3/pkg/plugins/common/kustomize/v2-alpha"
2324

2425
"github.com/spf13/cobra"
2526
"sigs.k8s.io/kubebuilder/v3/pkg/cli"
@@ -30,7 +31,6 @@ import (
3031
"github.com/operator-framework/helm-operator-plugins/internal/cmd/hybrid-operator/run"
3132
"github.com/operator-framework/helm-operator-plugins/internal/version"
3233
pluginv1alpha "github.com/operator-framework/helm-operator-plugins/pkg/plugins/hybrid/v1alpha"
33-
kustomizev1 "sigs.k8s.io/kubebuilder/v3/pkg/plugins/common/kustomize/v1"
3434
golangv3 "sigs.k8s.io/kubebuilder/v3/pkg/plugins/golang/v3"
3535
)
3636

@@ -65,7 +65,7 @@ func getVersion() string {
6565

6666
func getHybridPlugin() plugin.Bundle {
6767
hybridBundle, _ := plugin.NewBundle("hybrid", plugin.Version{Number: 1, Stage: stage.Alpha},
68-
kustomizev1.Plugin{},
68+
kustomizev2alpha.Plugin{},
6969
pluginv1alpha.Plugin{},
7070
)
7171
return hybridBundle

pkg/plugins/helm/v1/scaffolds/init.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package scaffolds
1919

2020
import (
2121
"os"
22+
kustomizev2alpha "sigs.k8s.io/kubebuilder/v3/pkg/plugins/common/kustomize/v2-alpha"
2223

2324
"github.com/operator-framework/helm-operator-plugins/internal/version"
2425
"github.com/operator-framework/helm-operator-plugins/pkg/plugins/helm/v1/chartutil"
@@ -29,12 +30,7 @@ import (
2930
"sigs.k8s.io/kubebuilder/v3/pkg/plugins"
3031
)
3132

32-
const (
33-
// kustomizeVersion is the sigs.k8s.io/kustomize version to be used in the project
34-
kustomizeVersion = "v3.8.7"
35-
36-
imageName = "controller:latest"
37-
)
33+
const imageName = "controller:latest"
3834

3935
// helmOperatorVersion is set to the version of helm-operator at compile-time.
4036
var helmOperatorVersion = mustGetScaffoldVersion()
@@ -79,7 +75,7 @@ func (s *initScaffolder) Scaffold() error {
7975
&templates.GitIgnore{},
8076
&templates.Makefile{
8177
Image: imageName,
82-
KustomizeVersion: kustomizeVersion,
78+
KustomizeVersion: kustomizev2alpha.KustomizeVersion,
8379
HelmOperatorVersion: helmOperatorVersion,
8480
},
8581
&templates.Watches{},

pkg/plugins/hybrid/v1alpha/init.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package v1alpha
1717
import (
1818
"fmt"
1919
"path/filepath"
20+
golangv3 "sigs.k8s.io/kubebuilder/v3/pkg/plugins/golang/v3/scaffolds"
2021

2122
"github.com/operator-framework/helm-operator-plugins/pkg/plugins/hybrid/v1alpha/scaffolds"
2223
projutil "github.com/operator-framework/helm-operator-plugins/pkg/plugins/util"
@@ -117,7 +118,7 @@ func (p *initSubcommand) Scaffold(fs machinery.Filesystem) error {
117118
// Ensure that we are pinning the controller-runtime version
118119
// xref: https://github.com/kubernetes-sigs/kubebuilder/issues/997
119120
err = util.RunCmd("Get controller runtime", "go", "get",
120-
"sigs.k8s.io/controller-runtime@"+scaffolds.ControllerRuntimeVersion)
121+
"sigs.k8s.io/controller-runtime@"+golangv3.ControllerRuntimeVersion)
121122
if err != nil {
122123
return err
123124
}

pkg/plugins/hybrid/v1alpha/scaffolds/init.go

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,12 @@ import (
3030
"sigs.k8s.io/kubebuilder/v3/pkg/machinery"
3131
"sigs.k8s.io/kubebuilder/v3/pkg/plugin/util"
3232
"sigs.k8s.io/kubebuilder/v3/pkg/plugins"
33+
34+
kustomizev2alpha "sigs.k8s.io/kubebuilder/v3/pkg/plugins/common/kustomize/v2-alpha"
35+
golangv3 "sigs.k8s.io/kubebuilder/v3/pkg/plugins/golang/v3/scaffolds"
3336
)
3437

3538
const (
36-
// ControllerRuntimeVersion is the kubernetes-sigs/controller-runtime version to be used in the project
37-
ControllerRuntimeVersion = "v0.12.1"
38-
// ControllerToolsVersion is the kubernetes-sigs/controller-tools version to be used in the project
39-
ControllerToolsVersion = "v0.9.0"
40-
// KustomizeVersion is the kubernetes-sigs/kustomize version to be used in the project
41-
KustomizeVersion = "v3.8.7"
42-
4339
imageName = "controller:latest"
4440

4541
// TODO: This is a placeholder for now. This would probably be the operator-sdk version
@@ -118,16 +114,16 @@ func (s *initScaffolder) Scaffold() error {
118114

119115
err = scaffold.Execute(
120116
&templates.Main{},
121-
&templates.GoMod{ControllerRuntimeVersion: ControllerRuntimeVersion},
117+
&templates.GoMod{ControllerRuntimeVersion: golangv3.ControllerRuntimeVersion},
122118
&templates.GitIgnore{},
123119
&templates.Watches{},
124120
&rbac.ManagerRole{},
125121
&templates.Makefile{
126122
Image: imageName,
127-
KustomizeVersion: KustomizeVersion,
123+
KustomizeVersion: kustomizev2alpha.KustomizeVersion,
128124
HybridOperatorVersion: hybridOperatorVersion,
129-
ControllerToolsVersion: ControllerToolsVersion,
130-
ControllerRuntimeVersion: ControllerRuntimeVersion,
125+
ControllerToolsVersion: golangv3.ControllerToolsVersion,
126+
ControllerRuntimeVersion: golangv3.ControllerRuntimeVersion,
131127
},
132128
&templates.Dockerfile{},
133129
&templates.DockerIgnore{},

pkg/plugins/hybrid/v1alpha/scaffolds/internal/templates/makefile.go

Lines changed: 71 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,8 @@ func (f *Makefile) SetTemplateDefaults() error {
7474
const makefileTemplate = `
7575
# Image URL to use all building/pushing image targets
7676
IMG ?= {{ .Image }}
77-
# Produce CRDs that work back to Kubernetes 1.11 (no version conversion)
78-
CRD_OPTIONS ?= "crd:trivialVersions=true,preserveUnknownFields=false"
7977
# ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary.
80-
ENVTEST_K8S_VERSION = 1.24
78+
ENVTEST_K8S_VERSION = 1.24.2
8179
8280
# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
8381
ifeq (,$(shell go env GOBIN))
@@ -87,11 +85,12 @@ GOBIN=$(shell go env GOBIN)
8785
endif
8886
8987
# Setting SHELL to bash allows bash commands to be executed by recipes.
90-
# This is a requirement for 'setup-envtest.sh' in the test target.
9188
# Options are set to exit when a recipe line exits non-zero or a piped command fails.
9289
SHELL = /usr/bin/env bash -o pipefail
9390
.SHELLFLAGS = -ec
9491
92+
.PHONY: all
93+
all: build
9594
9695
##@ General
9796
@@ -106,95 +105,99 @@ SHELL = /usr/bin/env bash -o pipefail
106105
# More info on the awk command:
107106
# http://linuxcommand.org/lc3_adv_awk.php
108107
108+
.PHONY: help
109109
help: ## Display this help.
110110
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
111111
112-
##@ Build
113-
114-
run: helm-operator ## Run against the configured Kubernetes cluster in ~/.kube/config
115-
$(HELM_OPERATOR) run
116-
117-
docker-build: ## Build docker image with the manager.
118-
docker build -t ${IMG} .
119-
120-
docker-push: ## Push docker image with the manager.
121-
docker push ${IMG}
122-
123112
##@ Development
124113
114+
.PHONY: manifests
125115
manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects.
126-
$(CONTROLLER_GEN) $(CRD_OPTIONS) rbac:roleName=manager-role webhook paths="./..." output:crd:artifacts:config=config/crd/bases
116+
$(CONTROLLER_GEN) rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases
127117
118+
.PHONY: generate
128119
generate: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.
129120
$(CONTROLLER_GEN) object:headerFile={{printf "%q" .BoilerplatePath}} paths="./..."
130121
122+
.PHONY: fmt
131123
fmt: ## Run go fmt against code.
132124
go fmt ./...
133125
126+
.PHONY: vet
134127
vet: ## Run go vet against code.
135128
go vet ./...
136129
130+
.PHONY: test
137131
test: manifests generate fmt vet envtest ## Run tests.
138132
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path)" go test ./... -coverprofile cover.out
133+
134+
135+
##@ Build
136+
.PHONY: run
137+
run: manifests generate fmt vet ## Run against the configured Kubernetes cluster in ~/.kube/config
138+
helm-operator
139+
$(HELM_OPERATOR) run
139140
141+
.PHONY: docker-build
142+
docker-build: test ## Build docker image with the manager.
143+
docker build -t ${IMG}
144+
145+
.PHONY: docker-push
146+
docker-push: ## Push docker image with the manager.
147+
docker push ${IMG}
148+
140149
##@ Deployment
141150
142-
install: kustomize ## Install CRDs into the K8s cluster specified in ~/.kube/config.
151+
ifndef ignore-not-found
152+
ignore-not-found = false
153+
endif
154+
155+
.PHONY: install
156+
install: manifests kustomize ## Install CRDs into the K8s cluster specified in ~/.kube/config.
143157
$(KUSTOMIZE) build config/crd | kubectl apply -f -
144158
145-
uninstall: kustomize ## Uninstall CRDs from the K8s cluster specified in ~/.kube/config.
146-
$(KUSTOMIZE) build config/crd | kubectl delete -f -
159+
.PHONY: uninstall
160+
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.
161+
$(KUSTOMIZE) build config/crd | kubectl delete --ignore-not-found=$(ignore-not-found) -f -
147162
148-
deploy: kustomize ## Deploy controller to the K8s cluster specified in ~/.kube/config.
163+
.PHONY: deploy
164+
deploy: manifests kustomize ## Deploy controller to the K8s cluster specified in ~/.kube/config.
149165
cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG}
150166
$(KUSTOMIZE) build config/default | kubectl apply -f -
151167
152-
undeploy: ## Undeploy controller from the K8s cluster specified in ~/.kube/config.
153-
$(KUSTOMIZE) build config/default | kubectl delete -f -
154-
155-
OS := $(shell uname -s | tr '[:upper:]' '[:lower:]')
156-
ARCH := $(shell uname -m | sed 's/x86_64/amd64/')
157-
158-
CONTROLLER_GEN = $(shell pwd)/bin/controller-gen
159-
controller-gen: ## Download controller-gen locally if necessary.
160-
$(call go-get-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/[email protected])
161-
162-
KUSTOMIZE = $(shell pwd)/bin/kustomize
163-
kustomize: ## Download kustomize locally if necessary.
164-
$(call go-get-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/[email protected])
165-
166-
ENVTEST = $(shell pwd)/bin/setup-envtest
167-
envtest: ## Download envtest-setup locally if necessary.
168-
$(call go-get-tool,$(ENVTEST),sigs.k8s.io/controller-runtime/tools/setup-envtest@latest)
169-
170-
# go-get-tool will 'go get' any package $2 and install it to $1.
171-
PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))
172-
define go-get-tool
173-
@[ -f $(1) ] || { \
174-
set -e ;\
175-
TMP_DIR=$$(mktemp -d) ;\
176-
cd $$TMP_DIR ;\
177-
go mod init tmp ;\
178-
echo "Downloading $(2)" ;\
179-
GOBIN=$(PROJECT_DIR)/bin go get $(2) && GOBIN=$(PROJECT_DIR)/bin go install $(2) ;\
180-
rm -rf $$TMP_DIR ;\
181-
}
182-
endef
183-
184-
.PHONY: helm-operator
185-
HELM_OPERATOR = $(shell pwd)/bin/helm-operator
186-
helm-operator: ## Download helm-operator locally if necessary, preferring the $(pwd)/bin path over global if both exist.
187-
ifeq (,$(wildcard $(HELM_OPERATOR)))
188-
ifeq (,$(shell which helm-operator 2>/dev/null))
189-
@{ \
190-
set -e ;\
191-
mkdir -p $(dir $(HELM_OPERATOR)) ;\
192-
curl -sSLo $(HELM_OPERATOR) https://github.com/operator-framework/operator-sdk/releases/download/v1.9.0/helm-operator_$(OS)_$(ARCH) ;\
193-
chmod +x $(HELM_OPERATOR) ;\
194-
}
195-
else
196-
HELM_OPERATOR = $(shell which helm-operator)
197-
endif
198-
endif
199-
168+
.PHONY: undeploy
169+
undeploy: ## Undeploy controller from the K8s cluster specified in ~/.kube/config. Call with ignore-not-found=true to ignore resource not found errors during deletion.
170+
$(KUSTOMIZE) build config/default | kubectl delete --ignore-not-found=$(ignore-not-found) -f -
171+
172+
##@ Build Dependencies
173+
174+
## Location to install dependencies to
175+
LOCALBIN ?= $(shell pwd)/bin
176+
$(LOCALBIN):
177+
mkdir -p $(LOCALBIN)
178+
179+
## Tool Binaries
180+
KUSTOMIZE ?= $(LOCALBIN)/kustomize
181+
CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen
182+
ENVTEST ?= $(LOCALBIN)/setup-envtest
183+
184+
## Tool Versions
185+
KUSTOMIZE_VERSION ?= {{ .KustomizeVersion }}
186+
CONTROLLER_TOOLS_VERSION ?= {{ .ControllerToolsVersion }}
187+
188+
KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"
189+
.PHONY: kustomize
190+
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary.
191+
$(KUSTOMIZE): $(LOCALBIN)
192+
test -s $(LOCALBIN)/kustomize || { curl -s $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN); }
193+
194+
.PHONY: controller-gen
195+
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary.
196+
$(CONTROLLER_GEN): $(LOCALBIN)
197+
test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
198+
199+
.PHONY: envtest
200+
envtest: $(ENVTEST) ## Download envtest-setup locally if necessary.
201+
$(ENVTEST): $(LOCALBIN)
202+
test -s $(LOCALBIN)/setup-envtest || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest
200203
`

0 commit comments

Comments
 (0)