Skip to content

Commit 6c4484d

Browse files
Igor-splunkVivek Reddyrlieberman-splunkkasiakoziolPatryk Wasielewski
authored
CSPL-3675 Update Operator-SDK to v1.39 (#1488)
* v.1.39.0 migration --------- Co-authored-by: igor.grzankowski <@splunk.com> Co-authored-by: Vivek Reddy <[email protected]> Co-authored-by: rlieberman-splunk <[email protected]> Co-authored-by: kasiakoziol <[email protected]> Co-authored-by: Patryk Wasielewski <[email protected]>
1 parent f3a0ea9 commit 6c4484d

File tree

97 files changed

+6515
-1755
lines changed

Some content is hidden

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

97 files changed

+6515
-1755
lines changed

.biased_lang_exclude

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ api/v3/licensemaster_types.go
2929
api/v3/zz_generated.deepcopy.go
3030
api/v3/common_types.go
3131
pkg/splunk/enterprise/licensemaster.go
32-
controllers/licensemaster_controller.go
32+
controller/licensemaster_controller.go
3333
tools/k8s_collectors/k8s-systeminfo-collector.sh
34-
controllers/common/predicate.go
34+
controller/common/predicate.go
3535
pkg/splunk/enterprise/finalizers.go
36-
controllers/monitoringconsole_controller.go
36+
controller/monitoringconsole_controller.go
3737
pkg/splunk/enterprise/events.go
3838
#Exceptions for dual support of cluster manager
3939
api/v3/clustermaster_types.go
@@ -47,9 +47,9 @@ config/rbac/clustermaster_editor_role.yaml
4747
config/rbac/clustermaster_viewer_role.yaml
4848
config/rbac/clustermanager_editor_role.yaml
4949
config/rbac/clustermanager_viewer_role.yaml
50-
controllers/clustermaster_controller.go
51-
controllers/clustermaster_controller_test.go
52-
controllers/licensemaster_controller_test.go
50+
controller/clustermaster_controller.go
51+
controller/clustermaster_controller_test.go
52+
controller/licensemaster_controller_test.go
5353
kuttl/tests/smoke/clustered-master-deployment-c3/00-assert.yaml
5454
kuttl/tests/smoke/clustered-master-deployment-c3/00-deploy-clustermanager.yaml
5555
kuttl/tests/smoke/clustered-master-deployment-c3/01-deploy-indexercluster.yaml
@@ -82,7 +82,7 @@ main.go
8282
PROJECT
8383
pkg/
8484
deploy/
85-
controllers/
85+
internal/controller/
8686
test/
8787
docs/
8888
README.md

.env

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
OPERATOR_SDK_VERSION=v1.31.0
1+
OPERATOR_SDK_VERSION=v1.39.0
22
REVIEWERS=vivekr-splunk,rlieberman-splunk,patrykw-splunk,Igor-splunk,kasiakoziol
33
GO_VERSION=1.23.0
44
AWSCLI_URL=https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.8.6.zip

Dockerfile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ ARG BASE_IMAGE=registry.access.redhat.com/ubi8/ubi-minimal@sha256
88
ARG BASE_IMAGE_VERSION=3b0f20d81f5fc0dfb3f96cbe9912e02959d1e508411e0e46fad52520208a651c
99

1010
# Build the manager binary
11-
FROM golang:1.23.0 AS builder
11+
FROM golang:1.24.2 AS builder
1212

1313
WORKDIR /workspace
1414

@@ -19,16 +19,16 @@ COPY go.sum go.sum
1919
RUN go mod download
2020

2121
# Copy the go source
22-
COPY main.go main.go
22+
COPY cmd/main.go cmd/main.go
2323
COPY api/ api/
24-
COPY controllers/ controllers/
24+
COPY internal/controller/ internal/controller/
2525
COPY pkg/ pkg/
2626
COPY tools/ tools/
2727
COPY hack hack/
2828

2929
# Build
3030
# TARGETOS and TARGETARCH are provided(inferred) by buildx via the --platforms flag
31-
RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -a -o manager main.go
31+
RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -a -o manager cmd/main.go
3232

3333
# Use BASE_IMAGE as the base image
3434
FROM ${BASE_IMAGE}:${BASE_IMAGE_VERSION}

Dockerfile.distroless

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Build the manager binary
2-
FROM golang:1.23.0 AS builder
2+
FROM golang:1.24.2 AS builder
33

44
WORKDIR /workspace
55
# Copy the Go Modules manifests
@@ -9,16 +9,16 @@ COPY go.sum go.sum
99
RUN go mod download
1010

1111
# Copy the go source
12-
COPY main.go main.go
12+
COPY cmd/main.go cmd/main.go
1313
COPY api/ api/
14-
COPY controllers/ controllers/
14+
COPY internal/controller/ internal/controller/
1515
COPY pkg/ pkg/
1616
COPY tools/ tools/
1717
COPY hack hack/
1818

1919
# Build
2020
# TARGETOS and TARGETARCH are provided(inferred) by buildx via the --platforms flag
21-
RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -a -o manager main.go
21+
RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -a -o manager cmd/main.go
2222

2323
# Use distroless as minimal base image to package the manager binary
2424
# Refer to https://github.com/GoogleContainerTools/distroless

Makefile

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ ${ENVIRONMENT}:
1111
VERSION ?= 2.8.0
1212

1313
# SPLUNK_ENTERPRISE_IMAGE defines the splunk docker tag that is used as default image.
14-
SPLUNK_ENTERPRISE_IMAGE ?= "docker.io/splunk/splunk:edge"
14+
SPLUNK_ENTERPRISE_IMAGE ?= "docker.io/splunk/splunk"
1515

1616
# WATCH_NAMESPACE defines if its clusterwide operator or namespace specific
1717
# by default we leave it as clusterwide if it has to be namespace specific,
@@ -54,7 +54,7 @@ BUNDLE_IMG ?= ${IMAGE_TAG_BASE}-bundle:v${VERSION}
5454
# Image URL to use all building/pushing image targets
5555
IMG ?= controller:latest
5656
# ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary.
57-
ENVTEST_K8S_VERSION = 1.26.0
57+
ENVTEST_K8S_VERSION = 1.31.0
5858

5959
ignore-not-found ?= True
6060

@@ -127,20 +127,20 @@ scheck: ## Run static check against code
127127
go install honnef.co/go/tools/cmd/[email protected]
128128
staticcheck ./...
129129

130-
vet: setup/ginkgo ## Run go vet against code.
130+
vet: setup/ginkgo ## Run go vet against code.
131131
go vet ./...
132132

133133
test: manifests generate fmt vet envtest ## Run tests.
134-
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use ${ENVTEST_K8S_VERSION} --bin-dir $(LOCALBIN) -p path)" ginkgo --junit-report=unit_test.xml --output-dir=`pwd` -vv --trace --keep-going --timeout=3h --cover --covermode=count --coverprofile=coverage.out ./pkg/splunk/common ./pkg/splunk/enterprise ./pkg/splunk/controller ./pkg/splunk/client ./pkg/splunk/util ./controllers
134+
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use ${ENVTEST_K8S_VERSION} --bin-dir $(LOCALBIN) -p path)" ginkgo --junit-report=unit_test.xml --output-dir=`pwd` -vv --trace --keep-going --timeout=3h --cover --covermode=count --coverprofile=coverage.out ./pkg/splunk/common ./pkg/splunk/enterprise ./pkg/splunk/client ./pkg/splunk/util ./internal/controller ./pkg/splunk/splkcontroller
135135

