diff --git a/50kafka.yml b/50kafka.yml index c564ffe3..9b2ca113 100644 --- a/50kafka.yml +++ b/50kafka.yml @@ -10,6 +10,7 @@ spec: metadata: labels: app: kafka + kubeless: kafka annotations: spec: terminationGracePeriodSeconds: 30 diff --git a/addon-kubeless/00namespace.yml b/addon-kubeless/00namespace.yml new file mode 100644 index 00000000..ceb8374e --- /dev/null +++ b/addon-kubeless/00namespace.yml @@ -0,0 +1,5 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: kubeless diff --git a/addon-kubeless/bootstrap-service.yml b/addon-kubeless/bootstrap-service.yml new file mode 100644 index 00000000..1d9a9b1d --- /dev/null +++ b/addon-kubeless/bootstrap-service.yml @@ -0,0 +1,11 @@ +# Allows bootstrap_servers = kafka.kubeless:9092 while kafka is in a different namespace +kind: Service +apiVersion: v1 +metadata: + name: kafka + namespace: kubeless +spec: + type: ExternalName + externalName: bootstrap.kafka.svc.cluster.local + ports: + - port: 9092 diff --git a/addon-kubeless/kubeless.yml b/addon-kubeless/kubeless.yml new file mode 100644 index 00000000..4a231b21 --- /dev/null +++ b/addon-kubeless/kubeless.yml @@ -0,0 +1,36 @@ +--- +apiVersion: extensions/v1beta1 +description: Kubernetes Native Serverless Framework +kind: ThirdPartyResource +metadata: + name: function.k8s.io +versions: +- name: v1 +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: controller-acct + namespace: kubeless +--- +apiVersion: apps/v1beta1 +kind: Deployment +metadata: + labels: + kubeless: controller + name: kubeless-controller + namespace: kubeless +spec: + selector: + matchLabels: + kubeless: controller + template: + metadata: + labels: + kubeless: controller + spec: + containers: + - image: bitnami/kubeless-controller@sha256:0bc030762e8694d268be75bed0d52ea6ecb84b03da85ffcbd55da4817c047052 + imagePullPolicy: IfNotPresent + name: kubeless-controller + serviceAccountName: controller-acct diff --git a/addon-kubeless/test-function-hello-pubsub.yml b/addon-kubeless/test-function-hello-pubsub.yml new file mode 100644 index 00000000..a8afbd49 --- /dev/null +++ b/addon-kubeless/test-function-hello-pubsub.yml @@ -0,0 +1,29 @@ +# This is basically https://github.com/kubeless/kubeless/blob/master/examples/nodejs/helloevent.js +# created through: +# ./kubeless function deploy helloevent --from-file helloevent.js --handler hello.handler --runtime nodejs8 --trigger-topic test-basic-with-kafkacat + +# Uses the topic from ../test/basic-with-kafkacat.yml, +# which means it gets triggered every 10 seconds by the publisher there + +# See output: +# kubectl -n default logs -lfunction=kubeless-test-function +# Check for validation errors after create: +# kubectl -n kubeless logs -lkubeless=controller --since=60s + +--- +apiVersion: k8s.io/v1 +kind: Function +metadata: + name: kubeless-test-function + namespace: default +spec: + handler: hello.handler + runtime: nodejs8 + type: PubSub + topic: test-basic-with-kafkacat + function: |- + module.exports = { + handler: (context) => { + console.log('Serverless at', new Date().toUTCString(), 'with message:', context); + } + };