[incubator/kubeless] Adding Kafka Trigger (#5961)

* Initial helm configuration with kafka trigger

* Fixing formatting

* Incrementing version

* Moving kafka controller to it's own cluster role

* Updating README for clarity

* Adding role binding
This commit is contained in:
Alex Alvarez
2018-06-07 08:38:24 -07:00
committed by k8s-ci-robot
parent ee482b49a3
commit d01e14bf13
7 changed files with 128 additions and 28 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
name: kubeless
version: 1.0.3
version: 1.0.4
appVersion: v1.0.0-alpha.3
description: Kubeless is a Kubernetes-native serverless framework. It runs on top of your Kubernetes cluster and allows you to deploy small unit of code without having to build container images.
icon: https://cloud.githubusercontent.com/assets/4056725/25480209/1d5bf83c-2b48-11e7-8db8-bcd650f31297.png
+38 -27
View File
@@ -43,37 +43,48 @@ $ helm delete my-release
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Kafka Trigger
Kubeless supports triggering functions via Kafka events. More info here: https://kubeless.io/docs/use-existing-kafka/.
An existing Kafka cluster needs to be accessible to kubeless -- if you like, you may look into setting Kafka up via the [Kafka chart](https://github.com/kubernetes/charts/tree/master/incubator/kafka). Once Kafka is running,
to enable the Kafka trigger you must congifure the following values: `rbac.create: true`, `kafkaTrigger.enabled: true`, `kafkaTrigger.env.kafkaBrokers: <your_kafka_brokers>`.
## Configuration
The following table lists the configurable parameters of the Kubeless chart and their default values.
| Parameter | Description | Default |
|------------------------------------------|--------------------------------------------|---------------------------------------|
| `config.builderImage` | Function builder image | `kubeless/function-image-builder` |
| `config.builderImagePullSecret` | Secret to pull builder image | "" |
| `config.builderImage` | Provision image | `kubeless/unzip` |
| `config.builderImagePullSecret` | Secret to pull provision image | "" |
| `config.deploymentTemplate` | Deployment template for functions | `{}` |
| `config.enableBuildStep` | Enable builder functionality | `false` |
| `config.functionRegistryTLSVerify` | Enable TLS verification for image registry | `{}` |
| `config.runtimeImages` | Runtimes available | python, nodejs, ruby, php and go |
| `controller.deployment.image.repository` | Controller image | `bitnami/kubeless-controller-manager` |
| `controller.deployment.image.pullPolicy` | Controller image pull policy | `IfNotPresent` |
| `controller.deployment.replicaCount` | Number of replicas | `1` |
| `ui.enabled` | Kubeless UI component | `false` |
| `ui.deployment.ui.image.repository` | Kubeless UI image | `bitnami/kubeless-ui` |
| `ui.deployment.ui.image.pullPolicy` | Kubeless UI image pull policy | `IfNotPresent` |
| `ui.deployment.proxy.image.repository` | Proxy image | `kelseyhightower/kubectl` |
| `ui.deployment.proxy.image.pullPolicy` | Proxy image pull policy | `IfNotPresent` |
| `ui.deployment.replicaCount` | Number of replicas | `1` |
| `ui.service.name` | Service name | `ui-port` |
| `ui.service.type` | Kubernetes service name | `NodePort` |
| `ui.service.externalPort` | Service external port | `3000` |
| `ui.ingress.enabled` | Kubeless UI ingress switch | `false` |
| `ui.ingress.annotations` | Kubeless UI ingress annotations | `{}` |
| `ui.ingress.path` | Kubeless UI ingress path | `{}` |
| `ui.ingress.hosts` | Kubeless UI ingress hosts | `[chart-example.local]` |
| `ui.ingress.tls` | Kubeless UI ingress TLS | `[]` |
| Parameter | Description | Default |
|------------------------------------------------|--------------------------------------------|---------------------------------------|
| `config.builderImage` | Function builder image | `kubeless/function-image-builder` |
| `config.builderImagePullSecret` | Secret to pull builder image | "" |
| `config.builderImage` | Provision image | `kubeless/unzip` |
| `config.builderImagePullSecret` | Secret to pull provision image | "" |
| `config.deploymentTemplate` | Deployment template for functions | `{}` |
| `config.enableBuildStep` | Enable builder functionality | `false` |
| `config.functionRegistryTLSVerify` | Enable TLS verification for image registry | `{}` |
| `config.runtimeImages` | Runtimes available | python, nodejs, ruby, php and go |
| `controller.deployment.image.repository` | Controller image | `bitnami/kubeless-controller-manager` |
| `controller.deployment.image.pullPolicy` | Controller image pull policy | `IfNotPresent` |
| `controller.deployment.replicaCount` | Number of replicas | `1` |
| `ui.enabled` | Kubeless UI component | `false` |
| `ui.deployment.ui.image.repository` | Kubeless UI image | `bitnami/kubeless-ui` |
| `ui.deployment.ui.image.pullPolicy` | Kubeless UI image pull policy | `IfNotPresent` |
| `ui.deployment.proxy.image.repository` | Proxy image | `kelseyhightower/kubectl` |
| `ui.deployment.proxy.image.pullPolicy` | Proxy image pull policy | `IfNotPresent` |
| `ui.deployment.replicaCount` | Number of replicas | `1` |
| `ui.service.name` | Service name | `ui-port` |
| `ui.service.type` | Kubernetes service name | `NodePort` |
| `ui.service.externalPort` | Service external port | `3000` |
| `ui.ingress.enabled` | Kubeless UI ingress switch | `false` |
| `ui.ingress.annotations` | Kubeless UI ingress annotations | `{}` |
| `ui.ingress.path` | Kubeless UI ingress path | `{}` |
| `ui.ingress.hosts` | Kubeless UI ingress hosts | `[chart-example.local]` |
| `ui.ingress.tls` | Kubeless UI ingress TLS | `[]` |
| `kafkaTrigger.enabled` | Kubeless Kafka Trigger | `false` |
| `kafkaTrigger.env.kafkaBrokers` | Kafka Brokers Environment Variable | `localhost:9092` |
| `kafkaTrigger.deployment.ui.image.repository` | Kubeless Kafka Trigger image | `bitnami/kubeless-ui` |
| `kafkaTrigger.deployment.ui.image.pullPolicy` | Kubeless Kafka Trigger image pull policy | `IfNotPresent` |
| `kafkaTrigger.deployment.ui.image.tag` | Kubeless Kafka Trigger image tag | `v1.0.0-alpha.3` |
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
@@ -0,0 +1,12 @@
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: kafka-controller-deployer
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kafka-controller-deployer
subjects:
- kind: ServiceAccount
name: controller-acct
namespace: {{ .Release.Namespace }}
@@ -0,0 +1,26 @@
{{- if .Values.kafkaTrigger.enabled }}
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: kafka-controller-deployer
rules:
- apiGroups:
- ""
resources:
- services
- configmaps
verbs:
- get
- list
- apiGroups:
- kubeless.io
resources:
- functions
- kafkatriggers
verbs:
- get
- list
- watch
- update
- delete
{{- end }}
@@ -0,0 +1,26 @@
{{- if .Values.kafkaTrigger.enabled }}
apiVersion: apps/v1beta1
kind: Deployment
metadata:
labels:
kubeless: kafka-trigger-controller
name: kafka-trigger-controller
namespace: {{ .Release.Namespace }}
spec:
selector:
matchLabels:
kubeless: kafka-trigger-controller
template:
metadata:
labels:
kubeless: kafka-trigger-controller
spec:
containers:
- image: "{{ .Values.kafkaTrigger.deployment.image.repository }}:{{ .Values.kafkaTrigger.deployment.image.tag }}"
imagePullPolicy: {{ .Values.kafkaTrigger.deployment.image.pullPolicy }}
name: kafka-trigger-controller
env:
- name: KAFKA_BROKERS
value: {{ .Values.kafkaTrigger.env.kafkaBrokers }}
serviceAccountName: controller-acct
{{- end }}
@@ -0,0 +1,15 @@
{{- if .Values.kafkaTrigger.enabled }}
apiVersion: apiextensions.k8s.io/v1beta1
description: CRD object for Kafka trigger type
kind: CustomResourceDefinition
metadata:
name: kafkatriggers.kubeless.io
spec:
group: kubeless.io
names:
kind: KafkaTrigger
plural: kafkatriggers
singular: kafkatrigger
scope: Namespaced
version: v1beta1
{{- end }}
+10
View File
@@ -185,3 +185,13 @@ ui:
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
## Kafka Trigger configuration Configuration
kafkaTrigger:
enabled: false
deployment:
image:
repository: bitnami/kafka-trigger-controller
tag: v1.0.0-alpha.3
pullPolicy: IfNotPresent
kafkaBrokers: localhost:9092