136136

137137
##@ Build
138138

139139
build: setup/ginkgo manifests generate fmt vet ## Build manager binary.
140-
go build -o bin/manager main.go
140+
go build -o bin/manager cmd/main.go
141141

142142
run: manifests generate fmt vet ## Run a controller from your host.
143-
go run ./main.go
143+
go run ./cmd/main.go
144144

145145
docker-build: #test ## Build docker image with the manager.
146146
docker build -t ${IMG} .
@@ -162,20 +162,23 @@ BASE_IMAGE_VERSION ?= 3b0f20d81f5fc0dfb3f96cbe9912e02959d1e508411e0e46fad5252020
162162

163163
docker-buildx:
164164
@if [ -z "${IMG}" ]; then \
165-
echo "Error: IMG is a mandatory argument. Usage: make docker-buildx IMG=<image_name> ...."; \
166-
exit 1; \
167-
fi; \
168-
if echo "${BASE_IMAGE}" | grep -q "distroless"; then \
169-
DOCKERFILE="Dockerfile.distroless"; \
170-
BUILD_TAG="${IMG}-distroless"; \
171-
else \
172-
DOCKERFILE="Dockerfile"; \
173-
BUILD_TAG="${IMG}"; \
174-
fi; \
175-
docker buildx build --push --platform="${PLATFORMS}" \
176-
--build-arg BASE_IMAGE="${BASE_IMAGE}" \
177-
--build-arg BASE_IMAGE_VERSION="${BASE_IMAGE_VERSION}" \
178-
--tag "$$BUILD_TAG" -f "$$DOCKERFILE" .
165+
echo "Error: IMG is a mandatory argument. Usage: make docker-buildx IMG=<image_name> ...."; \
166+
exit 1; \
167+
fi; \
168+
docker buildx create --name project-v3-builder --use || true; \
169+
docker buildx use project-v3-builder; \
170+
if echo "${BASE_IMAGE}" | grep -q "distroless"; then \
171+
DOCKERFILE="Dockerfile.distroless"; \
172+
BUILD_TAG="${IMG}-distroless"; \
173+
else \
174+
DOCKERFILE="Dockerfile"; \
175+
BUILD_TAG="${IMG}"; \
176+
fi; \
177+
docker buildx build --push --platform="${PLATFORMS}" \
178+
--build-arg BASE_IMAGE="${BASE_IMAGE}" \
179+
--build-arg BASE_IMAGE_VERSION="${BASE_IMAGE_VERSION}" \
180+
--tag "$$BUILD_TAG" -f "$$DOCKERFILE" .; \
181+
- docker buildx rm project-v3-builder || true
179182

