Skip to content

Commit 8d73b15

Browse files
committed
🏃 parameterize controller-runtime/tools version
1 parent 6236ac2 commit 8d73b15

File tree

9 files changed

+45
-9
lines changed

9 files changed

+45
-9
lines changed

pkg/scaffold/project.go

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,13 @@ import (
3737
"sigs.k8s.io/kubebuilder/pkg/scaffold/v2/webhook"
3838
)
3939

40+
const (
41+
// controller runtime version to be used in the project
42+
controllerRuntimeVersion = "v0.2.0"
43+
// ControllerTools version to be used in the project
44+
controllerToolsVersion = "v0.2.0"
45+
)
46+
4047
type ProjectScaffolder interface {
4148
EnsureDependencies() (bool, error)
4249
Scaffold() error
@@ -147,11 +154,26 @@ func (p *V2Project) Validate() error {
147154
}
148155

149156
func (p *V2Project) EnsureDependencies() (bool, error) {
150-
c := exec.Command("go", "mod", "tidy") // #nosec
157+
// ensure that we are pinning controller-runtime version
158+
// xref: https://github.com/kubernetes-sigs/kubebuilder/issues/997
159+
c := exec.Command("go", "get", "sigs.k8s.io/controller-runtime@"+controllerRuntimeVersion) // #nosec
151160
c.Stderr = os.Stderr
152161
c.Stdout = os.Stdout
153162
fmt.Println(strings.Join(c.Args, " "))
154-
return true, c.Run()
163+
err := c.Run()
164+
if err != nil {
165+
return false, err
166+
}
167+
168+
c = exec.Command("go", "mod", "tidy") // #nosec
169+
c.Stderr = os.Stderr
170+
c.Stdout = os.Stdout
171+
fmt.Println(strings.Join(c.Args, " "))
172+
err = c.Run()
173+
if err != nil {
174+
return false, err
175+
}
176+
return true, err
155177
}
156178

157179
func (p *V2Project) buildUniverse() *model.Universe {
@@ -201,8 +223,8 @@ func (p *V2Project) Scaffold() error {
201223
&project.AuthProxyRoleBinding{},
202224
&managerv2.Config{Image: imgName},
203225
&scaffoldv2.Main{},
204-
&scaffoldv2.GoMod{},
205-
&scaffoldv2.Makefile{Image: imgName},
226+
&scaffoldv2.GoMod{ControllerRuntimeVersion: controllerRuntimeVersion},
227+
&scaffoldv2.Makefile{Image: imgName, ControllerToolsVersion: controllerToolsVersion},
206228
&scaffoldv2.Dockerfile{},
207229
&scaffoldv2.Kustomize{},
208230
&scaffoldv2.ManagerWebhookPatch{},

pkg/scaffold/v2/gomod.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ var _ input.File = &GoMod{}
2525
// GoMod writes a templatefile for go.mod
2626
type GoMod struct {
2727
input.Input
28+
ControllerRuntimeVersion string
2829
}
2930

3031
// GetInput implements input.File
@@ -43,6 +44,6 @@ module {{ .Repo }}
4344
go 1.12
4445
4546
require (
46-
sigs.k8s.io/controller-runtime v0.2.0
47+
sigs.k8s.io/controller-runtime {{ .ControllerRuntimeVersion }}
4748
)
4849
`

pkg/scaffold/v2/makefile.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ type Makefile struct {
2727
input.Input
2828
// Image is controller manager image name
2929
Image string
30+
// Controller tools version to use in the project
31+
ControllerToolsVersion string
3032
}
3133

3234
// GetInput implements input.File
@@ -106,7 +108,7 @@ docker-push:
106108
# download controller-gen if necessary
107109
controller-gen:
108110
ifeq (, $(shell which controller-gen))
109-
go get sigs.k8s.io/controller-tools/cmd/controller-gen@v0.2.0
111+
go get sigs.k8s.io/controller-tools/cmd/controller-gen@{{.ControllerToolsVersion}}
110112
CONTROLLER_GEN=$(GOBIN)/controller-gen
111113
else
112114
CONTROLLER_GEN=$(shell which controller-gen)

testdata/project-v2/Dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build -a -o manager
1919

2020
# Use distroless as minimal base image to package the manager binary
2121
# Refer to https://github.com/GoogleContainerTools/distroless for more details
22-
FROM gcr.io/distroless/static:latest
22+
FROM gcr.io/distroless/static:nonroot
2323
WORKDIR /
2424
COPY --from=builder /workspace/manager .
25+
USER nonroot:nonroot
26+
2527
ENTRYPOINT ["/manager"]

testdata/project-v2/api/v1/zz_generated.deepcopy.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

testdata/project-v2/config/crd/bases/crew.testproject.org_admirals.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ spec:
99
group: crew.testproject.org
1010
names:
1111
kind: Admiral
12+
listKind: AdmiralList
1213
plural: admirals
14+
singular: admiral
1315
scope: Cluster
1416
validation:
1517
openAPIV3Schema:
@@ -34,6 +36,7 @@ spec:
3436
description: AdmiralStatus defines the observed state of Admiral
3537
type: object
3638
type: object
39+
version: v1
3740
versions:
3841
- name: v1
3942
served: true

testdata/project-v2/config/crd/bases/crew.testproject.org_captains.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ spec:
99
group: crew.testproject.org
1010
names:
1111
kind: Captain
12+
listKind: CaptainList
1213
plural: captains
14+
singular: captain
1315
scope: ""
1416
validation:
1517
openAPIV3Schema:
@@ -34,6 +36,7 @@ spec:
3436
description: CaptainStatus defines the observed state of Captain
3537
type: object
3638
type: object
39+
version: v1
3740
versions:
3841
- name: v1
3942
served: true

testdata/project-v2/config/crd/bases/crew.testproject.org_firstmates.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ spec:
99
group: crew.testproject.org
1010
names:
1111
kind: FirstMate
12+
listKind: FirstMateList
1213
plural: firstmates
14+
singular: firstmate
1315
scope: ""
1416
validation:
1517
openAPIV3Schema:
@@ -34,6 +36,7 @@ spec:
3436
description: FirstMateStatus defines the observed state of FirstMate
3537
type: object
3638
type: object
39+
version: v1
3740
versions:
3841
- name: v1
3942
served: true

testdata/project-v2/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func main() {
5858
Scheme: scheme,
5959
MetricsBindAddress: metricsAddr,
6060
LeaderElection: enableLeaderElection,
61-
Port: 9843,
61+
Port: 9443,
6262
})
6363
if err != nil {
6464
setupLog.Error(err, "unable to start manager")

0 commit comments

Comments
 (0)