diff --git a/CHANGELOG.md b/CHANGELOG.md index 8791115eae..d8280e28bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -104,6 +104,9 @@ Adding a new version? You'll need three changes: [#5128](https://github.com/Kong/kubernetes-ingress-controller/pull/5128) - Added `-init-cache-sync-duration` CLI flag. This flag configures how long the controller waits for Kubernetes resources to populate at startup before generating the initial Kong configuration. It also fixes a bug that removed the default 5 second wait period. [#5238](https://github.com/Kong/kubernetes-ingress-controller/pull/5238) +- Added `--emit-translation-events` CLI flag to disable the creation of events + in translating and applying configurations to Kong. + [#5296](https://github.com/Kong/kubernetes-ingress-controller/pull/5296) ### Fixed diff --git a/docs/cli-arguments.md b/docs/cli-arguments.md index f16e5c6b45..06201678ea 100644 --- a/docs/cli-arguments.md +++ b/docs/cli-arguments.md @@ -18,6 +18,7 @@ | `--dump-sensitive-config` | `bool` | Include credentials and TLS secrets in configs exposed with --dump-config flag. | `false` | | `--election-id` | `string` | Election id to use for status update. | `5b374a9e.konghq.com` | | `--election-namespace` | `string` | Leader election namespace to use when running outside a cluster. | | +| `--emit-translation-events` | `bool` | Emit Kubernetes events for successful configuration applies, translation failures and configuration apply failures on managed objects. | `true` | | `--enable-controller-gwapi-gateway` | `bool` | Enable the Gateway API Gateway controller. | `true` | | `--enable-controller-gwapi-httproute` | `bool` | Enable the Gateway API HTTPRoute controller. | `true` | | `--enable-controller-gwapi-reference-grant` | `bool` | Enable the Gateway API ReferenceGrant controller. | `true` | diff --git a/internal/manager/config.go b/internal/manager/config.go index 1fd8a3ebcf..62675e91ff 100644 --- a/internal/manager/config.go +++ b/internal/manager/config.go @@ -85,6 +85,7 @@ type Config struct { WatchNamespaces []string GatewayAPIControllerName string Impersonate string + EmitTranslationEvents bool // Ingress status PublishServiceUDP OptionalNamespacedName @@ -213,6 +214,7 @@ func (c *Config) FlagSet() *pflag.FlagSet { flagSet.IntVar(&c.Concurrency, "kong-admin-concurrency", 10, "Max number of concurrent requests sent to Kong's Admin API.") flagSet.StringSliceVar(&c.WatchNamespaces, "watch-namespace", nil, `Namespace(s) in comma-separated format (or specify this flag multiple times) to watch for Kubernetes resources. Defaults to all namespaces.`) + flagSet.BoolVar(&c.EmitTranslationEvents, "emit-translation-events", true, `Emit Kubernetes events for successful configuration applies, translation failures and configuration apply failures on managed objects.`) // Ingress status flagSet.Var(flags.NewValidatedValue(&c.PublishService, namespacedNameFromFlagValue, nnTypeNameOverride), "publish-service", diff --git a/internal/manager/run.go b/internal/manager/run.go index 36e0ce20bd..53855812bd 100644 --- a/internal/manager/run.go +++ b/internal/manager/run.go @@ -14,6 +14,7 @@ import ( "github.com/blang/semver/v4" "github.com/go-logr/logr" "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/client-go/tools/record" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/healthz" "sigs.k8s.io/controller-runtime/pkg/manager" @@ -140,7 +141,14 @@ func Run( } setupLog.Info("Initializing Dataplane Client") - eventRecorder := mgr.GetEventRecorderFor(KongClientEventRecorderComponentName) + var eventRecorder record.EventRecorder + if c.EmitTranslationEvents { + setupLog.Info("Emit translation event enabled, create event recorder for " + KongClientEventRecorderComponentName) + eventRecorder = mgr.GetEventRecorderFor(KongClientEventRecorderComponentName) + } else { + setupLog.Info("Emit translation event disabled, discard all events") + eventRecorder = &record.FakeRecorder{} + } readinessChecker := clients.NewDefaultReadinessChecker(adminAPIClientsFactory, setupLog.WithName("readiness-checker")) clientsManager, err := clients.NewAdminAPIClientsManager(