180183

181184

@@ -205,7 +208,7 @@ $(LOCALBIN):
205208
mkdir -p $(LOCALBIN)
206209

207210
## Tool Versions
208-
KUSTOMIZE_VERSION ?= v4.5.5
211+
KUSTOMIZE_VERSION ?= v5.4.3
209212
CONTROLLER_TOOLS_VERSION ?= v0.16.1
210213

211214
CONTROLLER_GEN = $(LOCALBIN)/controller-gen
@@ -255,7 +258,7 @@ ifeq (,$(shell which opm 2>/dev/null))
255258
set -e ;\
256259
mkdir -p $(dir $(OPM)) ;\
257260
OS=$(shell go env GOOS) && ARCH=$(shell go env GOARCH) && \
258-
curl -sSLo $(OPM) https://github.com/operator-framework/operator-registry/releases/download/v1.23.0/$${OS}-$${ARCH}-opm ;\
261+
curl -sSLo $(OPM) https://github.com/operator-framework/operator-registry/releases/download/v1.24.2/$${OS}-$${ARCH}-opm ;\
259262
chmod +x $(OPM) ;\
260263
}
261264
else
@@ -400,3 +403,9 @@ setup/ginkgo:
400403
@go install -mod=mod github.com/onsi/ginkgo/v2/ginkgo@latest
401404
@echo Installing gomega
402405
@go get github.com/onsi/gomega/...
406+
407+
.PHONY: build-installer
408+
build-installer: manifests generate kustomize
409+
mkdir -p dist
410+
cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG}
411+
$(KUSTOMIZE) build config/default > dist/install.yaml

PROJECT

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
domain: splunk.com
22
layout:
3-
- go.kubebuilder.io/v3
3+
- go.kubebuilder.io/v4
44
plugins:
55
manifests.sdk.operatorframework.io/v2: {}
66
scorecard.sdk.operatorframework.io/v2: {}

main.go renamed to cmd/main.go

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ package main
1818

1919
import (
2020
"flag"
21+
"fmt"
22+
intController "github.com/splunk/splunk-operator/internal/controller"
23+
"github.com/splunk/splunk-operator/internal/controller/debug"
2124
"os"
25+
"sigs.k8s.io/controller-runtime/pkg/metrics/filters"
2226
"time"
2327

2428
// Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.)
@@ -36,12 +40,10 @@ import (
3640
"sigs.k8s.io/controller-runtime/pkg/healthz"
3741
"sigs.k8s.io/controller-runtime/pkg/log/zap"
3842
"sigs.k8s.io/controller-runtime/pkg/manager"
43+
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
3944

4045
enterpriseApiV3 "github.com/splunk/splunk-operator/api/v3"
4146
enterpriseApi "github.com/splunk/splunk-operator/api/v4"
42-
"github.com/splunk/splunk-operator/controllers"
43-
debug "github.com/splunk/splunk-operator/controllers/debug"
44-
"github.com/splunk/splunk-operator/pkg/config"
4547
//+kubebuilder:scaffold:imports
4648
//extapi "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
4749
)
@@ -106,73 +108,76 @@ func main() {
106108
// Logging setup
107109
ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts)))
108110

