Skip to content

Commit 8aad004

Browse files
pdabelf5AlexFenlon
authored andcommitted
allow k8s events in initial validation (#6814)
1 parent 186ea2b commit 8aad004

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
"errors"
67
"fmt"
@@ -38,9 +39,11 @@ import (
3839
"k8s.io/client-go/dynamic"
3940
"k8s.io/client-go/kubernetes"
4041
"k8s.io/client-go/kubernetes/scheme"
42+
core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
4143
"k8s.io/client-go/rest"
4244
"k8s.io/client-go/tools/clientcmd"
4345
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
46+
"k8s.io/client-go/tools/record"
4447

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

@@ -90,6 +93,15 @@ func main() {
9093

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

95107
checkNamespaces(ctx, kubeClient)
@@ -128,7 +140,7 @@ func main() {
128140
agentVersion = getAgentVersionInfo(nginxManager)
129141
}
130142

131-
go updateSelfWithVersionInfo(ctx, kubeClient, version, appProtectVersion, agentVersion, nginxVersion, 10, time.Second*5)
143+
go updateSelfWithVersionInfo(ctx, eventRecorder, kubeClient, version, appProtectVersion, agentVersion, nginxVersion, 10, time.Second*5)
132144

133145
templateExecutor, templateExecutorV2 := createTemplateExecutors(ctx)
134146

@@ -230,6 +242,7 @@ func main() {
230242
ConfClient: confClient,
231243
DynClient: dynClient,
232244
RestConfig: config,
245+
Recorder: eventRecorder,
233246
ResyncPeriod: 30 * time.Second,
234247
LoggerContext: ctx,
235248
Namespace: watchNamespaces,
@@ -983,7 +996,7 @@ func processMGMTConfigMap(kubeClient *kubernetes.Clientset, mgmtCfgParams *confi
983996
return mgmtCfgParams
984997
}
985998

986-
func updateSelfWithVersionInfo(ctx context.Context, kubeClient *kubernetes.Clientset, version, appProtectVersion, agentVersion string, nginxVersion nginx.Version, maxRetries int, waitTime time.Duration) {
999+
func updateSelfWithVersionInfo(ctx context.Context, eventLog record.EventRecorder, kubeClient *kubernetes.Clientset, version, appProtectVersion, agentVersion string, nginxVersion nginx.Version, maxRetries int, waitTime time.Duration) {
9871000
l := nl.LoggerFromContext(ctx)
9881001
podUpdated := false
9891002

@@ -1020,6 +1033,11 @@ func updateSelfWithVersionInfo(ctx context.Context, kubeClient *kubernetes.Clien
10201033
continue
10211034
}
10221035

1036+
labelsString := new(bytes.Buffer)
1037+
for key, value := range labels {
1038+
fmt.Fprintf(labelsString, "%s=\"%s\", ", key, value)
1039+
}
1040+
eventLog.Eventf(newPod, api_v1.EventTypeNormal, "UpdatePodLabel", "Successfully added version labels, %s", strings.TrimRight(labelsString.String(), ", "))
10231041
nl.Infof(l, "Pod label updated: %s", pod.ObjectMeta.Name)
10241042
podUpdated = true
10251043
}

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"
@@ -189,6 +187,7 @@ type NewLoadBalancerControllerInput struct {
189187
ConfClient k8s_nginx.Interface
190188
DynClient dynamic.Interface
191189
RestConfig *rest.Config
190+
Recorder record.EventRecorder
192191
ResyncPeriod time.Duration
193192
LoggerContext context.Context
194193
Namespace []string
@@ -246,6 +245,7 @@ func NewLoadBalancerController(input NewLoadBalancerControllerInput) *LoadBalanc
246245
confClient: input.ConfClient,
247246
dynClient: input.DynClient,
248247
restConfig: input.RestConfig,
248+
recorder: input.Recorder,
249249
Logger: nl.LoggerFromContext(input.LoggerContext),
250250
configurator: input.NginxConfigurator,
251251
specialSecrets: specialSecrets,
@@ -273,15 +273,6 @@ func NewLoadBalancerController(input NewLoadBalancerControllerInput) *LoadBalanc
273273
nginxConfigMapName: input.ConfigMaps,
274274
mgmtConfigMapName: input.MGMTConfigMap,
275275
}
276-
eventBroadcaster := record.NewBroadcaster()
277-
eventBroadcaster.StartLogging(func(format string, args ...interface{}) {
278-
nl.Infof(lbc.Logger, format, args...)
279-
})
280-
eventBroadcaster.StartRecordingToSink(&core_v1.EventSinkImpl{
281-
Interface: core_v1.New(input.KubeClient.CoreV1().RESTClient()).Events(""),
282-
})
283-
lbc.recorder = eventBroadcaster.NewRecorder(scheme.Scheme,
284-
api_v1.EventSource{Component: "nginx-ingress-controller"})
285276

286277
lbc.syncQueue = newTaskQueue(lbc.Logger, lbc.sync)
287278
var err error

0 commit comments

Comments
 (0)