Skip to content

Commit e59633b

Browse files
committed
Upgrade infra-operator to operator-sdk 1.41.1
Rescaffold the infra-operator to operator-sdk 1.41.1, which includes: - Reorganize project structure (pkg/ -> internal/) - Move webhook implementations to internal/webhook/v1beta1/ - Add new cmd/main.go entrypoint with updated controller initialization - Update RBAC, certmanager, and prometheus configurations - Enhance network policies for metrics and webhook traffic - Set infra as defaulting resource in PROJECT file - Remove auto-generated test suite scaffolding - Update build workflow and Dockerfile to version 1.41.1 This upgrade modernizes the operator structure and aligns with the latest operator-sdk best practices. Jira: OSPRH-22040 Depends-On: openstack-k8s-operators/openstack-operator#1683
1 parent 1ff4069 commit e59633b

File tree

264 files changed

+2922
-2219
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

264 files changed

+2922
-2219
lines changed

.ci-operator.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
build_root_image:
22
name: tools
33
namespace: openstack-k8s-operators
4-
tag: ci-build-root-golang-1.24-sdk-1.31
4+
tag: ci-build-root-golang-1.24-sdk-1.41.1

.github/workflows/build-infra-operator.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
with:
1717
operator_name: infra
1818
go_version: 1.24.x
19-
operator_sdk_version: 1.31.0
19+
operator_sdk_version: 1.41.1
2020
secrets:
2121
IMAGENAMESPACE: ${{ secrets.IMAGENAMESPACE }}
2222
QUAY_USERNAME: ${{ secrets.QUAY_USERNAME }}

.github/workflows/force-bump-pr-manual.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@ jobs:
99
with:
1010
operator_name: infra
1111
branch_name: ${{ github.ref_name }}
12-
custom_image: quay.io/openstack-k8s-operators/openstack-k8s-operators-ci-build-tools:golang-1.24-sdk-1.31
12+
custom_image: quay.io/openstack-k8s-operators/openstack-k8s-operators-ci-build-tools:golang-1.24-sdk-1.41.1
1313
secrets:
1414
FORCE_BUMP_PULL_REQUEST_PAT: ${{ secrets.FORCE_BUMP_PULL_REQUEST_PAT }}

.github/workflows/force-bump-pr-scheduled.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ jobs:
1010
uses: openstack-k8s-operators/openstack-k8s-operators-ci/.github/workflows/force-bump-branches.yaml@main
1111
with:
1212
operator_name: infra
13-
custom_image: quay.io/openstack-k8s-operators/openstack-k8s-operators-ci-build-tools:golang-1.24-sdk-1.31
13+
custom_image: quay.io/openstack-k8s-operators/openstack-k8s-operators-ci-build-tools:golang-1.24-sdk-1.41.1
1414
secrets:
1515
FORCE_BUMP_PULL_REQUEST_PAT: ${{ secrets.FORCE_BUMP_PULL_REQUEST_PAT }}

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ RUN mkdir -p ${DEST_ROOT}/usr/local/bin/
2626
RUN if [ ! -f $CACHITO_ENV_FILE ]; then go mod download ; fi
2727

2828
# Build manager
29-
RUN if [ -f $CACHITO_ENV_FILE ] ; then source $CACHITO_ENV_FILE ; fi ; env ${GO_BUILD_EXTRA_ENV_ARGS} go build ${GO_BUILD_EXTRA_ARGS} -a -o ${DEST_ROOT}/manager main.go
29+
RUN if [ -f $CACHITO_ENV_FILE ] ; then source $CACHITO_ENV_FILE ; fi ; env ${GO_BUILD_EXTRA_ENV_ARGS} go build ${GO_BUILD_EXTRA_ARGS} -a -o ${DEST_ROOT}/manager cmd/main.go
3030

3131
RUN cp -r templates ${DEST_ROOT}/templates
3232

Makefile

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ endif
4848

4949
# Set the Operator SDK version to use. By default, what is installed on the system is used.
5050
# This is useful for CI or a project to utilize a specific version of the operator-sdk toolkit.
51-
OPERATOR_SDK_VERSION ?= v1.31.0
51+
OPERATOR_SDK_VERSION ?= v1.41.1
5252

