aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStaffan Olsson <staffan@repos.se>2017-10-30 22:26:48 +0100
committerStaffan Olsson <staffan@repos.se>2017-10-30 22:26:48 +0100
commit6dd29fac7ae5273fc502ec8d849423762bcd0188 (patch)
treefd679a1fcf007b805fb1acee06b68309f0ab080d
parent6958b5825dd2c4051480b646249fd6665fad08d8 (diff)
parent3fca1e7ee736d3e8d3647453de07e9986bcfe2fa (diff)
downloadkubernetes-kafka-6dd29fac7ae5273fc502ec8d849423762bcd0188.tar.gz
kubernetes-kafka-6dd29fac7ae5273fc502ec8d849423762bcd0188.tar.bz2
kubernetes-kafka-6dd29fac7ae5273fc502ec8d849423762bcd0188.zip
Merge branch '1.8-kube-events' into kubernetes-1.8-test
-rw-r--r--events-kube/events-kube-kafka.yml51
-rw-r--r--events-kube/rbac/cluster-events-watcher.yml30
-rw-r--r--events-kube/test/events-topic.yml89
-rw-r--r--events-kube/topic-ops-kube-events-all-json.yml32
4 files changed, 202 insertions, 0 deletions
diff --git a/events-kube/events-kube-kafka.yml b/events-kube/events-kube-kafka.yml
new file mode 100644
index 0000000..086137d
--- /dev/null
+++ b/events-kube/events-kube-kafka.yml
@@ -0,0 +1,51 @@
+apiVersion: apps/v1beta2
+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
+ selector:
+ matchLabels:
+ app: events
+ from: kube
+ to: kafka
+ 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
diff --git a/events-kube/rbac/cluster-events-watcher.yml b/events-kube/rbac/cluster-events-watcher.yml
new file mode 100644
index 0000000..c8384b6
--- /dev/null
+++ b/events-kube/rbac/cluster-events-watcher.yml
@@ -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
diff --git a/events-kube/test/events-topic.yml b/events-kube/test/events-topic.yml
new file mode 100644
index 0000000..29891f7
--- /dev/null
+++ b/events-kube/test/events-topic.yml
@@ -0,0 +1,89 @@
+---
+kind: ConfigMap
+metadata:
+ name: events-topic
+ namespace: test-kafka
+apiVersion: v1
+data:
+
+ setup.sh: |-
+ touch /tmp/testlog
+
+ tail -f /tmp/testlog
+
+ test.sh: |-
+ exec >> /tmp/testlog
+ exec 2>&1
+
+ PREVIOUS=$(sha1sum /tmp/event 2>/dev/null || echo "")
+ kafkacat -b $BOOTSTRAP -t $TOPIC -C -o -1 -c 1 | tee /tmp/event
+ CURRENT=$(sha1sum /tmp/event)
+ [ "$PREVIOUS" == "$CURRENT" ] && echo "{\"test-result\": \"No new event in $TOPIC\"}" && exit 1
+
+ exit 0
+
+ quit-on-nonzero-exit.sh: |-
+ exec >> /tmp/testlog
+ exec 2>&1
+
+ exit 0
+
+---
+apiVersion: apps/v1beta2
+kind: Deployment
+metadata:
+ name: events-topic
+ namespace: test-kafka
+spec:
+ replicas: 1
+ strategy:
+ type: Recreate
+ selector:
+ matchLabels:
+ test-target: events-topic
+ test-type: readiness
+ template:
+ metadata:
+ labels:
+ test-target: events-topic
+ test-type: readiness
+ # for example:
+ # readonly - can be used in production
+ # isolated - read/write but in a manner that does not affect other services
+ # load - unsuitable for production because it uses significant resources
+ # chaos - unsuitable for production because it injects failure modes
+ #test-use:
+ spec:
+ containers:
+ - name: testcase
+ image: solsson/kafkacat@sha256:ebebf47061300b14a4b4c2e1e4303ab29f65e4b95d34af1b14bb8f7ec6da7cef
+ 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
+ - -e
+ - /test/setup.sh
+ readinessProbe:
+ exec:
+ command:
+ - /bin/bash
+ - -e
+ - /test/test.sh
+ initialDelaySeconds: 10
+ periodSeconds: 60
+ livenessProbe:
+ exec:
+ command:
+ - /bin/bash
+ - -e
+ - /test/quit-on-nonzero-exit.sh
+ volumeMounts:
+ - name: config
+ mountPath: /test
+ volumes:
+ - name: config
+ configMap:
+ name: events-topic
diff --git a/events-kube/topic-ops-kube-events-all-json.yml b/events-kube/topic-ops-kube-events-all-json.yml
new file mode 100644
index 0000000..62f2b80
--- /dev/null
+++ b/events-kube/topic-ops-kube-events-all-json.yml
@@ -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