Skip to content

Commit 8703f0e

Browse files
authored
allow k8s events in initial validation (#6814)
1 parent 5d0b230 commit 8703f0e

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

cmd/nginx-ingress/main.go

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package main
22

33
import (
4+
"bytes"
45
"context"
56
"fmt"
67
"io"
@@ -37,9 +38,11 @@ import (
3738
"k8s.io/client-go/dynamic"
3839
"k8s.io/client-go/kubernetes"
3940
"k8s.io/client-go/kubernetes/scheme"
41+
core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
4042
"k8s.io/client-go/rest"
4143
"k8s.io/client-go/tools/clientcmd"
4244
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
45+
"k8s.io/client-go/tools/record"
4346

4447
kitlog "github.com/go-kit/log"
4548

@@ -88,6 +91,15 @@ func main() {
8891

8992
config, kubeClient := mustCreateConfigAndKubeClient(ctx)
9093
mustValidateKubernetesVersionInfo(ctx, kubeClient)
94+
eventBroadcaster := record.NewBroadcaster()
95+
eventBroadcaster.StartLogging(func(format string, args ...interface{}) {
96+
nl.Infof(l, format, args...)
97+
})
98+
eventBroadcaster.StartRecordingToSink(&core_v1.EventSinkImpl{
99+
Interface: core_v1.New(kubeClient.CoreV1().RESTClient()).Events(""),
100+
})
101+
eventRecorder := eventBroadcaster.NewRecorder(scheme.Scheme,
102+
api_v1.EventSource{Component: "nginx-ingress-controller"})
91103
mustValidateIngressClass(ctx, kubeClient)
92104

93105
checkNamespaces(ctx, kubeClient)
@@ -126,7 +138,7 @@ func main() {
126138
agentVersion = getAgentVersionInfo(nginxManager)
127139
}
128140

129-
go updateSelfWithVersionInfo(ctx, kubeClient, version, appProtectVersion, agentVersion, nginxVersion, 10, time.Second*5)
141+
go updateSelfWithVersionInfo(ctx, eventRecorder, kubeClient, version, appProtectVersion, agentVersion, nginxVersion, 10, time.Second*5)
130142

131143
templateExecutor, templateExecutorV2 := createTemplateExecutors(ctx)
132144

@@ -218,6 +230,7 @@ func main() {
218230
ConfClient: confClient,
219231
DynClient: dynClient,
220232
RestConfig: config,
233+
Recorder: eventRecorder,
221234
ResyncPeriod: 30 * time.Second,
222235
LoggerContext: ctx,
223236
Namespace: watchNamespaces,
@@ -877,7 +890,7 @@ func processConfigMaps(kubeClient *kubernetes.Clientset, cfgParams *configs.Conf
877890
return cfgParams
878891
}
879892

880-
func updateSelfWithVersionInfo(ctx context.Context, kubeClient *kubernetes.Clientset, version, appProtectVersion, agentVersion string, nginxVersion nginx.Version, maxRetries int, waitTime time.Duration) {
893+
func updateSelfWithVersionInfo(ctx context.Context, eventLog record.EventRecorder, kubeClient *kubernetes.Clientset, version, appProtectVersion, agentVersion string, nginxVersion nginx.Version, maxRetries int, waitTime time.Duration) {
881894
l := nl.LoggerFromContext(ctx)
882895
podUpdated := false
883896

@@ -914,6 +927,11 @@ func updateSelfWithVersionInfo(ctx context.Context, kubeClient *kubernetes.Clien
914927
continue
915928
}
916929

930+
labelsString := new(bytes.Buffer)
931+
for key, value := range labels {
932+
fmt.Fprintf(labelsString, "%s=\"%s\", ", key, value)
933+
}
934+
eventLog.Eventf(newPod, api_v1.EventTypeNormal, "UpdatePodLabel", "Successfully added version labels, %s", strings.TrimRight(labelsString.String(), ", "))
917935
nl.Infof(l, "Pod label updated: %s", pod.ObjectMeta.Name)
918936
podUpdated = true
919937
}

internal/k8s/controller.go

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@ import (
4444
"k8s.io/apimachinery/pkg/types"
4545
"k8s.io/apimachinery/pkg/util/intstr"
4646
"k8s.io/client-go/kubernetes"
47-
"k8s.io/client-go/kubernetes/scheme"
48-
core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
4947
"k8s.io/client-go/tools/cache"
5048
"k8s.io/client-go/tools/leaderelection"
5149
"k8s.io/client-go/tools/record"
@@ -183,6 +181,7 @@ type NewLoadBalancerControllerInput struct {
183181
ConfClient k8s_nginx.Interface
184182
DynClient dynamic.Interface
185183
RestConfig *rest.Config
184+
Recorder record.EventRecorder
186185
ResyncPeriod time.Duration
187186
LoggerContext context.Context
188187
Namespace []string
@@ -239,6 +238,7 @@ func NewLoadBalancerController(input NewLoadBalancerControllerInput) *LoadBalanc
239238
confClient: input.ConfClient,
240239
dynClient: input.DynClient,
241240
restConfig: input.RestConfig,
241+
recorder: input.Recorder,
242242
Logger: nl.LoggerFromContext(input.LoggerContext),
243243
configurator: input.NginxConfigurator,
244244
specialSecrets: specialSecrets,
@@ -264,15 +264,6 @@ func NewLoadBalancerController(input NewLoadBalancerControllerInput) *LoadBalanc
264264
isIPV6Disabled: input.IsIPV6Disabled,
265265
weightChangesDynamicReload: input.DynamicWeightChangesReload,
266266
}
267-
eventBroadcaster := record.NewBroadcaster()
268-
eventBroadcaster.StartLogging(func(format string, args ...interface{}) {
269-
nl.Infof(lbc.Logger, format, args...)
270-
})
271-
eventBroadcaster.StartRecordingToSink(&core_v1.EventSinkImpl{
272-
Interface: core_v1.New(input.KubeClient.CoreV1().RESTClient()).Events(""),
273-
})
274-
lbc.recorder = eventBroadcaster.NewRecorder(scheme.Scheme,
275-
api_v1.EventSource{Component: "nginx-ingress-controller"})
276267

277268
lbc.syncQueue = newTaskQueue(lbc.Logger, lbc.sync)
278269
var err error

0 commit comments

Comments
 (0)