|
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