Skip to content

Commit 22c3ccf

Browse files
authored
Bump operator-sdk to 1.17 (#692)
* Bump operator-sdk to 1.14 * Remove admissionregistration.k8s.io/v1beta1 removed from 1.22, v1 was added in 1.16 * Remove crd:trivialVersions=true,preserveUnknownFields=false" that produce CRDs compatible with 1.11 Signed-off-by: Pavol Loffay <[email protected]> * Bump operator-sdk to 1.17.0 Signed-off-by: Pavol Loffay <[email protected]> * Fix Signed-off-by: Pavol Loffay <[email protected]> * remove wait Signed-off-by: Pavol Loffay <[email protected]> * fix lint Signed-off-by: Pavol Loffay <[email protected]> * Add phony Signed-off-by: Pavol Loffay <[email protected]> * install tools only to ./bin Signed-off-by: Pavol Loffay <[email protected]> * use go install Signed-off-by: Pavol Loffay <[email protected]> * guide Signed-off-by: Pavol Loffay <[email protected]> * remove ech Signed-off-by: Pavol Loffay <[email protected]> * remvoe deprecation Signed-off-by: Pavol Loffay <[email protected]> * Remove comment Signed-off-by: Pavol Loffay <[email protected]>
1 parent e8d6f8b commit 22c3ccf

24 files changed

+583
-357
lines changed

.github/workflows/continuous-integration.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727

2828
- uses: jpkrohling/[email protected]
2929
with:
30-
operator-sdk-version: v1.13.1
30+
operator-sdk-version: v1.17.0
3131

3232
- name: "basic checks"
3333
run: make ci

.github/workflows/release.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323

2424
- uses: jpkrohling/[email protected]
2525
with:
26-
operator-sdk-version: v1.13.1
26+
operator-sdk-version: v1.17.0
2727

2828
- name: "generate release resources"
2929
run: make release-artifacts IMG_PREFIX="ghcr.io/open-telemetry/opentelemetry-operator"

.github/workflows/scorecard.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141

4242
- uses: jpkrohling/[email protected]
4343
with:
44-
operator-sdk-version: v1.13.1
44+
operator-sdk-version: v1.17.0
4545

4646
- name: "run scorecard test"
4747
run: make scorecard-tests

CONTRIBUTING.md

+11
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,17 @@ USE_EXISTING_CLUSTER=true make test
8888

8989
Tests can also be run without an existing cluster. For that, install [`kubebuilder`](https://book.kubebuilder.io/quick-start.html#installation). In this case, the tests will bootstrap `etcd` and `kubernetes-api-server` for the tests. Run against an existing cluster whenever possible, though.
9090

91+
### Unit tests
92+
93+
Some unit tests use [envtest](https://book.kubebuilder.io/reference/envtest.html) which requires Kubernetes binaries (e.g. `api-server`, `etcd` and `kubectl`) to be present on the host filesystem. Makefile takes care of installing all dependent binaries, however running the tests from IDE or via `go test` might not work out-of-the-box. The `envtest` uses env variable `KUBEBUILDER_ASSETS` that points to a directory with these binaries. To make the test work in IDE or `go test` the environment variable has to be correctly set.
94+
95+
Example how to run test that use `envtest`:
96+
97+
```bash
98+
make envtest
99+
KUBEBUILDER_ASSETS=$(./bin/setup-envtest use -p path 1.23) go test ./pkg...
100+
```
101+
91102
### End to end tests
92103

93104
To run the end-to-end tests, you'll need [`kind`](https://kind.sigs.k8s.io) and [`kuttl`](https://kuttl.dev). Refer to their documentation for installation instructions.

Makefile

+89-60
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ BUNDLE_DEFAULT_CHANNEL := --default-channel=$(DEFAULT_CHANNEL)
2525
endif
2626
BUNDLE_METADATA_OPTS ?= $(BUNDLE_CHANNELS) $(BUNDLE_DEFAULT_CHANNEL)
2727

28-
# Produce CRDs that work back to Kubernetes 1.11 (no version conversion)
29-
CRD_OPTIONS ?= "crd:trivialVersions=true,preserveUnknownFields=false,generateEmbeddedObjectMeta=true"
28+
CRD_OPTIONS ?= "crd:generateEmbeddedObjectMeta=true"
3029

3130
# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
3231
ifeq (,$(shell go env GOBIN))
@@ -50,6 +49,11 @@ KIND_CONFIG ?= kind-$(KUBE_VERSION).yaml
5049

5150
CERTMANAGER_VERSION ?= 1.6.1
5251

52+
ifndef ignore-not-found
53+
ignore-not-found = false
54+
endif
55+
56+
.PHONY: ensure-generate-is-noop
5357
ensure-generate-is-noop: VERSION=$(OPERATOR_VERSION)
5458
ensure-generate-is-noop: USER=open-telemetry
5559
ensure-generate-is-noop: set-image-controller generate bundle
@@ -59,138 +63,173 @@ ensure-generate-is-noop: set-image-controller generate bundle
5963
@git diff -s --exit-code bundle config || (echo "Build failed: the bundle, config files has been changed but the generated bundle, config files aren't up to date. Run 'make bundle' and update your PR." && git diff && exit 1)
6064
@git diff -s --exit-code docs/api.md || (echo "Build failed: the api.md file has been changed but the generated api.md file isn't up to date. Run 'make api-docs' and update your PR." && git diff && exit 1)
6165

66+
.PHONY: all
6267
all: manager
68+
.PHONY: ci
6369
ci: test
6470

6571
# Run tests
66-
test: generate fmt vet ensure-generate-is-noop
67-
go test ${GOTEST_OPTS} ./...
72+
# setup-envtest uses KUBEBUILDER_ASSETS which points to a directory with binaries (api-server, etcd and kubectl)
73+
.PHONY: test
74+
test: generate fmt vet ensure-generate-is-noop envtest
75+
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(KUBE_VERSION) -p path)" go test ${GOTEST_OPTS} ./...
6876

6977
# Build manager binary
78+
.PHONY: manager
7079
manager: generate fmt vet
7180
go build -o bin/manager main.go
7281

7382
# Run against the configured Kubernetes cluster in ~/.kube/config
83+
.PHONY: run
7484
run: generate fmt vet manifests
7585
ENABLE_WEBHOOKS=$(ENABLE_WEBHOOKS) go run -ldflags ${LD_FLAGS} ./main.go --zap-devel
7686

7787
# Install CRDs into a cluster
88+
.PHONY: install
7889
install: manifests kustomize
7990
$(KUSTOMIZE) build config/crd | kubectl apply -f -
8091

8192
# Uninstall CRDs from a cluster
93+
.PHONY: uninstall
8294
uninstall: manifests kustomize
83-
$(KUSTOMIZE) build config/crd | kubectl delete -f -
95+
$(KUSTOMIZE) build config/crd | kubectl delete --ignore-not-found=$(ignore-not-found) -f -
8496

8597
# Set the controller image parameters
98+
.PHONY: set-image-controller
8699
set-image-controller: manifests kustomize
87100
cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG}
88101

89102
# Deploy controller in the current Kubernetes context, configured in ~/.kube/config
103+
.PHONY: deploy
90104
deploy: set-image-controller
91105
$(KUSTOMIZE) build config/default | kubectl apply -f -
92106

93107
# Undeploy controller in the current Kubernetes context, configured in ~/.kube/config
108+
.PHONY: undeploy
94109
undeploy: set-image-controller
95-
$(KUSTOMIZE) build config/default | kubectl delete -f -
110+
$(KUSTOMIZE) build config/default | kubectl delete --ignore-not-found=$(ignore-not-found) -f -
96111

97112
# Generates the released manifests
113+
.PHONY: release-artifacts
98114
release-artifacts: set-image-controller
99115
mkdir -p dist
100116
$(KUSTOMIZE) build config/default -o dist/opentelemetry-operator.yaml
101117

102118
# Generate manifests e.g. CRD, RBAC etc.
119+
.PHONY: manifests
103120
manifests: controller-gen
104121
$(CONTROLLER_GEN) $(CRD_OPTIONS) rbac:roleName=manager-role webhook paths="./..." output:crd:artifacts:config=config/crd/bases
105122

106123
# Run go fmt against code
124+
.PHONY: fmt
107125
fmt:
108126
go fmt ./...
109127

110128
# Run go vet against code
129+
.PHONY: vet
111130
vet:
112131
go vet ./...
113132

114133
# Run go lint against code
134+
.PHONY: lint
115135
lint:
116136
golangci-lint run
117137

118138
# Generate code
139+
.PHONY: generate
119140
generate: controller-gen api-docs
120141
$(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..."
121142

122143
# end-to-tests
144+
.PHONY: e2e
123145
e2e:
124146
$(KUTTL) test
125147

148+
.PHONY: prepare-e2e
126149
prepare-e2e: kuttl set-test-image-vars set-image-controller container start-kind
127150
mkdir -p tests/_build/crds tests/_build/manifests
128151
$(KUSTOMIZE) build config/default -o tests/_build/manifests/01-opentelemetry-operator.yaml
129152
$(KUSTOMIZE) build config/crd -o tests/_build/crds/
130153

154+
.PHONY: scorecard-tests
131155
scorecard-tests:
132156
$(OPERATOR_SDK) scorecard -w=5m bundle || (echo "scorecard test failed" && exit 1)
133157

158+
.PHONY: set-test-image-vars
134159
set-test-image-vars:
135160
$(eval IMG=local/opentelemetry-operator:e2e)
136161

137162
# Build the container image, used only for local dev purposes
163+
.PHONY: container
138164
container:
139165
docker build -t ${IMG} --build-arg VERSION_PKG=${VERSION_PKG} --build-arg VERSION=${VERSION} --build-arg VERSION_DATE=${VERSION_DATE} --build-arg OTELCOL_VERSION=${OTELCOL_VERSION} --build-arg TARGETALLOCATOR_VERSION=${TARGETALLOCATOR_VERSION} --build-arg AUTO_INSTRUMENTATION_JAVA_VERSION=${AUTO_INSTRUMENTATION_JAVA_VERSION} --build-arg AUTO_INSTRUMENTATION_NODEJS_VERSION=${AUTO_INSTRUMENTATION_NODEJS_VERSION} --build-arg AUTO_INSTRUMENTATION_PYTHON_VERSION=${AUTO_INSTRUMENTATION_PYTHON_VERSION} .
140166

141167
# Push the container image, used only for local dev purposes
168+
.PHONY: container-push
142169
container-push:
143170
docker push ${IMG}
144171

172+
.PHONY: start-kind
145173
start-kind:
146174
kind create cluster --config $(KIND_CONFIG)
147175
kind load docker-image local/opentelemetry-operator:e2e
148176

177+
.PHONY: cert-manager
149178
cert-manager: cmctl
150179
# Consider using cmctl to install the cert-manager once install command is not experimental
151180
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v${CERTMANAGER_VERSION}/cert-manager.yaml
152-
cmctl check api --wait=5m
181+
$(CMCTL) check api --wait=5m
153182

183+
PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))
184+
CMCTL = $(shell pwd)/bin/cmctl
185+
.PHONY: cmctl
154186
cmctl:
155-
ifeq (, $(shell which cmctl))
156-
@{ \
157-
curl -L -o /tmp/cmctl.tar.gz https://github.com/jetstack/cert-manager/releases/download/v$(CERTMANAGER_VERSION)/cmctl-`go env GOOS`-`go env GOARCH`.tar.gz ;\
158-
cd /tmp ;\
159-
tar xzf cmctl.tar.gz ;\
160-
mv cmctl $(GOBIN) ;\
161-
}
162-
CTL=$(GOBIN)/cmctl
163-
else
164-
CTL=$(shell which cmctl)
165-
endif
166-
167-
# find or download controller-gen
168-
# download controller-gen if necessary
169-
controller-gen:
170-
ifeq (, $(shell which controller-gen))
171-
@{ \
172-
go install sigs.k8s.io/controller-tools/cmd/[email protected] ;\
173-
}
174-
CONTROLLER_GEN=$(GOBIN)/controller-gen
175-
else
176-
CONTROLLER_GEN=$(shell which controller-gen)
177-
endif
178-
179-
kustomize:
180-
ifeq (, $(shell which kustomize))
181187
@{ \
182188
set -e ;\
183-
echo "" ;\
184-
echo "ERROR: kustomize not found." ;\
185-
echo "Please check https://kubectl.docs.kubernetes.io/installation/kustomize/ for installation instructions and try again." ;\
186-
echo "" ;\
187-
exit 1 ;\
189+
TMP_DIR=$$(mktemp -d) ;\
190+
curl -L -o $$TMP_DIR/cmctl.tar.gz https://github.com/jetstack/cert-manager/releases/download/v$(CERTMANAGER_VERSION)/cmctl-`go env GOOS`-`go env GOARCH`.tar.gz ;\
191+
tar xzf $$TMP_DIR/cmctl.tar.gz -C $$TMP_DIR ;\
192+
[ -d bin ] || mkdir bin ;\
193+
mv $$TMP_DIR/cmctl $(CMCTL) ;\
194+
rm -rf $$TMP_DIR ;\
188195
}
189-
KUSTOMIZE=$(GOBIN)/kustomize
190-
else
191-
KUSTOMIZE=$(shell which kustomize)
192-
endif
193196

