|
1 | 1 | package main |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "bytes" |
4 | 5 | "context" |
5 | 6 | "fmt" |
6 | 7 | "io" |
@@ -31,15 +32,18 @@ import ( |
31 | 32 | "github.com/nginxinc/nginx-plus-go-client/client" |
32 | 33 | nginxCollector "github.com/nginxinc/nginx-prometheus-exporter/collector" |
33 | 34 | "github.com/prometheus/client_golang/prometheus" |
| 35 | + api_core_v1 "k8s.io/api/core/v1" |
34 | 36 | api_v1 "k8s.io/api/core/v1" |
35 | 37 | meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" |
36 | 38 | util_version "k8s.io/apimachinery/pkg/util/version" |
37 | 39 | "k8s.io/client-go/dynamic" |
38 | 40 | "k8s.io/client-go/kubernetes" |
39 | 41 | "k8s.io/client-go/kubernetes/scheme" |
| 42 | + core_v1 "k8s.io/client-go/kubernetes/typed/core/v1" |
40 | 43 | "k8s.io/client-go/rest" |
41 | 44 | "k8s.io/client-go/tools/clientcmd" |
42 | 45 | clientcmdapi "k8s.io/client-go/tools/clientcmd/api" |
| 46 | + "k8s.io/client-go/tools/record" |
43 | 47 |
|
44 | 48 | kitlog "github.com/go-kit/log" |
45 | 49 |
|
@@ -88,6 +92,15 @@ func main() { |
88 | 92 |
|
89 | 93 | config, kubeClient := mustCreateConfigAndKubeClient(ctx) |
90 | 94 | 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"}) |
91 | 104 | mustValidateIngressClass(ctx, kubeClient) |
92 | 105 |
|
93 | 106 | checkNamespaces(ctx, kubeClient) |
@@ -126,7 +139,7 @@ func main() { |
126 | 139 | agentVersion = getAgentVersionInfo(nginxManager) |
127 | 140 | } |
128 | 141 |
|
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) |
130 | 143 |
|
131 | 144 | templateExecutor, templateExecutorV2 := createTemplateExecutors(ctx) |
132 | 145 |
|
@@ -218,6 +231,7 @@ func main() { |
218 | 231 | ConfClient: confClient, |
219 | 232 | DynClient: dynClient, |
220 | 233 | RestConfig: config, |
| 234 | + Recorder: eventRecorder, |
221 | 235 | ResyncPeriod: 30 * time.Second, |
222 | 236 | LoggerContext: ctx, |
223 | 237 | Namespace: watchNamespaces, |
@@ -877,7 +891,7 @@ func processConfigMaps(kubeClient *kubernetes.Clientset, cfgParams *configs.Conf |
877 | 891 | return cfgParams |
878 | 892 | } |
879 | 893 |
|
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) { |
881 | 895 | l := nl.LoggerFromContext(ctx) |
882 | 896 | podUpdated := false |
883 | 897 |
|
@@ -914,6 +928,11 @@ func updateSelfWithVersionInfo(ctx context.Context, kubeClient *kubernetes.Clien |
914 | 928 | continue |
915 | 929 | } |
916 | 930 |
|
| 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(), ", ")) |
917 | 936 | nl.Infof(l, "Pod label updated: %s", pod.ObjectMeta.Name) |
918 | 937 | podUpdated = true |
919 | 938 | } |
|
0 commit comments