Skip to content

Commit 7ba4d56

Browse files
authored
Merge pull request #45 from robusta-dev/update-event-object
updated events object for newer k8s support
2 parents b800837 + 52e483e commit 7ba4d56

File tree

9 files changed

+49
-4
lines changed

9 files changed

+49
-4
lines changed

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
# Latest image
1919

2020
```
21-
us-central1-docker.pkg.dev/genuine-flight-317411/devel/kubewatch:v2.4
21+
us-central1-docker.pkg.dev/genuine-flight-317411/devel/kubewatch:v2.5
2222
```
2323

2424
# Usage
@@ -92,6 +92,7 @@ resourcesToWatch:
9292
secret: false
9393
configmap: false
9494
ingress: false
95+
coreevent: false
9596
event: true
9697
slack:
9798
channel: '#YOUR_CHANNEL'
@@ -148,6 +149,7 @@ resource:
148149
secret: false
149150
configmap: false
150151
ingress: false
152+
coreevent: false
151153
event: true
152154
```
153155

@@ -344,6 +346,7 @@ data:
344346
serviceaccount: false
345347
services: true
346348
event: true
349+
coreevent: false
347350
```
348351
349352
### flock:
@@ -426,6 +429,7 @@ resource:
426429
configmap: false
427430
ingress: false
428431
event: true
432+
coreevent: false
429433
namespace: ""
430434

431435
```
@@ -467,6 +471,7 @@ Flags:
467471
--sa watch for service accounts
468472
--secret watch for plain secrets
469473
--svc watch for services
474+
--coreevent watch for events from the kubernetes core api. (Old events api, replaced in kubernetes 1.19)
470475

471476
Use "kubewatch resource [command] --help" for more information about a command.
472477

@@ -501,6 +506,7 @@ Global Flags:
501506
--sa watch for service accounts
502507
--secret watch for plain secrets
503508
--svc watch for services
509+
--coreevent watch for events from the kubernetes core api. (Old events api, replaced in kubernetes 1.19)
504510

505511
```
506512

cmd/resource.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,10 @@ func configureResource(operation string, cmd *cobra.Command, conf *config.Config
149149
"statefulset",
150150
&conf.Resource.StatefulSet,
151151
},
152+
{
153+
"coreevent",
154+
&conf.Resource.CoreEvent,
155+
},
152156
}
153157

154158
for _, flag := range flags {
@@ -197,4 +201,5 @@ func init() {
197201
resourceConfigCmd.PersistentFlags().Bool("clusterrole", false, "watch for cluster roles")
198202
resourceConfigCmd.PersistentFlags().Bool("clusterrolebinding", false, "watch for cluster roles binding")
199203
resourceConfigCmd.PersistentFlags().Bool("sa", false, "watch for service accounts")
204+
resourceConfigCmd.PersistentFlags().Bool("coreevent", false, "watch for events (old events object)")
200205
}

config/config.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ type Resource struct {
7070
Ingress bool `json:"ing"`
7171
HPA bool `json:"hpa"`
7272
Event bool `json:"event"`
73+
CoreEvent bool `json:"coreevent"`
7374
}
7475

7576
// Config struct contains kubewatch configuration

examples/conf/kubewatch.conf.flock.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ resource:
1212
persistentvolume: false
1313
ingress: false
1414
event: false
15+
coreevent: false

examples/conf/kubewatch.conf.hipchat.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ resource:
1414
persistentvolume: false
1515
ingress: false
1616
event: false
17+
coreevent: false

examples/conf/kubewatch.conf.mattermost.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ resource:
1414
persistentvolume: false
1515
ingress: false
1616
event: false
17+
coreevent: false

kubewatch-configmap.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@ data:
2020
secret: false
2121
configmap: false
2222
hpa: false
23+
coreevent: false
2324
event: true

pkg/controller/controller.go

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import (
3636
autoscaling_v1 "k8s.io/api/autoscaling/v1"
3737
batch_v1 "k8s.io/api/batch/v1"
3838
api_v1 "k8s.io/api/core/v1"
39+
events_v1 "k8s.io/api/events/v1"
3940
networking_v1 "k8s.io/api/networking/v1"
4041
rbac_v1 "k8s.io/api/rbac/v1"
4142
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -56,6 +57,7 @@ const APPS_V1 = "apps/v1"
5657
const BATCH_V1 = "batch/v1"
5758
const RBAC_V1 = "rbac.authorization.k8s.io/v1"
5859
const NETWORKING_V1 = "networking.k8s.io/v1"
60+
const EVENTS_V1 = "events.k8s.io/v1"
5961

6062
var serverStartTime time.Time
6163

@@ -95,8 +97,8 @@ func Start(conf *config.Config, eventHandler handlers.Handler) {
9597
}
9698

9799
// User Configured Events
98-
if conf.Resource.Event {
99-
allEventsInformer := cache.NewSharedIndexInformer(
100+
if conf.Resource.CoreEvent {
101+
allCoreEventsInformer := cache.NewSharedIndexInformer(
100102
&cache.ListWatch{
101103
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
102104
options.FieldSelector = ""
@@ -112,7 +114,31 @@ func Start(conf *config.Config, eventHandler handlers.Handler) {
112114
cache.Indexers{},
113115
)
114116

115-
allEventsController := newResourceController(kubeClient, eventHandler, allEventsInformer, objName(api_v1.Event{}), V1)
117+
allCoreEventsController := newResourceController(kubeClient, eventHandler, allCoreEventsInformer, objName(api_v1.Event{}), V1)
118+
stopAllCoreEventsCh := make(chan struct{})
119+
defer close(stopAllCoreEventsCh)
120+
121+
go allCoreEventsController.Run(stopAllCoreEventsCh)
122+
}
123+
124+
if conf.Resource.Event {
125+
allEventsInformer := cache.NewSharedIndexInformer(
126+
&cache.ListWatch{
127+
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
128+
options.FieldSelector = ""
129+
return kubeClient.EventsV1().Events(conf.Namespace).List(context.Background(), options)
130+
},
131+
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
132+
options.FieldSelector = ""
133+
return kubeClient.EventsV1().Events(conf.Namespace).Watch(context.Background(), options)
134+
},
135+
},
136+
&events_v1.Event{},
137+
0, //Skip resync
138+
cache.Indexers{},
139+
)
140+
141+
allEventsController := newResourceController(kubeClient, eventHandler, allEventsInformer, objName(events_v1.Event{}), EVENTS_V1)
116142
stopAllEventsCh := make(chan struct{})
117143
defer close(stopAllEventsCh)
118144

pkg/utils/k8sutil.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
ext_v1beta1 "k8s.io/api/extensions/v1beta1"
1111
networking_v1 "k8s.io/api/networking/v1"
1212
rbac_v1 "k8s.io/api/rbac/v1"
13+
events_v1 "k8s.io/api/events/v1"
1314
rbac_v1beta1 "k8s.io/api/rbac/v1beta1"
1415
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1516
"k8s.io/client-go/kubernetes"
@@ -99,6 +100,8 @@ func GetObjectMetaData(obj interface{}) (objectMeta meta_v1.ObjectMeta) {
99100
objectMeta = object.ObjectMeta
100101
case *api_v1.Event:
101102
objectMeta = object.ObjectMeta
103+
case *events_v1.Event:
104+
objectMeta = object.ObjectMeta
102105
}
103106
return objectMeta
104107
}

0 commit comments

Comments
 (0)