Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Addon: Stream all Kubernetes events to a topic #60

Closed
wants to merge 17 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions addon-events/events-kube-kafka.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: events-kube-kafka
namespace: kafka
spec:
replicas: 1
strategy:
type: RollingUpdate
rollingUpdate:
# prefer duplicate events over missed
maxUnavailable: 0
maxSurge: 1
template:
metadata:
labels:
app: events
from: kube
to: kafka
spec:
containers:
- name: kafkacat-curl
image: solsson/kafkacat-curl@sha256:6ad61f2e6343359c3972d7a86815568c0a1d0560068134c5d702a152eb5123a0
env:
- name: BOOTSTRAP
value: kafka-0.broker.kafka.svc.cluster.local:9092,kafka-1.broker.kafka.svc.cluster.local:9092,kafka-2.broker.kafka.svc.cluster.local:9092
- name: TOPIC
value: ops-kube-events-all-json-001
command:
- /bin/bash
- -ec
- >
curl
-f
-s
--cacert /run/secrets/kubernetes.io/serviceaccount/ca.crt
--header "Authorization: Bearer $(cat /run/secrets/kubernetes.io/serviceaccount/token)"
https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_SERVICE_PORT/api/v1/watch/events
|
kafkacat
-b $BOOTSTRAP
-t $TOPIC
-P
-z snappy
-v
-d broker,topic
32 changes: 32 additions & 0 deletions addon-events/topic-ops-kube-events-all-json.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
apiVersion: batch/v1
kind: Job
metadata:
name: topic-ops-kube-events-all-json
namespace: kafka
spec:
template:
metadata:
labels:
app: topic-create
topic-id: ops-kube-events-all-json
topic-gen: "001"
spec:
containers:
- name: kafka
image: solsson/kafka:0.11.0.0@sha256:b27560de08d30ebf96d12e74f80afcaca503ad4ca3103e63b1fd43a2e4c976ce
command:
- ./bin/kafka-topics.sh
- --zookeeper
- zookeeper:2181
- --create
- --if-not-exists
- --topic
- ops-kube-events-all-json-001
- --partitions
- "1"
- --replication-factor
- "1"
- --config
# 8 days
- retention.ms=691200000
restartPolicy: Never
30 changes: 30 additions & 0 deletions rbac-namespace-default/events-watcher.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# If events-kube-kafka-* goes crashlooping you probably need this
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: events-watcher
labels:
origin: github.com_Yolean_kubernetes-kafka
rules:
- apiGroups:
- ""
resources:
- events
verbs:
- watch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: kafka-events-watcher
labels:
origin: github.com_Yolean_kubernetes-kafka
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: events-watcher
subjects:
- kind: ServiceAccount
name: default
namespace: kafka
24 changes: 24 additions & 0 deletions test/events-topic.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: events-topic
namespace: test-kafka
spec:
replicas: 1
template:
metadata:
labels:
test-target: events-topic
# Would be a valid testcase if it verifies that >0 messages per some time unit have been produced
#test-type: readiness
spec:
containers:
- name: kafkacat
image: solsson/kafkacat@sha256:36d1f191cc33a8365074280279205e6b4f52cd8cc8fb1b896bb4c943c9dee8f8
command:
- kafkacat
- -b
- kafka-0.broker.kafka.svc.cluster.local:9092,kafka-1.broker.kafka.svc.cluster.local:9092,kafka-2.broker.kafka.svc.cluster.local:9092
- -t
- ops-kube-events-all-json-001
- -C