|
1 | 1 | package main |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "bytes" |
4 | 5 | "context" |
5 | 6 | "errors" |
6 | 7 | "fmt" |
@@ -38,9 +39,11 @@ import ( |
38 | 39 | "k8s.io/client-go/dynamic" |
39 | 40 | "k8s.io/client-go/kubernetes" |
40 | 41 | "k8s.io/client-go/kubernetes/scheme" |
| 42 | + core_v1 "k8s.io/client-go/kubernetes/typed/core/v1" |
41 | 43 | "k8s.io/client-go/rest" |
42 | 44 | "k8s.io/client-go/tools/clientcmd" |
43 | 45 | clientcmdapi "k8s.io/client-go/tools/clientcmd/api" |
| 46 | + "k8s.io/client-go/tools/record" |
44 | 47 |
|
45 | 48 | kitlog "github.com/go-kit/log" |
46 | 49 |
|
@@ -90,6 +93,15 @@ func main() { |
90 | 93 |
|
91 | 94 | config, kubeClient := mustCreateConfigAndKubeClient(ctx) |
92 | 95 | 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"}) |
93 | 105 | mustValidateIngressClass(ctx, kubeClient) |
94 | 106 |
|
95 | 107 | checkNamespaces(ctx, kubeClient) |
@@ -128,7 +140,7 @@ func main() { |
128 | 140 | agentVersion = getAgentVersionInfo(nginxManager) |
129 | 141 | } |
130 | 142 |
|
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) |
132 | 144 |
|
133 | 145 | templateExecutor, templateExecutorV2 := createTemplateExecutors(ctx) |
134 | 146 |
|
@@ -230,6 +242,7 @@ func main() { |
230 | 242 | ConfClient: confClient, |
231 | 243 | DynClient: dynClient, |
232 | 244 | RestConfig: config, |
| 245 | + Recorder: eventRecorder, |
233 | 246 | ResyncPeriod: 30 * time.Second, |
234 | 247 | LoggerContext: ctx, |
235 | 248 | Namespace: watchNamespaces, |
@@ -983,7 +996,7 @@ func processMGMTConfigMap(kubeClient *kubernetes.Clientset, mgmtCfgParams *confi |
983 | 996 | return mgmtCfgParams |
984 | 997 | } |
985 | 998 |
|
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) { |
987 | 1000 | l := nl.LoggerFromContext(ctx) |
988 | 1001 | podUpdated := false |
989 | 1002 |
|
@@ -1020,6 +1033,11 @@ func updateSelfWithVersionInfo(ctx context.Context, kubeClient *kubernetes.Clien |
1020 | 1033 | continue |
1021 | 1034 | } |
1022 | 1035 |
|
| 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(), ", ")) |
1023 | 1041 | nl.Infof(l, "Pod label updated: %s", pod.ObjectMeta.Name) |
1024 | 1042 | podUpdated = true |
1025 | 1043 | } |
|
0 commit comments