197+
CONTROLLER_GEN = $(shell pwd)/bin/controller-gen
198+
.PHONY: controller-gen
199+
controller-gen: ## Download controller-gen locally if necessary.
200+
$(call go-get-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/controller-gen,v0.8.0)
201+
202+
KUSTOMIZE = $(shell pwd)/bin/kustomize
203+
.PHONY: kustomize
204+
kustomize: ## Download kustomize locally if necessary.
205+
$(call go-get-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/v3,v3.8.7)
206+
207+
ENVTEST = $(shell pwd)/bin/setup-envtest
208+
.PHONY: envtest
209+
envtest: ## Download envtest-setup locally if necessary.
210+
$(call go-get-tool,$(ENVTEST),sigs.k8s.io/controller-runtime/tools/setup-envtest,latest)
211+
212+
CRDOC = $(shell pwd)/bin/crdoc
213+
.PHONY: crdoc
214+
crdoc: ## Download crdoc locally if necessary.
215+
$(call go-get-tool,$(CRDOC), fybrik.io/crdoc,v0.5.2)
216+
217+
# go-get-tool will 'go get' any package $2 and install it to $1.
218+
PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))
219+
define go-get-tool
220+
@[ -f $(1) ] || { \
221+
set -e ;\
222+
TMP_DIR=$$(mktemp -d) ;\
223+
cd $$TMP_DIR ;\
224+
go mod init tmp ;\
225+
echo "Downloading $(2)" ;\
226+
go get -d $(2)@$(3) ;\
227+
GOBIN=$(PROJECT_DIR)/bin go install $(2) ;\
228+
rm -rf $$TMP_DIR ;\
229+
}
230+
endef
231+
232+
.PHONY: kuttl
194233
kuttl:
195234
ifeq (, $(shell which kubectl-kuttl))
196235
echo ${PATH}
@@ -209,6 +248,7 @@ else
209248
KUTTL=$(shell which kubectl-kuttl)
210249
endif
211250

