From 0d70521beb9e9f5ced89458cb01791d9c5ec4798 Mon Sep 17 00:00:00 2001 From: Cole Arendt Date: Tue, 4 May 2021 06:21:29 -0400 Subject: [PATCH 1/3] add base kubeless template from https://github.com/colearendt/deprecated-charts/tree/master/incubator/kubeless --- charts/kubeless/Chart.yaml | 16 + charts/kubeless/README.md | 126 ++++ charts/kubeless/crds/cronjobtrigger-crd.yaml | 17 + charts/kubeless/crds/function-crd.yaml | 17 + charts/kubeless/crds/httptrigger-crd.yaml | 17 + .../kubeless/crds/kafka-trigger-type-crd.yaml | 17 + charts/kubeless/templates/NOTES.txt | 33 ++ charts/kubeless/templates/_helpers.tpl | 29 + .../templates/cluster-role-binding.yaml | 16 + charts/kubeless/templates/cluster-role.yaml | 109 ++++ .../templates/controller-deployment.yaml | 47 ++ charts/kubeless/templates/crds.yaml | 4 + ...kafka-controller-cluster-role-binding.yaml | 12 + .../kafka-controller-cluster-role.yaml | 26 + .../kafka-controller-deployment.yaml | 26 + .../kubeless/templates/kubeless-config.yaml | 15 + .../kubeless/templates/service-account.yaml | 8 + .../templates/ui-cluster-role-binding.yaml | 18 + .../kubeless/templates/ui-cluster-role.yaml | 45 ++ charts/kubeless/templates/ui-deployment.yaml | 48 ++ charts/kubeless/templates/ui-ingress.yaml | 36 ++ .../templates/ui-service-account.yaml | 10 + charts/kubeless/templates/ui-svc.yaml | 21 + charts/kubeless/values.yaml | 551 ++++++++++++++++++ 24 files changed, 1264 insertions(+) create mode 100644 charts/kubeless/Chart.yaml create mode 100644 charts/kubeless/README.md create mode 100644 charts/kubeless/crds/cronjobtrigger-crd.yaml create mode 100644 charts/kubeless/crds/function-crd.yaml create mode 100644 charts/kubeless/crds/httptrigger-crd.yaml create mode 100644 charts/kubeless/crds/kafka-trigger-type-crd.yaml create mode 100644 charts/kubeless/templates/NOTES.txt create mode 100644 charts/kubeless/templates/_helpers.tpl create mode 100644 charts/kubeless/templates/cluster-role-binding.yaml create mode 100644 charts/kubeless/templates/cluster-role.yaml create mode 100644 charts/kubeless/templates/controller-deployment.yaml create mode 100644 charts/kubeless/templates/crds.yaml create mode 100644 charts/kubeless/templates/kafka-controller-cluster-role-binding.yaml create mode 100644 charts/kubeless/templates/kafka-controller-cluster-role.yaml create mode 100644 charts/kubeless/templates/kafka-controller-deployment.yaml create mode 100644 charts/kubeless/templates/kubeless-config.yaml create mode 100644 charts/kubeless/templates/service-account.yaml create mode 100644 charts/kubeless/templates/ui-cluster-role-binding.yaml create mode 100644 charts/kubeless/templates/ui-cluster-role.yaml create mode 100644 charts/kubeless/templates/ui-deployment.yaml create mode 100644 charts/kubeless/templates/ui-ingress.yaml create mode 100644 charts/kubeless/templates/ui-service-account.yaml create mode 100644 charts/kubeless/templates/ui-svc.yaml create mode 100644 charts/kubeless/values.yaml diff --git a/charts/kubeless/Chart.yaml b/charts/kubeless/Chart.yaml new file mode 100644 index 0000000..f55b14b --- /dev/null +++ b/charts/kubeless/Chart.yaml @@ -0,0 +1,16 @@ +name: kubeless +version: 2.1.3 +appVersion: v1.0.5 +description: DEPRECATED 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 +apiVersion: v1 +home: http://kubeless.io/ +engine: gotpl +sources: + - https://github.com/kubeless/kubeless +keywords: + - kubeless + - serverless + - function-as-a-service + - faas +deprecated: true diff --git a/charts/kubeless/README.md b/charts/kubeless/README.md new file mode 100644 index 0000000..9d39805 --- /dev/null +++ b/charts/kubeless/README.md @@ -0,0 +1,126 @@ +# ⚠️ Repo Archive Notice + +As of Nov 13, 2020, charts in this repo will no longer be updated. +For more information, see the Helm Charts [Deprecation and Archive Notice](https://github.com/helm/charts#%EF%B8%8F-deprecation-and-archive-notice), and [Update](https://helm.sh/blog/charts-repo-deprecation/). + +# Kubeless + +[Kubeless](http://kubeless.io/) 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. With kubeless you can build advanced applications that tie together services using functions. + +## DEPRECATION NOTICE + +This chart is deprecated and no longer supported. + +## TL;DR; + +```bash +$ helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/ +$ helm install --namespace kubeless incubator/kubeless +``` + +## Introduction + +This chart bootstraps a [Kubeless](https://github.com/kubeless/kubeless) and a [Kubeless-UI](https://github.com/kubeless/kubeless-ui) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + +## Prerequisites + +- Kubernetes 1.7+ with Beta APIs enabled + +## Installing the Chart + +To install the chart with the release name `my-release`: + +```bash +$ helm install --name my-release --namespace kubeless incubator/kubeless +``` + +> **NOTE** +> +> While the chart supports deploying Kubeless to any namespace, Kubeless expects to be deployed under a namespace named `kubeless`. + +The command deploys Kubeless on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. + +> **Tip**: List all releases using `helm list` + +## Uninstalling the Chart + +To uninstall/delete the `my-release` deployment: + +```bash +$ 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 configure the following values: `rbac.create: true`, `kafkaTrigger.enabled: true`, `kafkaTrigger.env.kafkaBrokers: `. + +## Configuration + +The following table lists the configurable parameters of the Kubeless chart and their default values. + +| Parameter | Description | Default | +| ----------------------------------------------------------------- | ------------------------------------------ | ----------------------------------------- | +| `rbac.create` | Create RBAC backed ServiceAccount | `false` | +| `config.functionsNamespace` | Functions namespace | "" | +| `config.builderImage` | Function builder image | `kubeless/function-image-builder` | +| `config.builderImagePullSecret` | Secret to pull builder image | "" | +| `config.provisionImage` | Provision image | `kubeless/unzip` | +| `config.provisionImagePullSecret` | 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.functionController.image.repository` | Function Controller image | `kubeless/function-controller` | +| `controller.deployment.functionController.image.pullPolicy` | Function Controller image pull policy | `IfNotPresent` | +| `controller.deployment.httpTriggerController.image.repository` | HTTP Controller image | `bitnami/bitnami/http-trigger-controller` | +| `controller.deployment.httpTriggerController.image.pullPolicy` | HTTP Controller image pull policy | `IfNotPresent` | +| `controller.deployment.cronJobTriggerController.image.repository` | CronJob Controller image | `bitnami/cronjob-trigger-controller` | +| `controller.deployment.cronJobTriggerController.image.pullPolicy` | CronJob 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.1` | + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, + +```bash +$ helm install --name my-release --set service.name=ui-service,service,externalPort=4000 --namespace kubeless incubator/kubeless +``` + +The above command sets the Kubeless service name to `ui-service` and the external port to `4000`. + +Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, + +```bash +$ helm install --name my-release -f values.yaml --namespace kubeless incubator/kubeless +``` + +> **Tip**: You can use the default [values.yaml](values.yaml) + +## Kubeless UI + +The [Kubeless UI](https://github.com/kubeless/kubeless-ui) component is disabled by default. In order to enable it set the ui.enabled property to true. For example, + +```bash +$ helm install --name my-release --set ui.enabled=true --namespace kubeless incubator/kubeless +``` diff --git a/charts/kubeless/crds/cronjobtrigger-crd.yaml b/charts/kubeless/crds/cronjobtrigger-crd.yaml new file mode 100644 index 0000000..70864b7 --- /dev/null +++ b/charts/kubeless/crds/cronjobtrigger-crd.yaml @@ -0,0 +1,17 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + name: cronjobtriggers.kubeless.io + labels: + app: kubeless + annotations: + helm.sh/hook: crd-install + helm.sh/hook-delete-policy: before-hook-creation +spec: + group: kubeless.io + names: + kind: CronJobTrigger + plural: cronjobtriggers + singular: cronjobtrigger + scope: Namespaced + version: v1beta1 diff --git a/charts/kubeless/crds/function-crd.yaml b/charts/kubeless/crds/function-crd.yaml new file mode 100644 index 0000000..8f56222 --- /dev/null +++ b/charts/kubeless/crds/function-crd.yaml @@ -0,0 +1,17 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + name: functions.kubeless.io + labels: + app: kubeless + annotations: + helm.sh/hook: crd-install + helm.sh/hook-delete-policy: before-hook-creation +spec: + group: kubeless.io + names: + kind: Function + plural: functions + singular: function + scope: Namespaced + version: v1beta1 diff --git a/charts/kubeless/crds/httptrigger-crd.yaml b/charts/kubeless/crds/httptrigger-crd.yaml new file mode 100644 index 0000000..e5f03f2 --- /dev/null +++ b/charts/kubeless/crds/httptrigger-crd.yaml @@ -0,0 +1,17 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + name: httptriggers.kubeless.io + labels: + app: kubeless + annotations: + helm.sh/hook: crd-install + helm.sh/hook-delete-policy: before-hook-creation +spec: + group: kubeless.io + names: + kind: HTTPTrigger + plural: httptriggers + singular: httptrigger + scope: Namespaced + version: v1beta1 diff --git a/charts/kubeless/crds/kafka-trigger-type-crd.yaml b/charts/kubeless/crds/kafka-trigger-type-crd.yaml new file mode 100644 index 0000000..a50717d --- /dev/null +++ b/charts/kubeless/crds/kafka-trigger-type-crd.yaml @@ -0,0 +1,17 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + name: kafkatriggers.kubeless.io + labels: + app: kubeless + annotations: + helm.sh/hook: crd-install + helm.sh/hook-delete-policy: before-hook-creation +spec: + group: kubeless.io + names: + kind: KafkaTrigger + plural: kafkatriggers + singular: kafkatrigger + scope: Namespaced + version: v1beta1 \ No newline at end of file diff --git a/charts/kubeless/templates/NOTES.txt b/charts/kubeless/templates/NOTES.txt new file mode 100644 index 0000000..762d9a4 --- /dev/null +++ b/charts/kubeless/templates/NOTES.txt @@ -0,0 +1,33 @@ +{{- if .Values.ui.enabled }} +== Access the Kubeless UI URL: + +{{- if contains "LoadBalancer" .Values.ui.service.type }} + + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w ui' + + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "kubeless.fullname" . }}-ui --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + export SERVICE_PORT=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "kubeless.fullname" . }}-ui -o jsonpath='{.spec.ports[0].port}') + echo http://$SERVICE_IP:$SERVICE_PORT/ +{{- else if contains "ClusterIP" .Values.ui.service.type }} + + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "controller={{ template "kubeless.fullname" . }}-ui" -o jsonpath="{.items[0].metadata.name}") + echo http://127.0.0.1:3000 + kubectl port-forward --namespace {{ .Release.Namespace }} $POD_NAME 3000:3000 + +{{- end }} + +{{- if contains "NodePort" .Values.ui.service.type }} + + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "kubeless.fullname" . }}-ui) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT + +{{- end }} +{{- end }} +== Deploy function + +In order to deploy a function you need the kubeless binary. +You can download it from the kubeless repo: + +https://github.com/kubeless/kubeless diff --git a/charts/kubeless/templates/_helpers.tpl b/charts/kubeless/templates/_helpers.tpl new file mode 100644 index 0000000..86edebc --- /dev/null +++ b/charts/kubeless/templates/_helpers.tpl @@ -0,0 +1,29 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "kubeless.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "kubeless.fullname" -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{- /* +Credit: @technosophos +https://github.com/technosophos/common-chart/ +labels.standard prints the standard Helm labels. +The standard labels are frequently used in metadata. +*/ -}} +{{- define "labels.standard" -}} +app: {{ template "kubeless.name" . }} +heritage: {{ .Release.Service | quote }} +release: {{ .Release.Name | quote }} +chart: {{ .Chart.Name }}-{{ .Chart.Version }} +{{- end -}} diff --git a/charts/kubeless/templates/cluster-role-binding.yaml b/charts/kubeless/templates/cluster-role-binding.yaml new file mode 100644 index 0000000..145da56 --- /dev/null +++ b/charts/kubeless/templates/cluster-role-binding.yaml @@ -0,0 +1,16 @@ +{{- if .Values.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + name: {{ template "kubeless.fullname" . }}-controller-deployer + labels: +{{ include "labels.standard" . | indent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ template "kubeless.fullname" . }}-controller-deployer +subjects: +- kind: ServiceAccount + name: controller-acct + namespace: {{ .Release.Namespace }} +{{- end}} diff --git a/charts/kubeless/templates/cluster-role.yaml b/charts/kubeless/templates/cluster-role.yaml new file mode 100644 index 0000000..107e4e9 --- /dev/null +++ b/charts/kubeless/templates/cluster-role.yaml @@ -0,0 +1,109 @@ +{{- if .Values.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + name: {{ template "kubeless.fullname" . }}-controller-deployer + labels: +{{ include "labels.standard" . | indent 4 }} +rules: +- apiGroups: + - "" + resources: + - services + - configmaps + verbs: + - create + - get + - delete + - list + - update + - patch +- apiGroups: + - apps + - extensions + resources: + - deployments + verbs: + - create + - get + - delete + - list + - update + - patch +- apiGroups: + - "" + resources: + - pods + verbs: + - list + - delete +- apiGroups: + - "" + resourceNames: + - kubeless-registry-credentials + resources: + - secrets + verbs: + - get +- apiGroups: + - kubeless.io + resources: + - functions + - httptriggers + - cronjobtriggers + verbs: + - get + - list + - watch + - update + - delete +- apiGroups: + - batch + resources: + - cronjobs + - jobs + verbs: + - create + - get + - delete + - deletecollection + - list + - update + - patch +- apiGroups: + - autoscaling + resources: + - horizontalpodautoscalers + verbs: + - create + - get + - delete + - list + - update + - patch +- apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - get + - list +- apiGroups: + - monitoring.coreos.com + resources: + - alertmanagers + - prometheuses + - servicemonitors + verbs: + - '*' +- apiGroups: + - extensions + resources: + - ingresses + verbs: + - create + - get + - list + - update + - delete +{{- end}} diff --git a/charts/kubeless/templates/controller-deployment.yaml b/charts/kubeless/templates/controller-deployment.yaml new file mode 100644 index 0000000..2f1b751 --- /dev/null +++ b/charts/kubeless/templates/controller-deployment.yaml @@ -0,0 +1,47 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "kubeless.fullname" . }}-controller-manager + labels: +{{ include "labels.standard" . | indent 4 }} + kubeless: controller +spec: + selector: + matchLabels: + kubeless: controller + replicas: {{ .Values.controller.deployment.replicaCount }} + template: + metadata: + labels: + kubeless: controller + app: {{ template "kubeless.name" . }} + release: {{ .Release.Name }} + spec: + containers: + - name: kubeless-function-controller + image: "{{ .Values.controller.deployment.functionController.image.repository }}:{{ .Values.controller.deployment.functionController.image.tag }}" + imagePullPolicy: {{ .Values.controller.deployment.functionController.image.pullPolicy }} + env: + - name: KUBELESS_NAMESPACE + value: {{ .Release.Namespace }} + resources: +{{ toYaml .Values.controller.resources | indent 10 }} + - name: http-trigger-controller + image: "{{ .Values.controller.deployment.httpTriggerController.image.repository }}:{{ .Values.controller.deployment.httpTriggerController.image.tag }}" + imagePullPolicy: {{ .Values.controller.deployment.httpTriggerController.image.pullPolicy }} + env: + - name: KUBELESS_NAMESPACE + value: {{ .Release.Namespace }} + resources: +{{ toYaml .Values.controller.resources | indent 10 }} + - name: cronjob-trigger-controller + image: "{{ .Values.controller.deployment.cronJobTriggerController.image.repository }}:{{ .Values.controller.deployment.cronJobTriggerController.image.tag }}" + imagePullPolicy: {{ .Values.controller.deployment.cronJobTriggerController.image.pullPolicy }} + env: + - name: KUBELESS_NAMESPACE + value: {{ .Release.Namespace }} + resources: +{{ toYaml .Values.controller.resources | indent 10 }} +{{- if .Values.rbac.create }} + serviceAccountName: controller-acct +{{- end }} diff --git a/charts/kubeless/templates/crds.yaml b/charts/kubeless/templates/crds.yaml new file mode 100644 index 0000000..285bece --- /dev/null +++ b/charts/kubeless/templates/crds.yaml @@ -0,0 +1,4 @@ +{{- range $path, $bytes := .Files.Glob "crds/*.yaml" }} +{{ $.Files.Get $path }} +--- +{{- end }} diff --git a/charts/kubeless/templates/kafka-controller-cluster-role-binding.yaml b/charts/kubeless/templates/kafka-controller-cluster-role-binding.yaml new file mode 100644 index 0000000..f0608be --- /dev/null +++ b/charts/kubeless/templates/kafka-controller-cluster-role-binding.yaml @@ -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 }} \ No newline at end of file diff --git a/charts/kubeless/templates/kafka-controller-cluster-role.yaml b/charts/kubeless/templates/kafka-controller-cluster-role.yaml new file mode 100644 index 0000000..130ce74 --- /dev/null +++ b/charts/kubeless/templates/kafka-controller-cluster-role.yaml @@ -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 }} \ No newline at end of file diff --git a/charts/kubeless/templates/kafka-controller-deployment.yaml b/charts/kubeless/templates/kafka-controller-deployment.yaml new file mode 100644 index 0000000..873a567 --- /dev/null +++ b/charts/kubeless/templates/kafka-controller-deployment.yaml @@ -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 }} \ No newline at end of file diff --git a/charts/kubeless/templates/kubeless-config.yaml b/charts/kubeless/templates/kubeless-config.yaml new file mode 100644 index 0000000..8afe502 --- /dev/null +++ b/charts/kubeless/templates/kubeless-config.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +data: + functions-namespace: {{ default "" .Values.config.functionsNamespace | quote }} + builder-image: "{{ .Values.config.builderImage }}:{{ .Values.controller.deployment.functionController.image.tag }}" + builder-image-secret: "{{ .Values.config.builderImagePullSecret }}" + deployment: "{{ .Values.config.deploymentTemplate }}" + enable-build-step: "{{ .Values.config.enableBuildStep }}" + function-registry-tls-verify: "{{ .Values.config.functionRegistryTLSVerify }}" + provision-image: "{{ .Values.config.provisionImage }}" + provision-image-secret: "{{ .Values.config.provisionImagePullSecret }}" + runtime-images: |- +{{ .Values.config.runtimeImages | indent 4 }} +kind: ConfigMap +metadata: + name: kubeless-config diff --git a/charts/kubeless/templates/service-account.yaml b/charts/kubeless/templates/service-account.yaml new file mode 100644 index 0000000..70b6f63 --- /dev/null +++ b/charts/kubeless/templates/service-account.yaml @@ -0,0 +1,8 @@ +{{- if .Values.rbac.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: controller-acct + labels: +{{ include "labels.standard" . | indent 4 }} +{{- end }} diff --git a/charts/kubeless/templates/ui-cluster-role-binding.yaml b/charts/kubeless/templates/ui-cluster-role-binding.yaml new file mode 100644 index 0000000..421cf3e --- /dev/null +++ b/charts/kubeless/templates/ui-cluster-role-binding.yaml @@ -0,0 +1,18 @@ +{{- if .Values.rbac.create }} +{{- if .Values.ui.enabled }} +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + name: kubeless-ui + labels: +{{ include "labels.standard" . | indent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: kubeless-ui +subjects: +- kind: ServiceAccount + name: kubeless-ui + namespace: {{ .Release.Namespace }} +{{- end}} +{{- end}} diff --git a/charts/kubeless/templates/ui-cluster-role.yaml b/charts/kubeless/templates/ui-cluster-role.yaml new file mode 100644 index 0000000..62a6f6d --- /dev/null +++ b/charts/kubeless/templates/ui-cluster-role.yaml @@ -0,0 +1,45 @@ +{{- if .Values.rbac.create }} +{{- if .Values.ui.enabled }} +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + name: kubeless-ui + labels: +{{ include "labels.standard" . | indent 4 }} +rules: +- apiGroups: + - "" + resources: + - pods + - pods/log + verbs: + - get + - list +- apiGroups: + - kubeless.io + resources: + - functions + verbs: + - get + - list + - watch + - update + - create + - delete +- apiGroups: + - "" + resources: + - services + - services/proxy + verbs: + - get + - list + - proxy +- apiGroups: + - "" + resources: + - configmaps + verbs: + - get +{{- end}} +{{- end}} diff --git a/charts/kubeless/templates/ui-deployment.yaml b/charts/kubeless/templates/ui-deployment.yaml new file mode 100644 index 0000000..9ffe63a --- /dev/null +++ b/charts/kubeless/templates/ui-deployment.yaml @@ -0,0 +1,48 @@ +{{- if .Values.ui.enabled }} +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ template "kubeless.fullname" . }}-ui + labels: +{{ include "labels.standard" . | indent 4 }} + component: ui +spec: + replicas: {{ .Values.controller.deployment.replicaCount }} + template: + metadata: + labels: + component: ui + app: {{ template "kubeless.name" . }} + release: {{ .Release.Name | quote }} + spec: +{{- if .Values.rbac.create }} + serviceAccountName: kubeless-ui +{{- end }} + containers: + - name: ui + image: "{{ .Values.ui.deployment.ui.image.repository }}:{{ .Values.ui.deployment.ui.image.tag }}" + imagePullPolicy: {{ .Values.ui.deployment.ui.image.pullPolicy }} + ports: + - containerPort: 3000 + name: http + protocol: TCP + readinessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 5 + periodSeconds: 10 + livenessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 10 + periodSeconds: 20 + - name: proxy + image: "{{ .Values.ui.deployment.proxy.image.repository }}:{{ .Values.ui.deployment.proxy.image.tag }}" + imagePullPolicy: {{ .Values.ui.deployment.proxy.image.pullPolicy }} + args: + - proxy + - "-p" + - "8080" +{{- end }} diff --git a/charts/kubeless/templates/ui-ingress.yaml b/charts/kubeless/templates/ui-ingress.yaml new file mode 100644 index 0000000..8b7f9c6 --- /dev/null +++ b/charts/kubeless/templates/ui-ingress.yaml @@ -0,0 +1,36 @@ +{{- if and .Values.ui.enabled .Values.ui.ingress.enabled -}} +{{- $fullName := include "kubeless.fullname" . -}} +{{- $ingressPath := .Values.ui.ingress.path -}} +{{- $portName := .Values.ui.service.name -}} +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: {{ $fullName }}-ui + labels: +{{ include "labels.standard" . | indent 4 }} +{{- with .Values.ui.ingress.annotations }} + annotations: +{{ toYaml . | indent 4 }} +{{- end }} +spec: +{{- if .Values.ui.ingress.tls }} + tls: + {{- range .Values.ui.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} +{{- end }} + rules: + {{- range .Values.ui.ingress.hosts }} + - host: {{ . }} + http: + paths: + - path: {{ $ingressPath }} + backend: + serviceName: {{ $fullName }}-ui + servicePort: {{ $portName }} + {{- end }} +{{- end }} diff --git a/charts/kubeless/templates/ui-service-account.yaml b/charts/kubeless/templates/ui-service-account.yaml new file mode 100644 index 0000000..27a5a02 --- /dev/null +++ b/charts/kubeless/templates/ui-service-account.yaml @@ -0,0 +1,10 @@ +{{- if .Values.rbac.create }} +{{- if .Values.ui.enabled }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: kubeless-ui + labels: +{{ include "labels.standard" . | indent 4 }} +{{- end }} +{{- end}} diff --git a/charts/kubeless/templates/ui-svc.yaml b/charts/kubeless/templates/ui-svc.yaml new file mode 100644 index 0000000..00dd24f --- /dev/null +++ b/charts/kubeless/templates/ui-svc.yaml @@ -0,0 +1,21 @@ +{{- if .Values.ui.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "kubeless.fullname" . }}-ui + labels: +{{ include "labels.standard" . | indent 4 }} + controller: {{ template "kubeless.fullname" . }}-ui +spec: + ports: + - name: {{ .Values.ui.service.name }} + port: {{ .Values.ui.service.externalPort }} + protocol: TCP + targetPort: 3000 + selector: + component: ui + app: {{ template "kubeless.name" . }} + release: {{ .Release.Name | quote }} + sessionAffinity: None + type: {{ .Values.ui.service.type }} +{{- end }} diff --git a/charts/kubeless/values.yaml b/charts/kubeless/values.yaml new file mode 100644 index 0000000..62ded80 --- /dev/null +++ b/charts/kubeless/values.yaml @@ -0,0 +1,551 @@ +# Default values for kubeless. +## RBAC configuration +rbac: + create: false + +## Controller configuration +controller: + deployment: + replicaCount: 1 + functionController: + image: + repository: kubeless/function-controller + tag: v1.0.5 + pullPolicy: IfNotPresent + httpTriggerController: + image: + repository: kubeless/http-trigger-controller + tag: v1.0.1 + pullPolicy: IfNotPresent + cronJobTriggerController: + image: + repository: kubeless/cronjob-trigger-controller + tag: v1.0.1 + pullPolicy: IfNotPresent + ## Kubeless Controller resource requests and limits + ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## + resources: {} + # limits: + # cpu: 500m + # memory: 512Mi + # requests: + # cpu: 500m + # memory: 512Mi + +## Kubeless configuration +config: + functionsNamespace: "" + builderImage: kubeless/function-image-builder + builderImagePullSecret: "" + deploymentTemplate: '{}' + enableBuildStep: "false" + functionRegistryTLSVerify: "true" + provisionImage: kubeless/unzip@sha256:f162c062973cca05459834de6ed14c039d45df8cdb76097f50b028a1621b3697 + provisionImagePullSecret: "" + runtimeImages: '[ + { + "ID": "ballerina", + "depName": "", + "fileNameSuffix": ".bal", + "versions": [ + { + "images": [ + { + "command": "/compile-function.sh $KUBELESS_FUNC_NAME", + "image": "ballerina/kubeless-ballerina-init@sha256:a04ca9d289c62397d0b493876f6a9ff4cc425563a47aa7e037c3b850b8ceb3e8", + "phase": "compilation" + }, + { + "image": "ballerina/kubeless-ballerina@sha256:a025841010cfdf8136396efef31d4155283770d331ded6a9003e6e55f02db2e5", + "phase": "runtime" + } + ], + "name": "ballerina0.981.0", + "version": "0.981.0" + } + ] + }, + { + "ID": "dotnetcore", + "depName": "project.csproj", + "fileNameSuffix": ".cs", + "versions": [ + { + "images": [ + { + "command": "/app/compile-function.sh $KUBELESS_INSTALL_VOLUME", + "image": "allantargino/aspnetcore-build@sha256:0d60f845ff6c9c019362a68b87b3920f3eb2d32f847f2d75e4d190cc0ce1d81c", + "phase": "compilation" + }, + { + "env": { + "DOTNETCORE_HOME": "$(KUBELESS_INSTALL_VOLUME)/packages" + }, + "image": "allantargino/kubeless-dotnetcore@sha256:1699b07d9fc0276ddfecc2f823f272d96fd58bbab82d7e67f2fd4982a95aeadc", + "phase": "runtime" + } + ], + "name": "dotnetcore2.0", + "version": "2.0" + }, + { + "images": [ + { + "command": "/app/compile-function.sh $KUBELESS_INSTALL_VOLUME", + "image": "allantargino/aspnetcore-build@sha256:36123cf0279b87c5d27d69558062678a5353cc6db238af46bd5c0e508109f659", + "phase": "compilation" + }, + { + "env": { + "DOTNETCORE_HOME": "$(KUBELESS_INSTALL_VOLUME)/packages" + }, + "image": "allantargino/kubeless-dotnetcore@sha256:6d6c659807881e9dac7adde305867163ced5711ef77a3a76e50112bca1ba14cf", + "phase": "runtime" + } + ], + "name": "dotnetcore2.1", + "version": "2.1" + } + ] + }, + { + "ID": "go", + "depName": "Gopkg.toml", + "fileNameSuffix": ".go", + "versions": [ + { + "images": [ + { + "command": "/compile-function.sh", + "image": "kubeless/go-init@sha256:88104a60bcd4c67fd6aa92fffa46062396c08bc2632529ee435517e7628a2f95", + "phase": "compilation" + }, + { + "command": "cd $GOPATH/src/kubeless && dep ensure > /dev/termination-log 2>&1", + "image": "kubeless/go-init@sha256:88104a60bcd4c67fd6aa92fffa46062396c08bc2632529ee435517e7628a2f95", + "phase": "installation" + }, + { + "image": "kubeless/go@sha256:f5d449f830ac8727c0b9c05e458b6dd0a0822743cb19a87343e0fd00b041eea9", + "phase": "runtime" + } + ], + "name": "go1.10", + "version": "1.10" + } + ] + }, + { + "ID": "java", + "depName": "pom.xml", + "fileNameSuffix": ".java", + "versions": [ + { + "images": [ + { + "command": "/compile-function.sh", + "image": "kubeless/java-init@sha256:36cc37836437aaa5ac82f49ba20781d45bd5efcd9e2d022fcaae487a058572c2", + "phase": "compilation" + }, + { + "image": "kubeless/java@sha256:2dbc44c0e2467a27558776edb2aed85055361e2f0b74443800851ee658576a88", + "phase": "runtime" + } + ], + "name": "java1.8", + "version": "1.8" + } + ] + }, + { + "ID": "nodejs", + "depName": "package.json", + "fileNameSuffix": ".js", + "versions": [ + { + "images": [ + { + "command": "/kubeless-npm-install.sh", + "image": "kubeless/nodejs@sha256:4d8f5d6ad51676e8faffc0da6fabe8e12cf8cf34ae0ce8e94ee4e510f9876d2e", + "phase": "installation" + }, + { + "env": { + "NODE_PATH": "$(KUBELESS_INSTALL_VOLUME)/node_modules" + }, + "image": "kubeless/nodejs@sha256:4d8f5d6ad51676e8faffc0da6fabe8e12cf8cf34ae0ce8e94ee4e510f9876d2e", + "phase": "runtime" + } + ], + "name": "node6", + "version": "6" + }, + { + "images": [ + { + "command": "/kubeless-npm-install.sh", + "image": "kubeless/nodejs@sha256:5c3c21cf29231f25a0d7d2669c6f18c686894bf44e975fcbbbb420c6d045f7e7", + "phase": "installation" + }, + { + "env": { + "NODE_PATH": "$(KUBELESS_INSTALL_VOLUME)/node_modules" + }, + "image": "kubeless/nodejs@sha256:5c3c21cf29231f25a0d7d2669c6f18c686894bf44e975fcbbbb420c6d045f7e7", + "phase": "runtime" + } + ], + "name": "node8", + "version": "8" + }, + { + "images": [ + { + "command": "/kubeless-npm-install.sh", + "image": "kubeless/nodejs@sha256:9594e9d601cfe3868b54cccf1cd8763b2430493fed3e06d7dc128a69b263dfaf", + "phase": "installation" + }, + { + "env": { + "NODE_PATH": "$(KUBELESS_INSTALL_VOLUME)/node_modules" + }, + "image": "kubeless/nodejs@sha256:9594e9d601cfe3868b54cccf1cd8763b2430493fed3e06d7dc128a69b263dfaf", + "phase": "runtime" + } + ], + "name": "node10", + "version": "10" + }, + { + "images": [ + { + "command": "/kubeless-npm-install.sh", + "image": "kubeless/nodejs@sha256:1c45cda56384adc7deae9bf99e221b8e159ec25980c05b947939096bf91800e6", + "phase": "installation" + }, + { + "env": { + "NODE_PATH": "$(KUBELESS_INSTALL_VOLUME)/node_modules" + }, + "image": "kubeless/nodejs@sha256:1c45cda56384adc7deae9bf99e221b8e159ec25980c05b947939096bf91800e6", + "phase": "runtime" + } + ], + "name": "node12", + "version": "12" + } + ] + }, + { + "ID": "php", + "depName": "composer.json", + "fileNameSuffix": ".php", + "versions": [ + { + "images": [ + { + "command": "composer install -d $KUBELESS_INSTALL_VOLUME", + "image": "composer:1.6", + "phase": "installation" + }, + { + "image": "kubeless/php@sha256:8f7f8aa9980a14126d9b9e8b3742258efd2591b0e152b4d65e0d7b5faf61a041", + "phase": "runtime" + } + ], + "name": "php73", + "version": "7.3" + } + ] + }, + { + "ID": "python", + "depName": "requirements.txt", + "fileNameSuffix": ".py", + "versions": [ + { + "images": [ + { + "command": "pip install --prefix=$KUBELESS_INSTALL_VOLUME -r $KUBELESS_DEPS_FILE", + "image": "python:2.7", + "phase": "installation" + }, + { + "env": { + "PYTHONPATH": "$(KUBELESS_INSTALL_VOLUME)/lib/python2.7/site-packages:$(KUBELESS_INSTALL_VOLUME)" + }, + "image": "kubeless/python@sha256:34332f4530508a810f491838a924c36ceac0ec7cab487520e2db2b037800ecda", + "phase": "runtime" + } + ], + "name": "python27", + "version": "2.7" + }, + { + "images": [ + { + "command": "pip install --prefix=$KUBELESS_INSTALL_VOLUME -r $KUBELESS_DEPS_FILE", + "image": "python:3.4", + "phase": "installation" + }, + { + "env": { + "PYTHONPATH": "$(KUBELESS_INSTALL_VOLUME)/lib/python3.4/site-packages:$(KUBELESS_INSTALL_VOLUME)" + }, + "image": "kubeless/python@sha256:5c93a60b83dba9324ad8358e66952232746ef9d477266d6a199617d7344c2053", + "phase": "runtime" + } + ], + "name": "python34", + "version": "3.4" + }, + { + "images": [ + { + "command": "pip install --prefix=$KUBELESS_INSTALL_VOLUME -r $KUBELESS_DEPS_FILE", + "image": "python:3.6", + "phase": "installation" + }, + { + "env": { + "PYTHONPATH": "$(KUBELESS_INSTALL_VOLUME)/lib/python3.6/site-packages:$(KUBELESS_INSTALL_VOLUME)" + }, + "image": "kubeless/python@sha256:8c49bfa1c6aa5fbcd0f7d99d97280c161247fc94c06d26c04e39ac341c3f75e5", + "phase": "runtime" + } + ], + "name": "python36", + "version": "3.6" + }, + { + "images": [ + { + "command": "pip install --prefix=$KUBELESS_INSTALL_VOLUME -r $KUBELESS_DEPS_FILE", + "image": "python:3.7", + "phase": "installation" + }, + { + "env": { + "PYTHONPATH": "$(KUBELESS_INSTALL_VOLUME)/lib/python3.7/site-packages:$(KUBELESS_INSTALL_VOLUME)" + }, + "image": "kubeless/python@sha256:dbf616cb06a262482c00f5b53e1de17571924032e0ad000865ec6b5357ff35bf", + "phase": "runtime" + } + ], + "name": "python37", + "version": "3.7" + } + ] + }, + { + "ID": "ruby", + "depName": "Gemfile", + "fileNameSuffix": ".rb", + "versions": [ + { + "images": [ + { + "command": "bundle install --gemfile=$KUBELESS_DEPS_FILE --path=$KUBELESS_INSTALL_VOLUME", + "image": "bitnami/ruby:2.3", + "phase": "installation" + }, + { + "env": { + "GEM_HOME": "$(KUBELESS_INSTALL_VOLUME)/ruby/2.3.0" + }, + "image": "kubeless/ruby@sha256:67870b57adebc4dc749a8a19795da801da2d05fc6e8324168ac1b227bb7c77f7", + "phase": "runtime" + } + ], + "name": "ruby23", + "version": "2.3" + }, + { + "images": [ + { + "command": "bundle install --gemfile=$KUBELESS_DEPS_FILE --path=$KUBELESS_INSTALL_VOLUME", + "image": "bitnami/ruby:2.4", + "phase": "installation" + }, + { + "env": { + "GEM_HOME": "$(KUBELESS_INSTALL_VOLUME)/ruby/2.4.0" + }, + "image": "kubeless/ruby@sha256:aaa9c7f3dfd4f866a527c04171c32dae2efa420d770a6af9c517771137ab4011", + "phase": "runtime" + } + ], + "name": "ruby24", + "version": "2.4" + }, + { + "images": [ + { + "command": "bundle install --gemfile=$KUBELESS_DEPS_FILE --path=$KUBELESS_INSTALL_VOLUME", + "image": "bitnami/ruby:2.5", + "phase": "installation" + }, + { + "env": { + "GEM_HOME": "$(KUBELESS_INSTALL_VOLUME)/ruby/2.5.0" + }, + "image": "kubeless/ruby@sha256:577e35724996ba340ff0a18366bce99586b0be58e4d27fa3e8038f977caf1559", + "phase": "runtime" + } + ], + "name": "ruby25", + "version": "2.5" + }, + { + "images": [ + { + "command": "bundle install --gemfile=$KUBELESS_DEPS_FILE --path=$KUBELESS_INSTALL_VOLUME", + "image": "bitnami/ruby:2.6", + "phase": "installation" + }, + { + "env": { + "GEM_HOME": "$(KUBELESS_INSTALL_VOLUME)/ruby/2.6.0" + }, + "image": "kubeless/ruby@sha256:6a79d335bec224d820f149a6eb293e2bbab333ad63581e747ec644fd1af19c61", + "phase": "runtime" + } + ], + "name": "ruby26", + "version": "2.6" + } + ] + }, + { + "ID": "jvm", + "depName": "", + "fileNameSuffix": ".jar", + "versions": [ + { + "images": [ + { + "command": "mv /kubeless/* /kubeless/payload.jar && cp /opt/*.jar /kubeless/ > /dev/termination-log 2>&1", + "image": "caraboides/jvm-init@sha256:e57dbf3f56570a196d68bce1c0695102b2dbe3ae2ca6d1c704476a7a11542f1d", + "phase": "compilation" + }, + { + "image": "caraboides/jvm@sha256:2870c4f48df4feb2ee7478a152b44840d781d4b1380ad3fa44b3c7ff314faded", + "phase": "runtime" + } + ], + "name": "jvm1.8", + "version": "1.8" + }, + { + "images": [ + { + "command": "mv /kubeless/* /kubeless/payload.jar && cp /opt/*.jar /kubeless/ > /dev/termination-log 2>&1", + "image": "kubeless/java-init@sha256:b7a8ae3c17b7cefaa28364348d2f504a02c936d38aee57f46b61f3745c784c17", + "phase": "compilation" + }, + { + "image": "kubeless/java@sha256:b04e8e1f4a1acb8a94778320df8fd13aaf1eed22034007bf6d9109e55a4aa0c8", + "phase": "runtime" + } + ], + "name": "jvm11", + "version": "11" + } + ] + }, + { + "ID": "nodejs_distroless", + "depName": "package.json", + "fileNameSuffix": ".js", + "versions": [ + { + "images": [ + { + "command": "/kubeless-npm-install.sh", + "image": "kubeless/nodejs@sha256:424add88dc2a7fdc45012593159794d59a6ea4aafadfffb632d21ae53b1d262b", + "phase": "installation" + }, + { + "env": { + "NODE_PATH": "$(KUBELESS_INSTALL_VOLUME)/node_modules" + }, + "image": "kubeless/nodejs-distroless@sha256:1fa0469c5520f4e08d89b1fafd2cacf03f098b96ea04997fa52bb9ef2a180fb3", + "phase": "runtime" + } + ], + "name": "node8", + "version": "8" + } + ] + }, + { + "ID": "nodejsCE", + "depName": "package.json", + "fileNameSuffix": ".js", + "versions": [ + { + "images": [ + { + "command": "/kubeless-npm-install.sh", + "image": "kubeless/nodejs@sha256:456d98f6f15588b21f5110facf1cc203065840d4c227afa61d17c6c1fa98b3b6", + "phase": "installation" + }, + { + "env": { + "NODE_PATH": "$(KUBELESS_INSTALL_VOLUME)/node_modules" + }, + "image": "andresmgot/nodejs-ce@sha256:708c265d22a8a1599e05da844d26bc63e2f66f859ffecd2fcb541ecac9c66780", + "phase": "runtime" + } + ], + "name": "node8", + "version": "8" + } + ] + }]' + +## UI configuration +ui: + enabled: false + deployment: + replicaCount: 1 + ui: + image: + repository: bitnami/kubeless-ui + tag: latest + pullPolicy: IfNotPresent + proxy: + image: + repository: kelseyhightower/kubectl + tag: 1.4.0 + pullPolicy: IfNotPresent + + service: + name: ui-port + type: NodePort + externalPort: 3000 + + ingress: + enabled: false + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + path: / + hosts: + - chart-example.local + tls: [] + # - 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.1 + pullPolicy: IfNotPresent + env: + kafkaBrokers: localhost:9092 From 2bada6a8eae260fa305fa563a97a126a1a32bb6b Mon Sep 17 00:00:00 2001 From: Cole Arendt Date: Tue, 4 May 2021 06:31:23 -0400 Subject: [PATCH 2/3] fix api versions --- charts/kubeless/crds/cronjobtrigger-crd.yaml | 2 +- charts/kubeless/crds/function-crd.yaml | 2 +- charts/kubeless/crds/httptrigger-crd.yaml | 2 +- charts/kubeless/crds/kafka-trigger-type-crd.yaml | 4 ++-- .../templates/kafka-controller-cluster-role-binding.yaml | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/charts/kubeless/crds/cronjobtrigger-crd.yaml b/charts/kubeless/crds/cronjobtrigger-crd.yaml index 70864b7..e87a652 100644 --- a/charts/kubeless/crds/cronjobtrigger-crd.yaml +++ b/charts/kubeless/crds/cronjobtrigger-crd.yaml @@ -1,4 +1,4 @@ -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: cronjobtriggers.kubeless.io diff --git a/charts/kubeless/crds/function-crd.yaml b/charts/kubeless/crds/function-crd.yaml index 8f56222..217b2aa 100644 --- a/charts/kubeless/crds/function-crd.yaml +++ b/charts/kubeless/crds/function-crd.yaml @@ -1,4 +1,4 @@ -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: functions.kubeless.io diff --git a/charts/kubeless/crds/httptrigger-crd.yaml b/charts/kubeless/crds/httptrigger-crd.yaml index e5f03f2..3bd86c2 100644 --- a/charts/kubeless/crds/httptrigger-crd.yaml +++ b/charts/kubeless/crds/httptrigger-crd.yaml @@ -1,4 +1,4 @@ -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: httptriggers.kubeless.io diff --git a/charts/kubeless/crds/kafka-trigger-type-crd.yaml b/charts/kubeless/crds/kafka-trigger-type-crd.yaml index a50717d..54ebea8 100644 --- a/charts/kubeless/crds/kafka-trigger-type-crd.yaml +++ b/charts/kubeless/crds/kafka-trigger-type-crd.yaml @@ -1,4 +1,4 @@ -apiVersion: apiextensions.k8s.io/v1beta1 +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: kafkatriggers.kubeless.io @@ -14,4 +14,4 @@ spec: plural: kafkatriggers singular: kafkatrigger scope: Namespaced - version: v1beta1 \ No newline at end of file + version: v1beta1 diff --git a/charts/kubeless/templates/kafka-controller-cluster-role-binding.yaml b/charts/kubeless/templates/kafka-controller-cluster-role-binding.yaml index f0608be..ad45b6e 100644 --- a/charts/kubeless/templates/kafka-controller-cluster-role-binding.yaml +++ b/charts/kubeless/templates/kafka-controller-cluster-role-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: rbac.authorization.k8s.io/v1beta1 +apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kafka-controller-deployer @@ -9,4 +9,4 @@ roleRef: subjects: - kind: ServiceAccount name: controller-acct - namespace: {{ .Release.Namespace }} \ No newline at end of file + namespace: {{ .Release.Namespace }} From 7144af8e832257b52e29e02d1836f01d121de884 Mon Sep 17 00:00:00 2001 From: Cole Arendt Date: Tue, 4 May 2021 06:32:41 -0400 Subject: [PATCH 3/3] add myself as a maintainer --- charts/kubeless/Chart.yaml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/charts/kubeless/Chart.yaml b/charts/kubeless/Chart.yaml index f55b14b..f39d8c2 100644 --- a/charts/kubeless/Chart.yaml +++ b/charts/kubeless/Chart.yaml @@ -1,7 +1,7 @@ name: kubeless -version: 2.1.3 +version: 2.1.4 appVersion: v1.0.5 -description: DEPRECATED 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. +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 apiVersion: v1 home: http://kubeless.io/ @@ -13,4 +13,7 @@ keywords: - serverless - function-as-a-service - faas -deprecated: true +maintainers: + - name: colearendt + email: helm@arendt.life + url: https://github.com/colearendt