Skip to content

Commit 28d94fd

Browse files
committed
scaffold: add capability to generate typed go client; generate a helm chart; cleanup Makefile
1 parent cd89e56 commit 28d94fd

File tree

15 files changed

+635
-49
lines changed

15 files changed

+635
-49
lines changed

.github/workflows/run-tests.yaml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,19 @@ jobs:
7777
- name: Build generated operator
7878
run: |
7979
cd $RUNNER_TEMP/src
80-
make
80+
make build
81+
82+
- name: Test generated operator
83+
run: |
84+
cd $RUNNER_TEMP/src
85+
make test
86+
87+
- name: Validate generation of typed client
88+
run: |
89+
cd $RUNNER_TEMP/src
90+
make generate-client
91+
92+
- name: Validate docker build
93+
run: |
94+
cd $RUNNER_TEMP/src
95+
make docker-build

go.sum

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@ github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7Y
66
github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
77
github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA=
88
github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM=
9-
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
10-
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
11-
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
129
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
1310
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
1411
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
@@ -35,7 +32,6 @@ github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4
3532
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
3633
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
3734
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
38-
github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
3935
github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
4036
github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=
4137
github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
@@ -92,10 +88,8 @@ github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH
9288
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
9389
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
9490
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
95-
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
9691
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
9792
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
98-
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
9993
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
10094
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
10195
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
@@ -124,7 +118,6 @@ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/
124118
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4=
125119
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
126120
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
127-
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
128121
github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q=
129122
github.com/onsi/gomega v1.27.7 h1:fVih9JD6ogIiHUN6ePK7HJidyEDpWGVB5mzM7cWNXoU=
130123
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@@ -142,8 +135,6 @@ github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr
142135
github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI=
143136
github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY=
144137
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
145-
github.com/sap/go-generics v0.1.0 h1:KULBMVpCZsNkx9+gEAHRAauvMX2ZeIIJ4k2wrQnA1BI=
146-
github.com/sap/go-generics v0.1.0/go.mod h1:8L5jyDKi/FHKG/R+qwyy9h1TymA7XO5YSu+J/27gTCg=
147138
github.com/sap/go-generics v0.1.1 h1:3T4McSGF5epH8Yp4bbxD07oa5J0pH7Nfx4r4zwdsr4o=
148139
github.com/sap/go-generics v0.1.1/go.mod h1:8L5jyDKi/FHKG/R+qwyy9h1TymA7XO5YSu+J/27gTCg=
149140
github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
@@ -298,30 +289,18 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
298289
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
299290
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
300291
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
301-
k8s.io/api v0.27.2 h1:+H17AJpUMvl+clT+BPnKf0E3ksMAzoBBg7CntpSuADo=
302-
k8s.io/api v0.27.2/go.mod h1:ENmbocXfBT2ADujUXcBhHV55RIT31IIEvkntP6vZKS4=
303292
k8s.io/api v0.27.3 h1:yR6oQXXnUEBWEWcvPWS0jQL575KoAboQPfJAuKNrw5Y=
304293
k8s.io/api v0.27.3/go.mod h1:C4BNvZnQOF7JA/0Xed2S+aUyJSfTGkGFxLXz9MnpIpg=
305-
k8s.io/apiextensions-apiserver v0.27.2 h1:iwhyoeS4xj9Y7v8YExhUwbVuBhMr3Q4bd/laClBV6Bo=
306-
k8s.io/apiextensions-apiserver v0.27.2/go.mod h1:Oz9UdvGguL3ULgRdY9QMUzL2RZImotgxvGjdWRq6ZXQ=
307294
k8s.io/apiextensions-apiserver v0.27.3 h1:xAwC1iYabi+TDfpRhxh4Eapl14Hs2OftM2DN5MpgKX4=
308295
k8s.io/apiextensions-apiserver v0.27.3/go.mod h1:BH3wJ5NsB9XE1w+R6SSVpKmYNyIiyIz9xAmBl8Mb+84=
309-
k8s.io/apimachinery v0.27.2 h1:vBjGaKKieaIreI+oQwELalVG4d8f3YAMNpWLzDXkxeg=
310-
k8s.io/apimachinery v0.27.2/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E=
311296
k8s.io/apimachinery v0.27.3 h1:Ubye8oBufD04l9QnNtW05idcOe9Z3GQN8+7PqmuVcUM=
312297
k8s.io/apimachinery v0.27.3/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E=
313-
k8s.io/client-go v0.27.2 h1:vDLSeuYvCHKeoQRhCXjxXO45nHVv2Ip4Fe0MfioMrhE=
314-
k8s.io/client-go v0.27.2/go.mod h1:tY0gVmUsHrAmjzHX9zs7eCjxcBsf8IiNe7KQ52biTcQ=
315298
k8s.io/client-go v0.27.3 h1:7dnEGHZEJld3lYwxvLl7WoehK6lAq7GvgjxpA3nv1E8=
316299
k8s.io/client-go v0.27.3/go.mod h1:2MBEKuTo6V1lbKy3z1euEGnhPfGZLKTS9tiJ2xodM48=
317-
k8s.io/component-base v0.27.2 h1:neju+7s/r5O4x4/txeUONNTS9r1HsPbyoPBAtHsDCpo=
318-
k8s.io/component-base v0.27.2/go.mod h1:5UPk7EjfgrfgRIuDBFtsEFAe4DAvP3U+M8RTzoSJkpo=
319300
k8s.io/component-base v0.27.3 h1:g078YmdcdTfrCE4fFobt7qmVXwS8J/3cI1XxRi/2+6k=
320301
k8s.io/component-base v0.27.3/go.mod h1:JNiKYcGImpQ44iwSYs6dysxzR9SxIIgQalk4HaCNVUY=
321302
k8s.io/klog/v2 v2.90.1 h1:m4bYOKall2MmOiRaR1J+We67Do7vm9KiQVlT96lnHUw=
322303
k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
323-
k8s.io/kube-aggregator v0.27.2 h1:jfHoPip+qN/fn3OcrYs8/xMuVYvkJHKo0H0DYciqdns=
324-
k8s.io/kube-aggregator v0.27.2/go.mod h1:mwrTt4ESjQ7A6847biwohgZWn8P/KzSFHegEScbSGY4=
325304
k8s.io/kube-aggregator v0.27.3 h1:0o/Q30C84hHvhUef7OOTHMhO2eCySOPHKOUUrhBwpfo=
326305
k8s.io/kube-aggregator v0.27.3/go.mod h1:zbx67NbFee9cqjbXjib89/oOyrXdOq3UYStIBGazv08=
327306
k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f h1:2kWPakN3i/k81b0gvD5C5FJ2kxm1WrQFanWchyKuqGg=

scaffold/templates/Makefile.tpl

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,15 @@ IMG ?= {{ .image }}
33
# K8s version used by envtest
44
ENVTEST_K8S_VERSION = {{ .envtestKubernetesVersion }}
55

6-
# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
7-
ifeq (,$(shell go env GOBIN))
8-
GOBIN=$(shell go env GOPATH)/bin
9-
else
10-
GOBIN=$(shell go env GOBIN)
11-
endif
12-
13-
# Setting SHELL to bash allows bash commands to be executed by recipes.
14-
# Options are set to exit when a recipe line exits non-zero or a piped command fails.
15-
SHELL = /usr/bin/env bash -o pipefail
16-
.SHELLFLAGS = -ec
6+
# Set shell to bash
7+
SHELL = /usr/bin/env bash
8+
.SHELLFLAGS = -o pipefail -ec
179

1810
.PHONY: all
1911
all: build
2012

2113
##@ General
2214

23-
# The help target prints out all targets with their descriptions organized
24-
# beneath their categories. The categories are represented by '##@' and the
25-
# target descriptions by '##'. The awk command is responsible for reading the
26-
# entire set of makefiles included in this invocation, looking for lines of the
27-
# file as xyz: ## something, and then pretty-format the target and help. Then,
28-
# if there's a line with ##@ something, that gets pretty-printed as a category.
29-
# More info on the usage of ANSI control characters for terminal formatting:
30-
# https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters
31-
# More info on the awk command:
32-
# http://linuxcommand.org/lc3_adv_awk.php
33-
3415
.PHONY: help
3516
help: ## Display this help.
3617
@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)
@@ -39,12 +20,17 @@ help: ## Display this help.
3920

