-
Notifications
You must be signed in to change notification settings - Fork 0
feat: added multi-cluster runtime #90
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 13 commits
6f6ca05
b6fa6db
4252595
d39792c
b8ecc8d
a791d78
8bb6eff
0d464da
eeee7ce
20edb47
a9436cd
825f8cb
8ef79da
1006d1e
88c5326
32b9602
790482c
e1e48c3
37e4cd3
51ba5a7
7b58513
b6d3bfa
da0c6e5
51299d3
98124c4
26f5b3c
c719876
24128f8
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -3,7 +3,9 @@ package cmd | |||||||||||||||||||||||||||
| import ( | ||||||||||||||||||||||||||||
| "context" | ||||||||||||||||||||||||||||
| "crypto/tls" | ||||||||||||||||||||||||||||
| "fmt" | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| "github.com/kcp-dev/multicluster-provider/apiexport" | ||||||||||||||||||||||||||||
| platformeshcontext "github.com/platform-mesh/golang-commons/context" | ||||||||||||||||||||||||||||
| appsv1 "k8s.io/api/apps/v1" | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
|
|
@@ -13,9 +15,9 @@ import ( | |||||||||||||||||||||||||||
| "k8s.io/client-go/rest" | ||||||||||||||||||||||||||||
| ctrl "sigs.k8s.io/controller-runtime" | ||||||||||||||||||||||||||||
| "sigs.k8s.io/controller-runtime/pkg/healthz" | ||||||||||||||||||||||||||||
| "sigs.k8s.io/controller-runtime/pkg/kcp" | ||||||||||||||||||||||||||||
| "sigs.k8s.io/controller-runtime/pkg/manager" | ||||||||||||||||||||||||||||
| "sigs.k8s.io/controller-runtime/pkg/metrics/server" | ||||||||||||||||||||||||||||
| mcmanager "sigs.k8s.io/multicluster-runtime/pkg/manager" | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| securityv1alpha1 "github.com/platform-mesh/security-operator/api/v1alpha1" | ||||||||||||||||||||||||||||
| "github.com/platform-mesh/security-operator/internal/controller" | ||||||||||||||||||||||||||||
|
|
@@ -56,18 +58,31 @@ var modelGeneratorCmd = &cobra.Command{ | |||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||
| mgrOpts.LeaderElectionConfig = inClusterCfg | ||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||
| runtimeScheme := runtime.NewScheme() | ||||||||||||||||||||||||||||
| utilruntime.Must(appsv1.AddToScheme(runtimeScheme)) | ||||||||||||||||||||||||||||
| utilruntime.Must(securityv1alpha1.AddToScheme(runtimeScheme)) | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| mgr, err := kcp.NewClusterAwareManager(cfg, mgrOpts) | ||||||||||||||||||||||||||||
| if mgrOpts.Scheme == nil { | ||||||||||||||||||||||||||||
| log.Error().Err(fmt.Errorf("scheme should not be nil")).Msg("scheme should not be nil") | ||||||||||||||||||||||||||||
| return fmt.Errorf("scheme should not be nil") | ||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||
|
Comment on lines
+61
to
+68
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Redundant scheme initialization and check. A new Apply this diff to fix the scheme initialization: - runtimeScheme := runtime.NewScheme()
- utilruntime.Must(appsv1.AddToScheme(runtimeScheme))
- utilruntime.Must(securityv1alpha1.AddToScheme(runtimeScheme))
-
if mgrOpts.Scheme == nil {
log.Error().Err(fmt.Errorf("scheme should not be nil")).Msg("scheme should not be nil")
return fmt.Errorf("scheme should not be nil")
}Or, if you intended to use the new scheme: runtimeScheme := runtime.NewScheme()
utilruntime.Must(appsv1.AddToScheme(runtimeScheme))
utilruntime.Must(securityv1alpha1.AddToScheme(runtimeScheme))
+ mgrOpts.Scheme = runtimeScheme
if mgrOpts.Scheme == nil {📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| provider, err := apiexport.New(cfg, apiexport.Options{ | ||||||||||||||||||||||||||||
| Scheme: mgrOpts.Scheme, | ||||||||||||||||||||||||||||
| }) | ||||||||||||||||||||||||||||
| if err != nil { | ||||||||||||||||||||||||||||
| setupLog.Error(err, "unable to setup manager") | ||||||||||||||||||||||||||||
| log.Error().Err(err).Msg("Failed to create apiexport provider") | ||||||||||||||||||||||||||||
| return err | ||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| runtimeScheme := runtime.NewScheme() | ||||||||||||||||||||||||||||
| utilruntime.Must(appsv1.AddToScheme(runtimeScheme)) | ||||||||||||||||||||||||||||
| utilruntime.Must(securityv1alpha1.AddToScheme(runtimeScheme)) | ||||||||||||||||||||||||||||
| mgr, err := mcmanager.New(cfg, provider, mgrOpts) | ||||||||||||||||||||||||||||
| if err != nil { | ||||||||||||||||||||||||||||
| log.Error().Err(err).Msg("Failed to create manager") | ||||||||||||||||||||||||||||
| return err | ||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| if err := controller.NewAPIBindingReconciler(mgr.GetClient(), log, logicalClusterClientFromKey(mgr, log)). | ||||||||||||||||||||||||||||
| SetupWithManager(mgr, log, defaultCfg); err != nil { | ||||||||||||||||||||||||||||
| if err := controller.NewAPIBindingReconciler(log, mgr). | ||||||||||||||||||||||||||||
| SetupWithManager(mgr, defaultCfg); err != nil { | ||||||||||||||||||||||||||||
| setupLog.Error(err, "unable to create controller", "controller", "Resource") | ||||||||||||||||||||||||||||
| return err | ||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||
|
|
@@ -81,6 +96,12 @@ var modelGeneratorCmd = &cobra.Command{ | |||||||||||||||||||||||||||
| return err | ||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| go func() { | ||||||||||||||||||||||||||||
| if err := provider.Run(ctx, mgr); err != nil { | ||||||||||||||||||||||||||||
| log.Fatal().Err(err).Msg("unable to run provider") | ||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||
| }() | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| setupLog.Info("starting manager") | ||||||||||||||||||||||||||||
| if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil { | ||||||||||||||||||||||||||||
| setupLog.Error(err, "problem running manager") | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -11,6 +11,7 @@ import ( | |
| apisv1alpha1 "github.com/kcp-dev/kcp/sdk/apis/apis/v1alpha1" | ||
| kcpcorev1alpha1 "github.com/kcp-dev/kcp/sdk/apis/core/v1alpha1" | ||
| "github.com/kcp-dev/logicalcluster/v3" | ||
| "github.com/kcp-dev/multicluster-provider/apiexport" | ||
| accountsv1alpha1 "github.com/platform-mesh/account-operator/api/v1alpha1" | ||
| "google.golang.org/grpc" | ||
| "google.golang.org/grpc/credentials/insecure" | ||
|
|
@@ -23,8 +24,9 @@ import ( | |
| ctrl "sigs.k8s.io/controller-runtime" | ||
| "sigs.k8s.io/controller-runtime/pkg/client" | ||
| "sigs.k8s.io/controller-runtime/pkg/healthz" | ||
| "sigs.k8s.io/controller-runtime/pkg/kcp" | ||
|
|
||
| metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server" | ||
| mcmanager "sigs.k8s.io/multicluster-runtime/pkg/manager" | ||
|
|
||
| openfgav1 "github.com/openfga/api/proto/openfga/v1" | ||
| platformeshcontext "github.com/platform-mesh/golang-commons/context" | ||
|
|
@@ -43,6 +45,7 @@ var ( | |
| scheme = runtime.NewScheme() | ||
| ) | ||
|
|
||
| // TODO try to use multi-cluster runtime for client creation | ||
|
||
| func logicalClusterClientFromKey(mgr ctrl.Manager, log *logger.Logger) subroutine.NewLogicalClusterClientFunc { | ||
| return func(clusterKey logicalcluster.Name) (client.Client, error) { | ||
| cfg := rest.CopyConfig(mgr.GetConfig()) | ||
|
|
@@ -110,9 +113,22 @@ var operatorCmd = &cobra.Command{ | |
| mgrOpts.LeaderElectionConfig = inClusterCfg | ||
| } | ||
|
|
||
| mgr, err := kcp.NewClusterAwareManager(cfg, mgrOpts) | ||
| if mgrOpts.Scheme == nil { | ||
| log.Error().Err(fmt.Errorf("scheme should not be nil")).Msg("scheme should not be nil") | ||
| return fmt.Errorf("scheme should not be nil") | ||
| } | ||
|
|
||
| provider, err := apiexport.New(cfg, apiexport.Options{ | ||
| Scheme: mgrOpts.Scheme, | ||
| }) | ||
| if err != nil { | ||
| setupLog.Error(err, "unable to construct cluster provider") | ||
| return err | ||
| } | ||
|
|
||
| mgr, err := mcmanager.New(cfg, provider, mgrOpts) | ||
| if err != nil { | ||
| log.Error().Err(err).Msg("unable to start manager") | ||
| setupLog.Error(err, "Failed to create manager") | ||
| return err | ||
| } | ||
|
|
||
|
|
@@ -124,14 +140,14 @@ var operatorCmd = &cobra.Command{ | |
|
|
||
| fga := openfgav1.NewOpenFGAServiceClient(conn) | ||
|
|
||
| if err = controller.NewStoreReconciler(log, mgr.GetClient(), fga, logicalClusterClientFromKey(mgr, log)). | ||
| SetupWithManager(mgr, defaultCfg, log); err != nil { | ||
| if err = controller.NewStoreReconciler(log, mgr.GetLocalManager().GetClient(), fga, logicalClusterClientFromKey(mgr.GetLocalManager(), log), mgr). | ||
| SetupWithManager(mgr.GetLocalManager(), defaultCfg, log); err != nil { | ||
| log.Error().Err(err).Str("controller", "store").Msg("unable to create controller") | ||
| return err | ||
| } | ||
| if err = controller. | ||
| NewAuthorizationModelReconciler(log, mgr.GetClient(), fga, logicalClusterClientFromKey(mgr, log)). | ||
| SetupWithManager(mgr, defaultCfg, log); err != nil { | ||
| NewAuthorizationModelReconciler(log, mgr.GetLocalManager().GetClient(), fga, logicalClusterClientFromKey(mgr.GetLocalManager(), log), mgr, provider). | ||
| SetupWithManager(mgr.GetLocalManager(), defaultCfg, log); err != nil { | ||
| log.Error().Err(err).Str("controller", "authorizationmodel").Msg("unable to create controller") | ||
| return err | ||
| } | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2,93 +2,65 @@ module github.com/platform-mesh/security-operator | |
|
|
||
| go 1.24.5 | ||
|
||
|
|
||
| replace sigs.k8s.io/controller-runtime => github.com/kcp-dev/controller-runtime v0.19.0-kcp.1 | ||
|
|
||
| replace ( | ||
| k8s.io/api => github.com/kcp-dev/kubernetes/staging/src/k8s.io/api v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/apimachinery => github.com/kcp-dev/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/apiserver => github.com/kcp-dev/kubernetes/staging/src/k8s.io/apiserver v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/client-go => github.com/kcp-dev/kubernetes/staging/src/k8s.io/client-go v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/cloud-provider => github.com/kcp-dev/kubernetes/staging/src/k8s.io/cloud-provider v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/cluster-bootstrap => github.com/kcp-dev/kubernetes/staging/src/k8s.io/cluster-bootstrap v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/code-generator => github.com/kcp-dev/kubernetes/staging/src/k8s.io/code-generator v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/component-base => github.com/kcp-dev/kubernetes/staging/src/k8s.io/component-base v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/component-helpers => github.com/kcp-dev/kubernetes/staging/src/k8s.io/component-helpers v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/controller-manager => github.com/kcp-dev/kubernetes/staging/src/k8s.io/controller-manager v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/cri-api => github.com/kcp-dev/kubernetes/staging/src/k8s.io/cri-api v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/cri-client => github.com/kcp-dev/kubernetes/staging/src/k8s.io/cri-client v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/csi-translation-lib => github.com/kcp-dev/kubernetes/staging/src/k8s.io/csi-translation-lib v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/dynamic-resource-allocation => github.com/kcp-dev/kubernetes/staging/src/k8s.io/dynamic-resource-allocation v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/endpointslice => github.com/kcp-dev/kubernetes/staging/src/k8s.io/endpointslice v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/externaljwt => github.com/kcp-dev/kubernetes/staging/src/k8s.io/externaljwt v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/kms => github.com/kcp-dev/kubernetes/staging/src/k8s.io/kms v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/kube-aggregator => github.com/kcp-dev/kubernetes/staging/src/k8s.io/kube-aggregator v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/kube-controller-manager => github.com/kcp-dev/kubernetes/staging/src/k8s.io/kube-controller-manager v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/kube-proxy => github.com/kcp-dev/kubernetes/staging/src/k8s.io/kube-proxy v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/kube-scheduler => github.com/kcp-dev/kubernetes/staging/src/k8s.io/kube-scheduler v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/kubectl => github.com/kcp-dev/kubernetes/staging/src/k8s.io/kubectl v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/kubelet => github.com/kcp-dev/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/kubernetes => github.com/kcp-dev/kubernetes v1.32.3 | ||
| k8s.io/metrics => github.com/kcp-dev/kubernetes/staging/src/k8s.io/metrics v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/mount-utils => github.com/kcp-dev/kubernetes/staging/src/k8s.io/mount-utils v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/pod-security-admission => github.com/kcp-dev/kubernetes/staging/src/k8s.io/pod-security-admission v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/sample-apiserver => github.com/kcp-dev/kubernetes/staging/src/k8s.io/sample-apiserver v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/sample-cli-plugin => github.com/kcp-dev/kubernetes/staging/src/k8s.io/sample-cli-plugin v0.0.0-20250816165010-ffe1d7c8649b | ||
| k8s.io/sample-controller => github.com/kcp-dev/kubernetes/staging/src/k8s.io/sample-controller v0.0.0-20250816165010-ffe1d7c8649b | ||
| ) | ||
|
|
||
| require ( | ||
| github.com/go-logr/logr v1.4.3 | ||
| github.com/kcp-dev/kcp/sdk v0.28.1-0.20250915073746-2b42b96efc54 | ||
| github.com/kcp-dev/logicalcluster/v3 v3.0.5 | ||
| github.com/kcp-dev/multicluster-provider v0.0.0-20250827085327-2b5ca378b7b4 | ||
| github.com/openfga/api/proto v0.0.0-20250909173124-0ac19aac54f2 | ||
| github.com/openfga/language/pkg/go v0.2.0-beta.2.0.20250428093642-7aeebe78bbfe | ||
| github.com/platform-mesh/account-operator v0.3.1 | ||
| github.com/platform-mesh/golang-commons v0.1.32 | ||
| github.com/platform-mesh/golang-commons v0.4.3 | ||
| github.com/spf13/cobra v1.10.1 | ||
| github.com/spf13/viper v1.21.0 | ||
| github.com/stretchr/testify v1.11.1 | ||
| google.golang.org/grpc v1.75.1 | ||
| google.golang.org/protobuf v1.36.10 | ||
| k8s.io/api v0.33.3 | ||
| k8s.io/apiextensions-apiserver v0.33.3 | ||
| k8s.io/apimachinery v0.33.3 | ||
| k8s.io/client-go v0.33.3 | ||
| google.golang.org/protobuf v1.36.9 | ||
| k8s.io/api v0.34.1 | ||
| k8s.io/apiextensions-apiserver v0.34.0 | ||
| k8s.io/apimachinery v0.34.1 | ||
| k8s.io/client-go v0.34.1 | ||
| sigs.k8s.io/controller-runtime v0.22.1 | ||
| sigs.k8s.io/multicluster-runtime v0.21.0-alpha.9 | ||
|
|
||
| ) | ||
|
|
||
| require ( | ||
| github.com/evanphx/json-patch v5.9.11+incompatible // indirect | ||
| github.com/fluxcd/pkg/apis/acl v0.7.0 // indirect | ||
| github.com/fluxcd/pkg/apis/kustomize v1.10.0 // indirect | ||
| github.com/fluxcd/pkg/apis/meta v1.12.0 // indirect | ||
| github.com/google/btree v1.1.3 // indirect | ||
| go.yaml.in/yaml/v3 v3.0.4 // indirect | ||
| golang.org/x/sync v0.17.0 // indirect | ||
| k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect | ||
| sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect | ||
| ) | ||
|
|
||
| require ( | ||
| github.com/99designs/gqlgen v0.17.78 // indirect | ||
| github.com/99designs/gqlgen v0.17.81 // indirect | ||
| github.com/antlr4-go/antlr/v4 v4.13.1 // indirect | ||
| github.com/beorn7/perks v1.0.1 // indirect | ||
| github.com/cenkalti/backoff/v5 v5.0.3 // indirect | ||
| github.com/cespare/xxhash/v2 v2.3.0 // indirect | ||
| github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect | ||
| github.com/emicklei/go-restful/v3 v3.12.1 // indirect | ||
| github.com/emicklei/go-restful/v3 v3.12.2 // indirect | ||
| github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect | ||
| github.com/evanphx/json-patch/v5 v5.9.11 // indirect | ||
| github.com/fluxcd/helm-controller/api v1.3.0 | ||
| github.com/fluxcd/source-controller/api v1.6.2 | ||
| github.com/fsnotify/fsnotify v1.9.0 // indirect | ||
| github.com/fxamacker/cbor/v2 v2.8.0 // indirect | ||
| github.com/getsentry/sentry-go v0.35.2 // indirect | ||
| github.com/go-jose/go-jose/v4 v4.1.1 // indirect | ||
| github.com/fxamacker/cbor/v2 v2.9.0 // indirect | ||
| github.com/getsentry/sentry-go v0.35.3 // indirect | ||
| github.com/go-jose/go-jose/v4 v4.1.2 // indirect | ||
| github.com/go-logr/stdr v1.2.2 // indirect | ||
| github.com/go-logr/zerologr v1.2.3 // indirect | ||
| github.com/go-openapi/jsonpointer v0.21.1 // indirect | ||
| github.com/go-openapi/jsonreference v0.21.0 // indirect | ||
| github.com/go-openapi/swag v0.23.1 // indirect | ||
| github.com/go-viper/mapstructure/v2 v2.4.0 // indirect | ||
| github.com/gogo/protobuf v1.3.2 // indirect | ||
| github.com/google/gnostic-models v0.6.9 // indirect | ||
| github.com/google/gnostic-models v0.7.0 // indirect | ||
| github.com/google/go-cmp v0.7.0 // indirect | ||
| github.com/google/uuid v1.6.0 // indirect | ||
| github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect | ||
|
|
@@ -99,21 +71,21 @@ require ( | |
| github.com/josharian/intern v1.0.0 // indirect | ||
| github.com/json-iterator/go v1.1.12 // indirect | ||
| github.com/kcp-dev/apimachinery/v2 v2.0.1-0.20250728122101-adbf20db3e51 // indirect | ||
| github.com/mailru/easyjson v0.9.0 // indirect | ||
| github.com/mailru/easyjson v0.9.0 // indirect; indir k8s.io/api v0.34.0 | ||
| github.com/mattn/go-colorable v0.1.14 // indirect | ||
| github.com/mattn/go-isatty v0.0.20 // indirect | ||
| github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | ||
| github.com/modern-go/reflect2 v1.0.2 // indirect | ||
| github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect | ||
| github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||
| github.com/onsi/gomega v1.36.2 // indirect | ||
| github.com/pelletier/go-toml/v2 v2.2.4 // indirect | ||
| github.com/pkg/errors v0.9.1 // indirect | ||
| github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect | ||
| github.com/prometheus/client_golang v1.23.0 // indirect | ||
| github.com/prometheus/client_golang v1.23.2 // indirect | ||
| github.com/prometheus/client_model v0.6.2 // indirect | ||
| github.com/prometheus/common v0.65.0 // indirect | ||
| github.com/prometheus/common v0.66.1 // indirect | ||
| github.com/prometheus/procfs v0.16.1 // indirect | ||
| github.com/rs/zerolog v1.34.0 // indirect | ||
| github.com/rs/zerolog v1.34.0 | ||
| github.com/sagikazarmark/locafero v0.11.0 // indirect | ||
| github.com/sosodev/duration v1.3.1 // indirect | ||
| github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect | ||
|
|
@@ -134,13 +106,13 @@ require ( | |
| go.opentelemetry.io/otel/trace v1.38.0 // indirect | ||
| go.opentelemetry.io/proto/otlp v1.8.0 // indirect | ||
| go.yaml.in/yaml/v2 v2.4.2 // indirect | ||
| golang.org/x/crypto v0.41.0 // indirect | ||
| golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect | ||
| golang.org/x/net v0.43.0 // indirect | ||
| golang.org/x/crypto v0.42.0 // indirect | ||
| golang.org/x/exp v0.0.0-20250911091902-df9299821621 // indirect | ||
| golang.org/x/net v0.44.0 // indirect | ||
| golang.org/x/oauth2 v0.31.0 // indirect | ||
| golang.org/x/sys v0.36.0 // indirect | ||
| golang.org/x/term v0.34.0 // indirect | ||
| golang.org/x/text v0.28.0 // indirect | ||
| golang.org/x/term v0.35.0 // indirect | ||
| golang.org/x/text v0.29.0 // indirect | ||
| golang.org/x/time v0.11.0 // indirect | ||
| gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect | ||
| google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect | ||
|
|
@@ -149,10 +121,8 @@ require ( | |
| gopkg.in/inf.v0 v0.9.1 // indirect | ||
| gopkg.in/yaml.v3 v3.0.1 // indirect | ||
| k8s.io/klog/v2 v2.130.1 // indirect | ||
| k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect | ||
| k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 | ||
| sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect | ||
| sigs.k8s.io/randfill v1.0.0 // indirect | ||
| sigs.k8s.io/structured-merge-diff/v4 v4.7.0 // indirect | ||
| sigs.k8s.io/yaml v1.6.0 | ||
| ) | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🟡 Lets replace it witth log.Fatal() which does basically the same(plus some additional flushing), but it will have more severe log level and is more relevant to this situation.