1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-30 19:35:06 +00:00

feat: add signal in internal cmd package (#5444)

* feat: add signal in internal cmd package

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* logger

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
This commit is contained in:
Charles-Edouard Brétéché 2022-11-23 08:28:19 +01:00 committed by GitHub
parent f4c2f24208
commit a6c8c401ff
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 29 additions and 27 deletions

View file

@ -5,8 +5,6 @@ import (
"flag"
"net/http"
"os"
"os/signal"
"syscall"
"time"
"github.com/go-logr/logr"
@ -130,10 +128,6 @@ func setupMetrics(logger logr.Logger, kubeClient kubernetes.Interface) (*metrics
return metricsConfig, cancel, nil
}
func setupSignals() (context.Context, context.CancelFunc) {
return signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
}
func main() {
// config
appConfig := internal.NewConfiguration(internal.WithProfiling(), internal.WithTracing())
@ -154,7 +148,7 @@ func main() {
os.Exit(1)
}
// setup signals
signalCtx, signalCancel := setupSignals()
signalCtx, signalCancel := internal.SetupSignals(logger)
defer signalCancel()
// setup metrics
metricsConfig, metricsShutdown, err := setupMetrics(logger, rawClient)

View file

@ -8,9 +8,7 @@ import (
"encoding/json"
"flag"
"os"
"os/signal"
"sync"
"syscall"
"time"
kyvernov1beta1 "github.com/kyverno/kyverno/api/kyverno/v1beta1"
@ -64,11 +62,8 @@ func main() {
// show version
internal.ShowVersion(logger)
// os signal handler
signalCtx, signalCancel := signal.NotifyContext(logging.Background(), os.Interrupt, syscall.SIGTERM)
signalCtx, signalCancel := internal.SetupSignals(logger)
defer signalCancel()
stopCh := signalCtx.Done()
// create client config
clientConfig, err := config.CreateClientConfig(kubeconfig, clientRateLimitQPS, clientRateLimitBurst)
if err != nil {
@ -120,7 +115,7 @@ func main() {
go func() {
defer signalCancel()
<-stopCh
<-signalCtx.Done()
}()
done := make(chan struct{})
@ -152,13 +147,13 @@ func main() {
}
// use pipeline to pass request to cleanup resources
in := gen(done, stopCh, requests...)
in := gen(done, signalCtx.Done(), requests...)
// process requests
// processing routine count : 2
p1 := process(client, pclient, done, stopCh, in)
p2 := process(client, pclient, done, stopCh, in)
p1 := process(client, pclient, done, signalCtx.Done(), in)
p2 := process(client, pclient, done, signalCtx.Done(), in)
// merge results from processing routines
for err := range merge(done, stopCh, p1, p2) {
for err := range merge(done, signalCtx.Done(), p1, p2) {
if err != nil {
failure = true
logging.Error(err, "failed to cleanup resource")

View file

@ -9,6 +9,7 @@ import (
func SetupMaxProcs(logger logr.Logger) func() {
logger = logger.WithName("maxprocs")
logger.Info("setup maxprocs...")
undo, err := maxprocs.Set(
maxprocs.Logger(
func(format string, args ...interface{}) {

View file

@ -9,8 +9,8 @@ import (
func SetupProfiling(logger logr.Logger) {
logger = logger.WithName("profiling").WithValues("enabled", profilingEnabled, "address", profilingAddress, "port", profilingPort)
logger.Info("start profiling...")
if profilingEnabled {
logger.Info("setup profiling...")
profiling.Start(logger, net.JoinHostPort(profilingAddress, profilingPort))
}
}

18
cmd/internal/signal.go Normal file
View file

@ -0,0 +1,18 @@
package internal
import (
"context"
"os"
"os/signal"
"syscall"
"github.com/go-logr/logr"
)
var Context = context.Background()
func SetupSignals(logger logr.Logger) (context.Context, context.CancelFunc) {
logger = logger.WithName("signals")
logger.Info("setup signals...")
return signal.NotifyContext(Context, os.Interrupt, syscall.SIGTERM)
}

View file

@ -11,8 +11,8 @@ import (
func SetupTracing(logger logr.Logger, name string, kubeClient kubernetes.Interface) context.CancelFunc {
logger = logger.WithName("tracing").WithValues("enabled", tracingEnabled, "address", tracingAddress, "port", tracingPort, "creds", tracingCreds)
logger.Info("setup tracing...")
if tracingEnabled {
logger.Info("setup tracing...")
shutdown, err := tracing.NewTraceConfig(
logger,
name,

View file

@ -8,10 +8,8 @@ import (
"fmt"
"net/http"
"os"
"os/signal"
"strings"
"sync"
"syscall"
"time"
"github.com/go-logr/logr"
@ -260,10 +258,6 @@ func setupCosign(logger logr.Logger) {
}
}
func setupSignals() (context.Context, context.CancelFunc) {
return signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
}
func showWarnings(logger logr.Logger) {
logger = logger.WithName("warnings")
// DEPRECATED: remove in 1.9
@ -499,7 +493,7 @@ func main() {
defer metricsShutdown()
}
// setup signals
signalCtx, signalCancel := setupSignals()
signalCtx, signalCancel := internal.SetupSignals(logger)
defer signalCancel()
// create instrumented clients
kubeClient, kubeClientLeaderElection, kyvernoClient, dynamicClient, err := createInstrumentedClients(signalCtx, logger, clientConfig, metricsConfig)