4021
.PHONY: manifests
4122
manifests: controller-gen ## Generate CustomResourceDefinition objects.
42-
$(CONTROLLER_GEN) crd paths="./api/..." output:crd:artifacts:config=crds
23+
$(CONTROLLER_GEN) crd paths="./api/..." output:crd:artifacts:config=crds ;\
24+
test ! -d chart || test -e chart/crds || ln -s ../crds chart/crds
4325

4426
.PHONY: generate
4527
generate: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.
4628
$(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./api/..."
4729

30+
.PHONY: generate-client
31+
generate-client: client-gen informer-gen lister-gen ## Generate typed client.
32+
./hack/genclient.sh
33+
4834
.PHONY: fmt
4935
fmt: ## Run go fmt against code.
5036
go fmt ./...
@@ -83,13 +69,10 @@ docker-push: ## Push docker image with the manager.
8369
PLATFORMS ?= linux/arm64,linux/amd64,linux/s390x,linux/ppc64le
8470
.PHONY: docker-buildx
8571
docker-buildx: ## Build and push docker image for the manager for cross-platform support.
86-
# copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile
87-
sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Dockerfile > Dockerfile.cross
8872
- docker buildx create --name project-v3-builder
8973
docker buildx use project-v3-builder
90-
- docker buildx build --push --platform=$(PLATFORMS) --tag ${IMG} -f Dockerfile.cross .
74+
- docker buildx build --push --platform=$(PLATFORMS) --tag ${IMG} .
9175
- docker buildx rm project-v3-builder
92-
rm Dockerfile.cross
9376

9477
##@ Build Dependencies
9578

@@ -100,17 +83,36 @@ $(LOCALBIN):
10083

10184
## Tool Binaries
10285
CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen
86+
CLIENT_GEN ?= $(LOCALBIN)/client-gen
87+
INFORMER_GEN ?= $(LOCALBIN)/informer-gen
88+
LISTER_GEN ?= $(LOCALBIN)/lister-gen
10389
SETUP_ENVTEST ?= $(LOCALBIN)/setup-envtest
10490

10591
## Tool Versions
10692
CONTROLLER_TOOLS_VERSION ?= v0.9.2
93+
CODE_GENERATOR_VERSION ?= v0.27.3
10794
SETUP_ENVTEST_VERSION ?= latest
10895

10996
.PHONY: controller-gen
11097
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary.
11198
$(CONTROLLER_GEN): $(LOCALBIN)
11299
test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
113100

101+
.PHONY: client-gen
102+
client-gen: $(CLIENT_GEN) ## Download client-gen locally if necessary.
103+
$(CLIENT_GEN): $(LOCALBIN)
104+
test -s $(LOCALBIN)/client-gen || GOBIN=$(LOCALBIN) go install k8s.io/code-generator/cmd/client-gen@$(CODE_GENERATOR_VERSION)
105+
106+
.PHONY: informer-gen
107+
informer-gen: $(INFORMER_GEN) ## Download informer-gen locally if necessary.
108+
$(INFORMER_GEN): $(LOCALBIN)
109+
test -s $(LOCALBIN)/informer-gen || GOBIN=$(LOCALBIN) go install k8s.io/code-generator/cmd/informer-gen@$(CODE_GENERATOR_VERSION)
110+
111+
.PHONY: lister-gen
112+
lister-gen: $(LISTER_GEN) ## Download lister-gen locally if necessary.
113+
$(LISTER_GEN): $(LOCALBIN)
114+
test -s $(LOCALBIN)/lister-gen || GOBIN=$(LOCALBIN) go install k8s.io/code-generator/cmd/lister-gen@$(CODE_GENERATOR_VERSION)
115+
114116
.PHONY: setup-envtest
115117
setup-envtest: $(SETUP_ENVTEST) ## Download setup-envtest locally if necessary.
116118
$(SETUP_ENVTEST): $(LOCALBIN)

scaffold/templates/api/__groupVersion__/groupversion_info.go.tpl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,12 @@ var (
3333

3434
// AddToScheme adds the types in this group-version to the given scheme.
3535
AddToScheme = SchemeBuilder.AddToScheme
36+
37+
// Needed by kubernetes/code-generator.
38+
SchemeGroupVersion = GroupVersion
3639
)
40+
41+
// Needed by kubernetes/code-generator.
42+
func Resource(resource string) schema.GroupResource {
43+
return GroupVersion.WithResource(resource).GroupResource()
44+
}

scaffold/templates/api/__groupVersion__/types.go.tpl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ type {{ .kind }}Status struct {
4545
// +kubebuilder:subresource:status
4646
// +kubebuilder:printcolumn:name="State",type=string,JSONPath=`.status.state`
4747
// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
48+
// +genclient
4849
4950
// {{ .kind }} is the Schema for the {{ .resource }} API.
5051
type {{ .kind }} struct {
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Patterns to ignore when building packages.
2+
# This supports shell glob matching, relative path matching, and
3+
# negation (prefixed with !). Only one pattern per line.
4+
.DS_Store
5+
# Common VCS dirs
6+
.git/
7+
.gitignore
8+
.bzr/
9+
.bzrignore
10+
.hg/
11+
.hgignore
12+
.svn/
13+
# Common backup files
14+
*.swp
15+
*.bak
16+
*.tmp
17+
*.orig
18+
*~
19+
# Various IDEs
20+
.project
21+
.idea/
22+
*.tmproj
23+
.vscode/
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
apiVersion: v2
2+
name: {{ .operatorName | splitList "." | first }}
3+
description: A Helm chart for https://{{ .goModule }}
4+
type: application
5+
version: 0.1.0
6+
appVersion: v0.1.0
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
{{- $operator := (splitList "." .operatorName | first) -}}
2+
{{`{{`}}/*
3+
Expand the name of the chart.
4+
*/{{`}}`}}
5+
{{`{{`}}- define "{{ $operator }}.name" -{{`}}`}}
6+
{{`{{`}}- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" {{`}}`}}
7+
{{`{{`}}- end {{`}}`}}
8+
9+
{{`{{`}}/*
10+
Create a default fully qualified app name.
11+
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
12+
If release name contains chart name it will be used as a full name.
13+
*/{{`}}`}}
14+
{{`{{`}}- define "{{ $operator }}.fullname" -{{`}}`}}
15+
{{`{{`}}- if .Values.fullnameOverride {{`}}`}}
16+
{{`{{`}}- .Values.fullnameOverride | trunc 63 | trimSuffix "-" {{`}}`}}
17+
{{`{{`}}- else {{`}}`}}
18+
{{`{{`}}- $name := default .Chart.Name .Values.nameOverride {{`}}`}}
19+
{{`{{`}}- if contains $name .Release.Name {{`}}`}}
20+
{{`{{`}}- .Release.Name | trunc 63 | trimSuffix "-" {{`}}`}}
21+
{{`{{`}}- else {{`}}`}}
22+
{{`{{`}}- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" {{`}}`}}
23+
{{`{{`}}- end {{`}}`}}
24+
{{`{{`}}- end {{`}}`}}
25+
{{`{{`}}- end {{`}}`}}
26+
27+
{{`{{`}}/*
28+
Create chart name and version as used by the chart label.
29+
*/{{`}}`}}
30+
{{`{{`}}- define "{{ $operator }}.chart" -{{`}}`}}
31+
{{`{{`}}- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" {{`}}`}}
32+
{{`{{`}}- end {{`}}`}}
33+
34+
{{`{{`}}/*
35+
Common labels
36+
*/{{`}}`}}
37+
{{`{{`}}- define "{{ $operator }}.labels" -{{`}}`}}
38+
helm.sh/chart: {{`{{`}} include "{{ $operator }}.chart" . {{`}}`}}
39+
{{`{{`}} include "{{ $operator }}.selectorLabels" . {{`}}`}}
40+
{{`{{`}}- if .Chart.AppVersion {{`}}`}}
41+
app.kubernetes.io/version: {{`{{`}} .Chart.AppVersion | quote {{`}}`}}
42+
{{`{{`}}- end {{`}}`}}
43+
app.kubernetes.io/managed-by: {{`{{`}} .Release.Service {{`}}`}}
44+
{{`{{`}}- end {{`}}`}}
45+
46+
{{`{{`}}/*
47+
Selector labels
48+
*/{{`}}`}}
49+
{{`{{`}}- define "{{ $operator }}.selectorLabels" -{{`}}`}}
50+
app.kubernetes.io/name: {{`{{`}} include "{{ $operator }}.name" . {{`}}`}}
51+
app.kubernetes.io/instance: {{`{{`}} .Release.Name {{`}}`}}
52+
{{`{{`}}- end {{`}}`}}

0 commit comments

Comments
 (0)