5353
# Image URL to use all building/pushing image targets
5454
DEFAULT_IMG ?= quay.io/openstack-k8s-operators/infra-operator:latest
@@ -98,7 +98,7 @@ help: ## Display this help.
9898
.PHONY: manifests
9999
manifests: gowork controller-gen ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects.
100100
$(CONTROLLER_GEN) rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases && \
101-
rm -f apis/bases/* && cp -a config/crd/bases apis/
101+
rm -f api/bases/* && cp -a config/crd/bases api/
102102

103103
.PHONY: generate
104104
generate: gowork controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.
@@ -111,12 +111,12 @@ fmt: ## Run go fmt against code.
111111
.PHONY: vet
112112
vet: gowork ## Run go vet against code.
113113
go vet ./...
114-
go vet ./apis/...
114+
go vet ./api/...
115115

116116
.PHONY: tidy
117117
tidy: ## Run go mod tidy on every mod file in the repo
118118
go mod tidy
119-
cd ./apis && go mod tidy
119+
cd ./api && go mod tidy
120120

121121
PROCS?=$(shell expr $(shell nproc --ignore 2) / 2)
122122
PROC_CMD = --procs ${PROCS}
@@ -125,13 +125,13 @@ PROC_CMD = --procs ${PROCS}
125125
test: manifests generate gowork fmt vet envtest ginkgo ## Run tests.
126126
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) -v debug --bin-dir $(LOCALBIN) use $(ENVTEST_K8S_VERSION) -p path)" \
127127
OPERATOR_TEMPLATES="$(PWD)/templates" \
128-
$(GINKGO) --trace --cover --coverpkg=./pkg/...,./controllers/...,./apis/network/v1beta1/...,./apis/rabbitmq/v1beta1/... --coverprofile cover.out --covermode=atomic ${PROC_CMD} $(GINKGO_ARGS) ./tests/... ./apis/network/... ./apis/rabbitmq/...
128+
$(GINKGO) --trace --cover --coverpkg=./internal/...,./api/network/v1beta1/... --coverprofile cover.out --covermode=atomic ${PROC_CMD} $(GINKGO_ARGS) ./test/... ./api/network/... ./api/rabbitmq/...
129129

130130
##@ Build
131131

132132
.PHONY: build
133133
build: generate fmt vet ## Build manager binary.
134-
go build -o bin/manager main.go
134+
go build -o bin/manager cmd/main.go
135135

136136
.PHONY: run
137137
run: export METRICS_PORT?=8080
@@ -141,7 +141,7 @@ run: export OPERATOR_TEMPLATES=./templates
141141
run: export ENABLE_WEBHOOKS?=false
142142
run: manifests generate fmt vet ## Run a controller from your host.
143143
/bin/bash hack/clean_local_webhook.sh
144-
go run ./main.go -metrics-bind-address ":$(METRICS_PORT)" -health-probe-bind-address ":$(HEALTH_PORT)" -pprof-bind-address ":$(PPROF_PORT)"
144+
go run ./cmd/main.go -metrics-bind-address ":$(METRICS_PORT)" -health-probe-bind-address ":$(HEALTH_PORT)" -pprof-bind-address ":$(PPROF_PORT)"
145145

146146
# If you wish built the manager image targeting other platforms you can use the --platform flag.
147147
# (i.e. docker build --platform linux/arm64 ). However, you must enable docker buildKit for it.
@@ -208,7 +208,7 @@ ENVTEST ?= $(LOCALBIN)/setup-envtest
208208
GINKGO ?= $(LOCALBIN)/ginkgo
209209

210210
## Tool Versions
211-
KUSTOMIZE_VERSION ?= v3.8.7
211+
KUSTOMIZE_VERSION ?= v5.6.0
212212
CONTROLLER_TOOLS_VERSION ?= v0.18.0
213213
GOTOOLCHAIN_VERSION ?= go1.24.0
214214

@@ -329,37 +329,37 @@ get-ci-tools:
329329
# Run go fmt against code
330330
gofmt: get-ci-tools
331331
GOWORK=off $(CI_TOOLS_REPO_DIR)/test-runner/gofmt.sh
332-
GOWORK=off $(CI_TOOLS_REPO_DIR)/test-runner/gofmt.sh ./apis
332+
GOWORK=off $(CI_TOOLS_REPO_DIR)/test-runner/gofmt.sh ./api
333333

334334
# Run go vet against code
335335
govet: get-ci-tools
336336
GOWORK=off $(CI_TOOLS_REPO_DIR)/test-runner/govet.sh
337-
GOWORK=off $(CI_TOOLS_REPO_DIR)/test-runner/govet.sh ./apis
337+
GOWORK=off $(CI_TOOLS_REPO_DIR)/test-runner/govet.sh ./api
338338

339339
# Run go test against code
340340
gotest: test
341341

342342
# Run golangci-lint test against code
343343
golangci: get-ci-tools
344344
GOWORK=off $(CI_TOOLS_REPO_DIR)/test-runner/golangci.sh
345-
GOWORK=off $(CI_TOOLS_REPO_DIR)/test-runner/golangci.sh ./apis
345+
GOWORK=off $(CI_TOOLS_REPO_DIR)/test-runner/golangci.sh ./api
346346

347347
# Run go lint against code
348348
golint: get-ci-tools
349349
GOWORK=off PATH=$(GOBIN):$(PATH); $(CI_TOOLS_REPO_DIR)/test-runner/golint.sh
350-
GOWORK=off PATH=$(GOBIN):$(PATH); $(CI_TOOLS_REPO_DIR)/test-runner/golint.sh ./apis
350+
GOWORK=off PATH=$(GOBIN):$(PATH); $(CI_TOOLS_REPO_DIR)/test-runner/golint.sh ./api
351351

352352
.PHONY: gowork
353353
gowork: ## Generate go.work file to support our multi module repository
354354
test -f go.work || GOTOOLCHAIN=$(GOTOOLCHAIN_VERSION) go work init
355355
go work use .
356-
go work use ./apis
356+
go work use ./api
357357
go work sync
358358

359359
.PHONY: operator-lint
360360
operator-lint: gowork ## Runs operator-lint
361361
GOBIN=$(LOCALBIN) go install github.com/gibizer/operator-lint@v0.3.0
362-
go vet -vettool=$(LOCALBIN)/operator-lint ./... ./apis/...
362+
go vet -vettool=$(LOCALBIN)/operator-lint ./... ./api/...
363363

364364
# Used for webhook testing
365365
# The configure_local_webhook.sh script below will remove any OLM webhooks
@@ -383,8 +383,8 @@ force-bump: ## Force bump operator and lib-common dependencies
383383
for dep in $$(cat go.mod | grep openstack-k8s-operators | grep -vE -- 'indirect|infra-operator|^replace' | awk '{print $$1}'); do \
384384
go get $$dep@$(BRANCH) ; \
385385
done
386-
for dep in $$(cat apis/go.mod | grep openstack-k8s-operators | grep -vE -- 'indirect|infra-operator|^replace' | awk '{print $$1}'); do \
387-
cd ./apis && go get $$dep@$(BRANCH) && cd .. ; \
386+
for dep in $$(cat api/go.mod | grep openstack-k8s-operators | grep -vE -- 'indirect|infra-operator|^replace' | awk '{print $$1}'); do \
387+
cd ./api && go get $$dep@$(BRANCH) && cd .. ; \
388388
done
389389

390390
CRD_SCHEMA_CHECKER_VERSION ?= release-4.16

PROJECT

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# More info: https://book.kubebuilder.io/reference/project-config.html
55
domain: openstack.org
66
layout:
7-
- go.kubebuilder.io/v3
7+
- go.kubebuilder.io/v4
88
multigroup: true
99
plugins:
1010
manifests.sdk.operatorframework.io/v2: {}
@@ -19,7 +19,7 @@ resources:
1919
domain: openstack.org
2020
group: rabbitmq
2121
kind: TransportURL
22-
path: github.com/openstack-k8s-operators/infra-operator/apis/rabbitmq/v1beta1
22+
path: github.com/openstack-k8s-operators/infra-operator/api/rabbitmq/v1beta1
2323
version: v1beta1
2424
- api:
2525
crdVersion: v1
@@ -28,7 +28,7 @@ resources:
2828
domain: openstack.org
2929
group: memcached
3030
kind: Memcached
31-
path: github.com/openstack-k8s-operators/infra-operator/apis/memcached/v1beta1
31+
path: github.com/openstack-k8s-operators/infra-operator/api/memcached/v1beta1
3232
version: v1beta1
3333
webhooks:
3434
defaulting: true
@@ -41,7 +41,7 @@ resources:
4141
domain: openstack.org
4242
group: instanceha
4343
kind: InstanceHa
44-
path: github.com/openstack-k8s-operators/infra-operator/apis/instanceha/v1beta1
44+
path: github.com/openstack-k8s-operators/infra-operator/api/instanceha/v1beta1
4545
version: v1beta1
4646
webhooks:
4747
defaulting: true
@@ -54,8 +54,7 @@ resources:
5454
domain: openstack.org
5555
group: redis
5656
kind: Redis
57-
path: github.com/openstack-k8s-operators/infra-operator/apis/redis/v1beta1
58-
plural: redises
57+
path: github.com/openstack-k8s-operators/infra-operator/api/redis/v1beta1
5958
version: v1beta1
6059
webhooks:
6160
defaulting: true
@@ -68,7 +67,7 @@ resources:
6867
domain: openstack.org
6968
group: network
7069
kind: DNSMasq
71-
path: github.com/openstack-k8s-operators/infra-operator/apis/network/v1beta1
70+
path: github.com/openstack-k8s-operators/infra-operator/api/network/v1beta1
7271
version: v1beta1
7372
webhooks:
7473
defaulting: true
@@ -81,15 +80,16 @@ resources:
8180
domain: openstack.org
8281
group: network
8382
kind: DNSData
84-
path: github.com/openstack-k8s-operators/infra-operator/apis/network/v1beta1
83+
path: github.com/openstack-k8s-operators/infra-operator/api/network/v1beta1
8584
version: v1beta1
8685
- api:
8786
crdVersion: v1
8887
namespaced: true
88+
controller: true
8989
domain: openstack.org
9090
group: network
9191
kind: NetConfig
92-
path: github.com/openstack-k8s-operators/infra-operator/apis/network/v1beta1
92+
path: github.com/openstack-k8s-operators/infra-operator/api/network/v1beta1
9393
version: v1beta1
9494
webhooks:
9595
defaulting: true
@@ -98,10 +98,11 @@ resources:
9898
- api:
9999
crdVersion: v1
100100
namespaced: true
101+
controller: true
101102
domain: openstack.org
102103
group: network
103104
kind: Reservation
104-
path: github.com/openstack-k8s-operators/infra-operator/apis/network/v1beta1
105+
path: github.com/openstack-k8s-operators/infra-operator/api/network/v1beta1
105106
version: v1beta1
106107
webhooks:
107108
defaulting: true
@@ -114,20 +115,29 @@ resources:
114115
domain: openstack.org
115116
group: network
116117
kind: IPSet
117-
path: github.com/openstack-k8s-operators/infra-operator/apis/network/v1beta1
118+
path: github.com/openstack-k8s-operators/infra-operator/api/network/v1beta1
118119
version: v1beta1
119120
webhooks:
120121
defaulting: true
121122
validation: true
122123
webhookVersion: v1
124+
- api:
125+
crdVersion: v1
126+
namespaced: true
127+
controller: true
128+
domain: openstack.org
129+
group: topology
130+
kind: Topology
131+
path: github.com/openstack-k8s-operators/infra-operator/api/topology/v1beta1
132+
version: v1beta1
123133
- api:
124134
crdVersion: v1
125135
namespaced: true
126136
controller: true
127137
domain: openstack.org
128138
group: network
129139
kind: BGPConfiguration
130-
path: github.com/openstack-k8s-operators/infra-operator/apis/network/v1beta1
140+
path: github.com/openstack-k8s-operators/infra-operator/api/network/v1beta1
131141
version: v1beta1
132142
- api:
133143
crdVersion: v1
@@ -136,7 +146,7 @@ resources:
136146
domain: openstack.org
137147
group: rabbitmq
138148
kind: RabbitMq
139-
path: github.com/openstack-k8s-operators/infra-operator/apis/rabbitmq/v1beta1
149+
path: github.com/openstack-k8s-operators/infra-operator/api/rabbitmq/v1beta1
140150
version: v1beta1
141151
webhooks:
142152
defaulting: true
File renamed without changes.

apis/bases/memcached.openstack.org_memcacheds.yaml renamed to api/bases/memcached.openstack.org_memcacheds.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ spec:
142142
bundle file
143143
type: string
144144
mtls:
145+
description: MTLSSection contains mutual TLS configuration
145146
properties:
146147
authCertSecret:
147148
description: Name of the secret containing the client cert

apis/bases/network.openstack.org_bgpconfigurations.yaml renamed to api/bases/network.openstack.org_bgpconfigurations.yaml

File renamed without changes.

0 commit comments

Comments
 (0)