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:
parent
f4c2f24208
commit
a6c8c401ff
7 changed files with 29 additions and 27 deletions
|
@ -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)
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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{}) {
|
||||
|
|
|
@ -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
18
cmd/internal/signal.go
Normal 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)
|
||||
}
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue