|
1 | 1 | package main |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "bytes" |
4 | 5 | "context" |
5 | 6 | "fmt" |
6 | 7 | "io" |
@@ -37,9 +38,11 @@ import ( |
37 | 38 | "k8s.io/client-go/dynamic" |
38 | 39 | "k8s.io/client-go/kubernetes" |
39 | 40 | "k8s.io/client-go/kubernetes/scheme" |
| 41 | + core_v1 "k8s.io/client-go/kubernetes/typed/core/v1" |
40 | 42 | "k8s.io/client-go/rest" |
41 | 43 | "k8s.io/client-go/tools/clientcmd" |
42 | 44 | clientcmdapi "k8s.io/client-go/tools/clientcmd/api" |
| 45 | + "k8s.io/client-go/tools/record" |
43 | 46 |
|
44 | 47 | kitlog "github.com/go-kit/log" |
45 | 48 |
|
@@ -88,6 +91,15 @@ func main() { |
88 | 91 |
|
89 | 92 | config, kubeClient := mustCreateConfigAndKubeClient(ctx) |
90 | 93 | 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"}) |
91 | 103 | mustValidateIngressClass(ctx, kubeClient) |
92 | 104 |
|
93 | 105 | checkNamespaces(ctx, kubeClient) |
@@ -126,7 +138,7 @@ func main() { |
126 | 138 | agentVersion = getAgentVersionInfo(nginxManager) |
127 | 139 | } |
128 | 140 |
|
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) |
130 | 142 |
|
131 | 143 | templateExecutor, templateExecutorV2 := createTemplateExecutors(ctx) |
132 | 144 |
|
@@ -218,6 +230,7 @@ func main() { |
218 | 230 | ConfClient: confClient, |
219 | 231 | DynClient: dynClient, |
220 | 232 | RestConfig: config, |
| 233 | + Recorder: eventRecorder, |
221 | 234 | ResyncPeriod: 30 * time.Second, |
222 | 235 | LoggerContext: ctx, |
223 | 236 | Namespace: watchNamespaces, |
@@ -877,7 +890,7 @@ func processConfigMaps(kubeClient *kubernetes.Clientset, cfgParams *configs.Conf |
877 | 890 | return cfgParams |
878 | 891 | } |
879 | 892 |
|
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) { |
881 | 894 | l := nl.LoggerFromContext(ctx) |
882 | 895 | podUpdated := false |
883 | 896 |
|
@@ -914,6 +927,11 @@ func updateSelfWithVersionInfo(ctx context.Context, kubeClient *kubernetes.Clien |
914 | 927 | continue |
915 | 928 | } |
916 | 929 |
|
| 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(), ", ")) |
917 | 935 | nl.Infof(l, "Pod label updated: %s", pod.ObjectMeta.Name) |
918 | 936 | podUpdated = true |
919 | 937 | } |
|
0 commit comments