Skip to content

Commit e204372

Browse files
committed
add kube events
Signed-off-by: Markus Blaschke <[email protected]>
1 parent 409c331 commit e204372

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

kube_janitor/kube.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"strings"
7+
"time"
78

89
corev1 "k8s.io/api/core/v1"
910
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -117,3 +118,38 @@ func (j *Janitor) kubeEachResource(ctx context.Context, gvr schema.GroupVersionR
117118

118119
return nil
119120
}
121+
122+
func (j *Janitor) kubeCreateEventFromResource(ctx context.Context, namespace string, resource unstructured.Unstructured, message, reason string) error {
123+
timestamp := metav1.Time{Time: time.Now()}
124+
125+
event := corev1.Event{
126+
ObjectMeta: metav1.ObjectMeta{
127+
GenerateName: "kube-janitor-",
128+
Namespace: resource.GetNamespace(),
129+
},
130+
ReportingInstance: "kube-janitor",
131+
InvolvedObject: corev1.ObjectReference{
132+
APIVersion: resource.GetAPIVersion(),
133+
Kind: resource.GetKind(),
134+
Namespace: resource.GetNamespace(),
135+
Name: resource.GetName(),
136+
UID: resource.GetUID(),
137+
},
138+
Reason: reason,
139+
Message: message,
140+
Source: corev1.EventSource{
141+
Component: "kube-janitor",
142+
},
143+
FirstTimestamp: timestamp,
144+
LastTimestamp: timestamp,
145+
Count: 1,
146+
Type: "Normal",
147+
Series: nil,
148+
Action: "Deleted",
149+
Related: nil,
150+
ReportingController: "kube-janitor",
151+
}
152+
153+
_, err := j.kubeClient.CoreV1().Events(namespace).Create(ctx, &event, metav1.CreateOptions{})
154+
return err
155+
}

kube_janitor/task.common.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package kube_janitor
33
import (
44
"context"
55
"encoding/json"
6+
"fmt"
67
"log/slog"
78

89
jmespath "github.com/jmespath-community/go-jmespath"
@@ -91,6 +92,13 @@ func (j *Janitor) checkResourceTtlAndTriggerDeleteIfExpired(ctx context.Context,
9192
if err != nil {
9293
return err
9394
}
95+
96+
reason := "TimeToLiveExpired"
97+
message := fmt.Sprintf(`TTL of "%v" is expired and resource is being deleted`, ttlValue)
98+
err = j.kubeCreateEventFromResource(ctx, resource.GetNamespace(), resource, message, reason)
99+
if err != nil {
100+
resourceLogger.Error("unable to create Kubernetes Event", slog.Any("error", err))
101+
}
94102
}
95103
}
96104

0 commit comments

Comments
 (0)