251+
.PHONY: kind
212252
kind:
213253
ifeq (, $(shell which kind))
214254
@{ \
@@ -223,6 +263,7 @@ else
223263
KIND=$(shell which kind)
224264
endif
225265

266+
.PHONY: operator-sdk
226267
operator-sdk:
227268
ifeq (, $(shell which operator-sdk))
228269
@{ \
@@ -238,41 +279,29 @@ OPERATOR_SDK=$(shell which operator-sdk)
238279
endif
239280

240281
# Generate bundle manifests and metadata, then validate generated files.
282+
.PHONY: bundle
241283
bundle: kustomize operator-sdk manifests set-image-controller
242284
$(OPERATOR_SDK) generate kustomize manifests -q
243285
$(KUSTOMIZE) build config/manifests | $(OPERATOR_SDK) generate bundle -q --overwrite --version $(VERSION) $(BUNDLE_METADATA_OPTS)
244286
$(OPERATOR_SDK) bundle validate ./bundle
245287

246288
# Build the bundle image, used only for local dev purposes
289+
.PHONY: bundle-build
247290
bundle-build:
248291
docker build -f bundle.Dockerfile -t $(BUNDLE_IMG) .
249292

293+
.PHONY: bundle-push
250294
bundle-push:
251295
docker push $(BUNDLE_IMG)
252296

297+
.PHONY: tools
253298
tools: ginkgo kustomize controller-gen operator-sdk
254299

255-
300+
.PHONY: api-docs
256301
api-docs: crdoc kustomize
257302
@{ \
258303
set -e ;\
259304
TMP_DIR=$$(mktemp -d) ; \
260305
$(KUSTOMIZE) build config/crd -o $$TMP_DIR/crd-output.yaml ;\
261-
$(API_REF_GEN) crdoc --resources $$TMP_DIR/crd-output.yaml --output docs/api.md ;\
306+
$(CRDOC) --resources $$TMP_DIR/crd-output.yaml --output docs/api.md ;\
262307
}
263-
264-
# Find or download crdoc
265-
crdoc:
266-
ifeq (, $(shell which crdoc))
267-
@{ \
268-
set -e ;\
269-
API_REF_GEN_TMP_DIR=$$(mktemp -d) ;\
270-
cd $$API_REF_GEN_TMP_DIR ;\
271-
go mod init tmp ;\
272-
go get fybrik.io/[email protected] ;\
273-
rm -rf $$API_REF_GEN_TMP_DIR ;\
274-
}
275-
API_REF_GEN=$(GOBIN)/crdoc
276-
else
277-
API_REF_GEN=$(shell which crdoc)
278-
endif

apis/v1alpha1/instrumentation_webhook.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func (r *Instrumentation) SetupWebhookWithManager(mgr ctrl.Manager) error {
4242
Complete()
4343
}
4444

45-
//+kubebuilder:webhook:path=/mutate-opentelemetry-io-v1alpha1-instrumentation,mutating=true,failurePolicy=fail,sideEffects=None,groups=opentelemetry.io,resources=instrumentations,verbs=create;update,versions=v1alpha1,name=minstrumentation.kb.io,admissionReviewVersions={v1,v1beta1}
45+
//+kubebuilder:webhook:path=/mutate-opentelemetry-io-v1alpha1-instrumentation,mutating=true,failurePolicy=fail,sideEffects=None,groups=opentelemetry.io,resources=instrumentations,verbs=create;update,versions=v1alpha1,name=minstrumentation.kb.io,admissionReviewVersions=v1
4646

4747
var _ webhook.Defaulter = &Instrumentation{}
4848

@@ -73,8 +73,8 @@ func (r *Instrumentation) Default() {
7373
}
7474
}
7575

76-
// +kubebuilder:webhook:verbs=create;update,path=/validate-opentelemetry-io-v1alpha1-instrumentation,mutating=false,failurePolicy=fail,groups=opentelemetry.io,resources=instrumentations,versions=v1alpha1,name=vinstrumentationcreateupdate.kb.io,sideEffects=none,admissionReviewVersions={v1,v1beta1}
77-
// +kubebuilder:webhook:verbs=delete,path=/validate-opentelemetry-io-v1alpha1-instrumentation,mutating=false,failurePolicy=ignore,groups=opentelemetry.io,resources=instrumentations,versions=v1alpha1,name=vinstrumentationdelete.kb.io,sideEffects=none,admissionReviewVersions={v1,v1beta1}
76+
// +kubebuilder:webhook:verbs=create;update,path=/validate-opentelemetry-io-v1alpha1-instrumentation,mutating=false,failurePolicy=fail,groups=opentelemetry.io,resources=instrumentations,versions=v1alpha1,name=vinstrumentationcreateupdate.kb.io,sideEffects=none,admissionReviewVersions=v1
77+
// +kubebuilder:webhook:verbs=delete,path=/validate-opentelemetry-io-v1alpha1-instrumentation,mutating=false,failurePolicy=ignore,groups=opentelemetry.io,resources=instrumentations,versions=v1alpha1,name=vinstrumentationdelete.kb.io,sideEffects=none,admissionReviewVersions=v1
7878

7979
var _ webhook.Validator = &Instrumentation{}
8080

apis/v1alpha1/opentelemetrycollector_webhook.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func (r *OpenTelemetryCollector) SetupWebhookWithManager(mgr ctrl.Manager) error
3434
Complete()
3535
}
3636

