Skip to content

Commit c11ad1b

Browse files
Reintroduce PR #5974: Remove klogr dependency and move to zap
Signed-off-by: Ali Aqel <[email protected]>
1 parent 918d289 commit c11ad1b

File tree

8 files changed

+32
-259
lines changed

8 files changed

+32
-259
lines changed

.devcontainer/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ RUN apt-get update \
4545
&& go install honnef.co/go/tools/cmd/staticcheck@latest \
4646
&& go install golang.org/x/tools/gopls@latest \
4747
# Protocol Buffer Compiler
48-
&& PROTOC_VERSION=21.9 \
48+
&& PROTOC_VERSION=29.2 \
4949
&& if [ $(dpkg --print-architecture) = "amd64" ]; then PROTOC_ARCH="x86_64"; else PROTOC_ARCH="aarch_64" ; fi \
5050
&& curl -LO "https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-$PROTOC_ARCH.zip" \
5151
&& unzip "protoc-${PROTOC_VERSION}-linux-$PROTOC_ARCH.zip" -d $HOME/.local \

BUILD.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -340,11 +340,11 @@ rfc3339nano - 2022-05-24T12:10:19.411Z
340340
341341
### Metrics Server logging
342342
343-
Find `--v=0` argument in Operator Deployment section in `config/metrics-server/deployment.yaml` file, modify its value and redeploy.
343+
The Metrics Server logging can be configured in a similar way to the KEDA Operator and Admission Webhooks. The configuration is done in the `config/metrics-server/deployment.yaml` file.
344344
345-
Allowed values are `"0"` for info, `"4"` for debug, or an integer value greater than `0`, specified as string
345+
To change the logging format, find the `--zap-encoder=` argument and modify its value. The allowed values are `json` and `console`. The default value is `console`.
346346
347-
Default value: `"0"`
347+
To change the logging time encoding, find the `--zap-time-encoding=` argument and modify its value. The allowed values are `epoch`, `millis`, `nano`, `iso8601`, `rfc3339`, or `rfc3339nano`. The default value is `rfc3339`.
348348
349349
### CPU/Memory Profiling
350350

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ Here is an overview of all new **experimental** features:
8989
- **General**: Centralize and improve automaxprocs configuration with proper structured logging ([#5970](https://github.com/kedacore/keda/issues/5970))
9090
- **General**: Fix event text when deactivation fails ([#6469](https://github.com/kedacore/keda/issues/6469))
9191
- **General**: Paused ScaledObject count is reported correctly after operator restart ([#6321](https://github.com/kedacore/keda/issues/6321))
92+
- **General**: Remove klogr dependency and replace with zap ([#6578](https://github.com/kedacore/keda/issues/5732))
9293
- **General**: ScaledJobs ready status set to true when recoverred problem ([#6329](https://github.com/kedacore/keda/pull/6329))
9394
- **AWS Scalers**: Add AWS region to the AWS Config Cache key ([#6128](https://github.com/kedacore/keda/issues/6128))
9495
- **Redis Streams**: Allow default value of 0 for activationLagCount ([#6478](https://github.com/kedacore/keda/issues/6478))

cmd/adapter/main.go

+24-24
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ import (
3232
kubemetrics "k8s.io/component-base/metrics"
3333
"k8s.io/component-base/metrics/legacyregistry"
3434
"k8s.io/klog/v2"
35-
"k8s.io/klog/v2/klogr"
3635
ctrl "sigs.k8s.io/controller-runtime"
3736
ctrlcache "sigs.k8s.io/controller-runtime/pkg/cache"
37+
"sigs.k8s.io/controller-runtime/pkg/log/zap"
3838
ctrlmetrics "sigs.k8s.io/controller-runtime/pkg/metrics"
3939
"sigs.k8s.io/controller-runtime/pkg/metrics/server"
4040
basecmd "sigs.k8s.io/custom-metrics-apiserver/pkg/cmd"
@@ -54,10 +54,7 @@ type Adapter struct {
5454
Message string
5555
}
5656

57-
// https://github.com/kedacore/keda/issues/5732
58-
//
59-
//nolint:staticcheck // SA1019: klogr.New is deprecated.
60-
var logger = klogr.New().WithName("keda_metrics_adapter")
57+
var setupLog = ctrl.Log.WithName("keda_metrics_adapter")
6158

6259
var (
6360
adapterClientRequestQPS float32
@@ -72,16 +69,16 @@ var (
7269
func (a *Adapter) makeProvider(ctx context.Context) (provider.ExternalMetricsProvider, error) {
7370
scheme := scheme.Scheme
7471
if err := appsv1.SchemeBuilder.AddToScheme(scheme); err != nil {
75-
logger.Error(err, "failed to add apps/v1 scheme to runtime scheme")
72+
setupLog.Error(err, "failed to add apps/v1 scheme to runtime scheme")
7673
return nil, fmt.Errorf("failed to add apps/v1 scheme to runtime scheme (%s)", err)
7774
}
7875
if err := kedav1alpha1.SchemeBuilder.AddToScheme(scheme); err != nil {
79-
logger.Error(err, "failed to add keda scheme to runtime scheme")
76+
setupLog.Error(err, "failed to add keda scheme to runtime scheme")
8077
return nil, fmt.Errorf("failed to add keda scheme to runtime scheme (%s)", err)
8178
}
8279
namespaces, err := kedautil.GetWatchNamespaces()
8380
if err != nil {
84-
logger.Error(err, "failed to get watch namespace")
81+
setupLog.Error(err, "failed to get watch namespace")
8582
return nil, fmt.Errorf("failed to get watch namespace (%s)", err)
8683
}
8784

@@ -104,23 +101,23 @@ func (a *Adapter) makeProvider(ctx context.Context) (provider.ExternalMetricsPro
104101
PprofBindAddress: profilingAddr,
105102
})
106103
if err != nil {
107-
logger.Error(err, "failed to setup manager")
104+
setupLog.Error(err, "failed to setup manager")
108105
return nil, err
109106
}
110107

111-
logger.Info("Connecting Metrics Service gRPC client to the server", "address", metricsServiceAddr)
108+
setupLog.Info("Connecting Metrics Service gRPC client to the server", "address", metricsServiceAddr)
112109
grpcClient, err := metricsservice.NewGrpcClient(metricsServiceAddr, a.SecureServing.ServerCert.CertDirectory, metricsServiceGRPCAuthority, clientMetrics)
113110
if err != nil {
114-
logger.Error(err, "error connecting Metrics Service gRPC client to the server", "address", metricsServiceAddr)
111+
setupLog.Error(err, "error connecting Metrics Service gRPC client to the server", "address", metricsServiceAddr)
115112
return nil, err
116113
}
117114
go func() {
118115
if err := mgr.Start(ctx); err != nil {
119-
logger.Error(err, "controller-runtime encountered an error")
116+
setupLog.Error(err, "controller-runtime encountered an error")
120117
os.Exit(1)
121118
}
122119
}()
123-
return kedaprovider.NewProvider(ctx, logger, mgr.GetClient(), *grpcClient), nil
120+
return kedaprovider.NewProvider(ctx, setupLog, mgr.GetClient(), *grpcClient), nil
124121
}
125122

126123
// getMetricHandler returns a http handler that exposes metrics from controller-runtime and apiserver
@@ -181,7 +178,7 @@ func RunMetricsServer(ctx context.Context) {
181178
}
182179

183180
go func() {
184-
logger.Info("starting /metrics server endpoint")
181+
setupLog.Info("starting /metrics server endpoint")
185182
// nosemgrep: use-tls
186183
err := server.ListenAndServe()
187184
if err != http.ErrServerClosed {
@@ -192,7 +189,7 @@ func RunMetricsServer(ctx context.Context) {
192189
go func() {
193190
<-ctx.Done()
194191
if err := server.Shutdown(ctx); err != nil {
195-
logger.Error(err, "http server shutdown error")
192+
setupLog.Error(err, "http server shutdown error")
196193
}
197194
}()
198195
}
@@ -207,15 +204,15 @@ func generateDefaultMetricsServiceAddr() string {
207204
func printWelcomeMsg(cmd *Adapter) error {
208205
clientset, err := cmd.DiscoveryClient()
209206
if err != nil {
210-
logger.Error(err, "not able to get Kubernetes version")
207+
setupLog.Error(err, "not able to get Kubernetes version")
211208
return err
212209
}
213210
version, err := clientset.ServerVersion()
214211
if err != nil {
215-
logger.Error(err, "not able to get Kubernetes version")
212+
setupLog.Error(err, "not able to get Kubernetes version")
216213
return err
217214
}
218-
kedautil.PrintWelcome(logger, kedautil.NewK8sVersion(version), "metrics server")
215+
kedautil.PrintWelcome(setupLog, kedautil.NewK8sVersion(version), "metrics server")
219216

220217
return nil
221218
}
@@ -225,7 +222,7 @@ func main() {
225222
var err error
226223
defer func() {
227224
if err != nil {
228-
logger.Error(err, "unable to run external metrics adapter")
225+
setupLog.Error(err, "unable to run external metrics adapter")
229226
}
230227
}()
231228

@@ -235,6 +232,9 @@ func main() {
235232
cmd := &Adapter{}
236233
cmd.Name = "keda-adapter"
237234

235+
opts := zap.Options{}
236+
opts.BindFlags(flag.CommandLine)
237+
238238
cmd.Flags().StringVar(&cmd.Message, "msg", "starting adapter...", "startup message")
239239
cmd.Flags().AddGoFlagSet(flag.CommandLine) // make sure we get the klog flags
240240
cmd.Flags().IntVar(&metricsAPIServerPort, "port", 8080, "Set the port for the metrics API server")
@@ -249,27 +249,27 @@ func main() {
249249
return
250250
}
251251

252-
ctrl.SetLogger(logger)
252+
ctrl.SetLogger(setupLog)
253253

254254
err = printWelcomeMsg(cmd)
255255
if err != nil {
256256
return
257257
}
258258

259-
err = kedautil.ConfigureMaxProcs(logger)
259+
err = kedautil.ConfigureMaxProcs(setupLog)
260260
if err != nil {
261-
logger.Error(err, "failed to set max procs")
261+
setupLog.Error(err, "failed to set max procs")
262262
return
263263
}
264264

265265
kedaProvider, err := cmd.makeProvider(ctx)
266266
if err != nil {
267-
logger.Error(err, "making provider")
267+
setupLog.Error(err, "making provider")
268268
return
269269
}
270270
cmd.WithExternalMetrics(kedaProvider)
271271

272-
logger.Info(cmd.Message)
272+
setupLog.Info(cmd.Message)
273273

274274
RunMetricsServer(ctx)
275275

config/metrics-server/deployment.yaml

+3-3
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,9 @@ spec:
5757
args:
5858
- /usr/local/bin/keda-adapter
5959
- --secure-port=6443
60-
- --logtostderr=true
61-
- --stderrthreshold=ERROR
62-
- --v=0
60+
- --zap-log-level=info
61+
- --zap-encoder=console
62+
- --zap-time-encoding=rfc3339
6363
- --client-ca-file=/certs/ca.crt
6464
- --tls-cert-file=/certs/tls.crt
6565
- --tls-private-key-file=/certs/tls.key

vendor/k8s.io/klog/v2/klogr/README.md

-19
This file was deleted.

0 commit comments

Comments
 (0)