109-
options := ctrl.Options{
111+
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
112+
Metrics: metricsserver.Options{
113+
BindAddress: metricsAddr,
114+
FilterProvider: filters.WithAuthenticationAndAuthorization,
115+
},
110116
Scheme: scheme,
111-
MetricsBindAddress: metricsAddr,
112-
Port: 9443,
113117
HealthProbeBindAddress: probeAddr,
114118
LeaderElection: enableLeaderElection,
115119
LeaderElectionID: "270bec8c.splunk.com",
116120
LeaseDuration: &leaseDuration,
117121
RenewDeadline: &renewDeadline,
118-
}
122+
})
119123

120-
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), config.ManagerOptionsWithNamespaces(setupLog, options))
121124
if err != nil {
122125
setupLog.Error(err, "unable to start manager")
123126
os.Exit(1)
124127
}
125128

126-
if err = (&controllers.ClusterMasterReconciler{
129+
if err = (&intController.ClusterManagerReconciler{
127130
Client: mgr.GetClient(),
128131
Scheme: mgr.GetScheme(),
129132
}).SetupWithManager(mgr); err != nil {
130-
setupLog.Error(err, "unable to create controller", "controller", "ClusterMaster")
133+
fmt.Printf(" error - %v", err)
134+
setupLog.Error(err, "unable to create controller", "controller", "ClusterManager ")
131135
os.Exit(1)
132136
}
133-
if err = (&controllers.ClusterManagerReconciler{
137+
fmt.Printf("%v", err)
138+
if err = (&intController.ClusterMasterReconciler{
134139
Client: mgr.GetClient(),
135140
Scheme: mgr.GetScheme(),
136141
}).SetupWithManager(mgr); err != nil {
137-
setupLog.Error(err, "unable to create controller", "controller", "ClusterManager")
142+
setupLog.Error(err, "unable to create controller", "controller", "ClusterMaster")
138143
os.Exit(1)
139144
}
140-
if err = (&controllers.IndexerClusterReconciler{
145+
if err = (&intController.IndexerClusterReconciler{
141146
Client: mgr.GetClient(),
142147
Scheme: mgr.GetScheme(),
143148
}).SetupWithManager(mgr); err != nil {
144149
setupLog.Error(err, "unable to create controller", "controller", "IndexerCluster")
145150
os.Exit(1)
146151
}
147-
if err = (&controllers.LicenseMasterReconciler{
152+
if err = (&intController.LicenseMasterReconciler{
148153
Client: mgr.GetClient(),
149154
Scheme: mgr.GetScheme(),
150155
}).SetupWithManager(mgr); err != nil {
151156
setupLog.Error(err, "unable to create controller", "controller", "LicenseMaster")
152157
os.Exit(1)
153158
}
154-
if err = (&controllers.LicenseManagerReconciler{
159+
if err = (&intController.LicenseManagerReconciler{
155160
Client: mgr.GetClient(),
156161
Scheme: mgr.GetScheme(),
157162
}).SetupWithManager(mgr); err != nil {
158163
setupLog.Error(err, "unable to create controller", "controller", "LicenseManager")
159164
os.Exit(1)
160165
}
161-
if err = (&controllers.MonitoringConsoleReconciler{
166+
if err = (&intController.MonitoringConsoleReconciler{
162167
Client: mgr.GetClient(),
163168
Scheme: mgr.GetScheme(),
164169
}).SetupWithManager(mgr); err != nil {
165170
setupLog.Error(err, "unable to create controller", "controller", "MonitoringConsole")
166171
os.Exit(1)
167172
}
168-
if err = (&controllers.SearchHeadClusterReconciler{
173+
if err = (&intController.SearchHeadClusterReconciler{
169174
Client: mgr.GetClient(),
170175
Scheme: mgr.GetScheme(),
171176
}).SetupWithManager(mgr); err != nil {
172177
setupLog.Error(err, "unable to create controller", "controller", "SearchHeadCluster")
173178
os.Exit(1)
174179
}
175-
if err = (&controllers.StandaloneReconciler{
180+
if err = (&intController.StandaloneReconciler{
176181
Client: mgr.GetClient(),
177182
Scheme: mgr.GetScheme(),
178183
}).SetupWithManager(mgr); err != nil {
@@ -205,7 +210,7 @@ func main() {
205210
// Note that these endpoints meant to be sensitive and shouldn't be exposed publicly.
206211
func customSetupEndpoints(pprofActive bool, mgr manager.Manager) error {
207212
if pprofActive {
208-
if err := debug.RegisterEndpoint(mgr.AddMetricsExtraHandler, nil); err != nil {
213+
if err := debug.RegisterEndpoint(mgr.AddMetricsServerExtraHandler, nil); err != nil {
209214
setupLog.Error(err, "Unable to register pprof endpoint")
210215
return err
211216
}

0 commit comments

Comments
 (0)