37-
// +kubebuilder:webhook:path=/mutate-opentelemetry-io-v1alpha1-opentelemetrycollector,mutating=true,failurePolicy=fail,groups=opentelemetry.io,resources=opentelemetrycollectors,verbs=create;update,versions=v1alpha1,name=mopentelemetrycollector.kb.io,sideEffects=none,admissionReviewVersions=v1;v1beta1
37+
// +kubebuilder:webhook:path=/mutate-opentelemetry-io-v1alpha1-opentelemetrycollector,mutating=true,failurePolicy=fail,groups=opentelemetry.io,resources=opentelemetrycollectors,verbs=create;update,versions=v1alpha1,name=mopentelemetrycollector.kb.io,sideEffects=none,admissionReviewVersions=v1
3838

3939
var _ webhook.Defaulter = &OpenTelemetryCollector{}
4040

@@ -57,8 +57,8 @@ func (r *OpenTelemetryCollector) Default() {
5757
opentelemetrycollectorlog.Info("default", "name", r.Name)
5858
}
5959

60-
// +kubebuilder:webhook:verbs=create;update,path=/validate-opentelemetry-io-v1alpha1-opentelemetrycollector,mutating=false,failurePolicy=fail,groups=opentelemetry.io,resources=opentelemetrycollectors,versions=v1alpha1,name=vopentelemetrycollectorcreateupdate.kb.io,sideEffects=none,admissionReviewVersions=v1;v1beta1
61-
// +kubebuilder:webhook:verbs=delete,path=/validate-opentelemetry-io-v1alpha1-opentelemetrycollector,mutating=false,failurePolicy=ignore,groups=opentelemetry.io,resources=opentelemetrycollectors,versions=v1alpha1,name=vopentelemetrycollectordelete.kb.io,sideEffects=none,admissionReviewVersions=v1;v1beta1
60+
// +kubebuilder:webhook:verbs=create;update,path=/validate-opentelemetry-io-v1alpha1-opentelemetrycollector,mutating=false,failurePolicy=fail,groups=opentelemetry.io,resources=opentelemetrycollectors,versions=v1alpha1,name=vopentelemetrycollectorcreateupdate.kb.io,sideEffects=none,admissionReviewVersions=v1
61+
// +kubebuilder:webhook:verbs=delete,path=/validate-opentelemetry-io-v1alpha1-opentelemetrycollector,mutating=false,failurePolicy=ignore,groups=opentelemetry.io,resources=opentelemetrycollectors,versions=v1alpha1,name=vopentelemetrycollectordelete.kb.io,sideEffects=none,admissionReviewVersions=v1
6262

6363
var _ webhook.Validator = &OpenTelemetryCollector{}
6464

apis/v1alpha1/zz_generated.deepcopy.go

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bundle.Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/
66
LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/
77
LABEL operators.operatorframework.io.bundle.package.v1=opentelemetry-operator
88
LABEL operators.operatorframework.io.bundle.channels.v1=alpha
9-
LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.13.0+git
9+
LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.16.0+git
1010
LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1
1111
LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v3
1212

0 commit comments

Comments
 (0)