Skip to content

Commit fe9517d

Browse files
committed
allow k8s events in initial validation
1 parent 5d0b230 commit fe9517d

File tree

2 files changed

+23
-13
lines changed

2 files changed

+23
-13
lines changed

cmd/nginx-ingress/main.go

Lines changed: 21 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"
@@ -31,15 +32,18 @@ import (
3132
"github.com/nginxinc/nginx-plus-go-client/client"
3233
nginxCollector "github.com/nginxinc/nginx-prometheus-exporter/collector"
3334
"github.com/prometheus/client_golang/prometheus"
35+
api_core_v1 "k8s.io/api/core/v1"
3436
api_v1 "k8s.io/api/core/v1"
3537
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3638
util_version "k8s.io/apimachinery/pkg/util/version"
3739
"k8s.io/client-go/dynamic"
3840
"k8s.io/client-go/kubernetes"
3941
"k8s.io/client-go/kubernetes/scheme"
42+
core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
4043
"k8s.io/client-go/rest"
4144
"k8s.io/client-go/tools/clientcmd"
4245
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
46+
"k8s.io/client-go/tools/record"
4347

4448
kitlog "github.com/go-kit/log"
4549

@@ -88,6 +92,15 @@ func main() {
8892

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

93106
checkNamespaces(ctx, kubeClient)
@@ -126,7 +139,7 @@ func main() {
126139
agentVersion = getAgentVersionInfo(nginxManager)
127140
}
128141

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

131144
templateExecutor, templateExecutorV2 := createTemplateExecutors(ctx)
132145

@@ -218,6 +231,7 @@ func main() {
218231
ConfClient: confClient,
219232
DynClient: dynClient,
220233
RestConfig: config,
234+
Recorder: eventRecorder,
221235
ResyncPeriod: 30 * time.Second,
222236
LoggerContext: ctx,
223237
Namespace: watchNamespaces,
@@ -877,7 +891,7 @@ func processConfigMaps(kubeClient *kubernetes.Clientset, cfgParams *configs.Conf
877891
return cfgParams
878892
}
879893

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

@@ -914,6 +928,11 @@ func updateSelfWithVersionInfo(ctx context.Context, kubeClient *kubernetes.Clien
914928
continue
915929
}
916930

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

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)