├── .gitignore ├── charts ├── botfront-0.1.0.tgz ├── botfront-0.2.0.tgz ├── botfront-0.2.1.tgz ├── botfront-0.2.2.tgz ├── botfront-0.2.3.tgz ├── botfront-0.2.4.tgz ├── botfront-0.3.0.tgz ├── botfront-0.4.0.tgz ├── botfront-0.4.1.tgz ├── botfront-0.4.2.tgz ├── botfront-0.4.3.tgz ├── botfront-0.5.0.tgz ├── botfront-0.5.1.tgz ├── botfront-0.5.2.tgz ├── botfront-1.0.0.tgz ├── botfront-1.0.3.tgz ├── botfront-1.0.0-beta0.tgz ├── botfront-project-0.2.0.tgz ├── botfront-project-0.2.2.tgz ├── botfront-project-0.2.3.tgz ├── botfront-project-0.2.4.tgz ├── botfront-project-0.3.0.tgz ├── botfront-project-0.4.0.tgz ├── botfront-project-0.4.1.tgz ├── botfront-project-0.4.2.tgz ├── botfront-project-0.4.3.tgz ├── botfront-project-0.5.0.tgz ├── botfront-project-0.5.1.tgz ├── botfront-project-0.5.2.tgz ├── botfront-project-1.0.0.tgz ├── botfront-project-1.0.3.tgz └── botfront-project-1.0.0-beta0.tgz ├── botfront ├── charts │ ├── mongodb-7.8.6.tgz │ ├── redis-10.5.14.tgz │ └── mongo-express-1.0.1.tgz ├── Chart.yaml ├── NOTES.txt ├── templates │ ├── botfront-app-service.yaml │ ├── botfront-duckling-service.yaml │ ├── botfront-api-service.yaml │ ├── botfront-app-configmap.yaml │ ├── botfront-api-configmap.yaml │ ├── botfront-duckling-deployment.yaml │ ├── botfront-app-ingress.yaml │ ├── _helpers.tpl │ ├── botfront-secrets.yaml │ ├── botfront-api-deployment.yaml │ ├── botfront-role.yaml │ └── botfront-app-deployment.yaml ├── .helmignore ├── requirements.yaml ├── requirements.lock └── values.yaml ├── botfront-project ├── Chart.yaml ├── templates │ ├── secrets.yaml │ ├── configmap.yaml │ ├── persistentVolumeClaim.yaml │ ├── _helpers.tpl │ ├── service.yaml │ ├── NOTES.txt │ ├── ingress.yaml │ └── deployment.yaml ├── .helmignore └── values.yaml ├── helmer.sh ├── CHANGELOG.md ├── loadtesting ├── socket-load.yaml └── k6-rest.js ├── config.yaml ├── README.md └── index.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | private 2 | loadtesting/k6-rest.js 3 | loadtesting/socket-load.yaml 4 | -------------------------------------------------------------------------------- /charts/botfront-0.1.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-0.1.0.tgz -------------------------------------------------------------------------------- /charts/botfront-0.2.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-0.2.0.tgz -------------------------------------------------------------------------------- /charts/botfront-0.2.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-0.2.1.tgz -------------------------------------------------------------------------------- /charts/botfront-0.2.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-0.2.2.tgz -------------------------------------------------------------------------------- /charts/botfront-0.2.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-0.2.3.tgz -------------------------------------------------------------------------------- /charts/botfront-0.2.4.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-0.2.4.tgz -------------------------------------------------------------------------------- /charts/botfront-0.3.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-0.3.0.tgz -------------------------------------------------------------------------------- /charts/botfront-0.4.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-0.4.0.tgz -------------------------------------------------------------------------------- /charts/botfront-0.4.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-0.4.1.tgz -------------------------------------------------------------------------------- /charts/botfront-0.4.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-0.4.2.tgz -------------------------------------------------------------------------------- /charts/botfront-0.4.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-0.4.3.tgz -------------------------------------------------------------------------------- /charts/botfront-0.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-0.5.0.tgz -------------------------------------------------------------------------------- /charts/botfront-0.5.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-0.5.1.tgz -------------------------------------------------------------------------------- /charts/botfront-0.5.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-0.5.2.tgz -------------------------------------------------------------------------------- /charts/botfront-1.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-1.0.0.tgz -------------------------------------------------------------------------------- /charts/botfront-1.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-1.0.3.tgz -------------------------------------------------------------------------------- /charts/botfront-1.0.0-beta0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-1.0.0-beta0.tgz -------------------------------------------------------------------------------- /botfront/charts/mongodb-7.8.6.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/botfront/charts/mongodb-7.8.6.tgz -------------------------------------------------------------------------------- /botfront/charts/redis-10.5.14.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/botfront/charts/redis-10.5.14.tgz -------------------------------------------------------------------------------- /charts/botfront-project-0.2.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-project-0.2.0.tgz -------------------------------------------------------------------------------- /charts/botfront-project-0.2.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-project-0.2.2.tgz -------------------------------------------------------------------------------- /charts/botfront-project-0.2.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-project-0.2.3.tgz -------------------------------------------------------------------------------- /charts/botfront-project-0.2.4.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-project-0.2.4.tgz -------------------------------------------------------------------------------- /charts/botfront-project-0.3.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-project-0.3.0.tgz -------------------------------------------------------------------------------- /charts/botfront-project-0.4.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-project-0.4.0.tgz -------------------------------------------------------------------------------- /charts/botfront-project-0.4.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-project-0.4.1.tgz -------------------------------------------------------------------------------- /charts/botfront-project-0.4.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-project-0.4.2.tgz -------------------------------------------------------------------------------- /charts/botfront-project-0.4.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-project-0.4.3.tgz -------------------------------------------------------------------------------- /charts/botfront-project-0.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-project-0.5.0.tgz -------------------------------------------------------------------------------- /charts/botfront-project-0.5.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-project-0.5.1.tgz -------------------------------------------------------------------------------- /charts/botfront-project-0.5.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-project-0.5.2.tgz -------------------------------------------------------------------------------- /charts/botfront-project-1.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-project-1.0.0.tgz -------------------------------------------------------------------------------- /charts/botfront-project-1.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-project-1.0.3.tgz -------------------------------------------------------------------------------- /botfront/charts/mongo-express-1.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/botfront/charts/mongo-express-1.0.1.tgz -------------------------------------------------------------------------------- /charts/botfront-project-1.0.0-beta0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botfront/botfront-helm/HEAD/charts/botfront-project-1.0.0-beta0.tgz -------------------------------------------------------------------------------- /botfront/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "v1.0.3" 3 | description: A Helm chart for Botfront 4 | name: botfront 5 | version: 1.0.3 -------------------------------------------------------------------------------- /botfront-project/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "v1.0.3" 3 | description: A Helm chart for Botfront projects 4 | name: botfront-project 5 | version: 1.0.3 6 | -------------------------------------------------------------------------------- /helmer.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | helm package botfront-project --destination charts 3 | helm package botfront --destination charts 4 | helm repo index --url https://botfront.github.io/botfront-helm . 5 | -------------------------------------------------------------------------------- /botfront/NOTES.txt: -------------------------------------------------------------------------------- 1 | The Helm chart was succesfully installed on your cluster. 2 | 3 | Botfront is available at the following URL: 4 | http{{ if .Values.ingress.tls }}s{{ end }}://{{ .Values.ingress.host }}{{ .Values.ingress.path }} 5 | -------------------------------------------------------------------------------- /botfront-project/templates/secrets.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: "v1" 2 | kind: "Secret" 3 | metadata: 4 | name: {{ .Release.Name }}-rasa-secrets 5 | type: "Opaque" 6 | data: 7 | {{- if .Values.botfront.graphQLKey }} 8 | API_KEY: {{ .Values.botfront.graphQLKey | b64enc | quote }} 9 | {{- end }} -------------------------------------------------------------------------------- /botfront-project/templates/configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ .Release.Name }}-rasa-config 5 | data: 6 | BF_PROJECT_ID: {{ .Values.projectId }} 7 | BF_URL: {{ .Values.botfront.graphQLEndpoint }} 8 | {{- if .Values.duckling.url }} 9 | RASA_DUCKLING_HTTP_URL: {{ .Values.duckling.url }} 10 | {{- end }} 11 | -------------------------------------------------------------------------------- /botfront/templates/botfront-app-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | labels: 5 | app: {{ .Release.Name }}-{{ .Values.botfront.app.appName }} 6 | name: {{ .Release.Name }}-app-service 7 | spec: 8 | ports: 9 | - port: 80 10 | protocol: TCP 11 | targetPort: 3000 12 | selector: 13 | app: {{ .Release.Name }}-{{ .Values.botfront.app.appName }} 14 | type: NodePort 15 | -------------------------------------------------------------------------------- /botfront/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | -------------------------------------------------------------------------------- /botfront-project/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | -------------------------------------------------------------------------------- /botfront/templates/botfront-duckling-service.yaml: -------------------------------------------------------------------------------- 1 | {{ if .Values.duckling.enabled }} 2 | apiVersion: v1 3 | kind: Service 4 | metadata: 5 | labels: 6 | app: {{ .Release.Name }}-{{ .Values.duckling.name }} 7 | name: {{ .Release.Name }}-duckling-service 8 | spec: 9 | ports: 10 | - port: 80 11 | protocol: TCP 12 | targetPort: 8000 13 | selector: 14 | app: {{ .Release.Name }}-{{ .Values.duckling.name }} 15 | type: NodePort 16 | {{ end }} 17 | -------------------------------------------------------------------------------- /botfront/requirements.yaml: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - name: mongodb 3 | repository: https://kubernetes-charts.storage.googleapis.com/ 4 | version: 7.8.6 5 | condition: mongodb.enabled 6 | - name: mongo-express 7 | repository: https://cowboysysop.github.io/charts/ 8 | version: 1.0.1 9 | condition: mongo-express.enabled 10 | - name: redis 11 | repository: https://charts.bitnami.com/bitnami/ 12 | version: 10.5.14 13 | condition: redis.enabled -------------------------------------------------------------------------------- /botfront-project/templates/persistentVolumeClaim.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.persistenceClaim.enabled -}} 2 | apiVersion: v1 3 | kind: PersistentVolumeClaim 4 | metadata: 5 | {{- if ne .Release.Namespace "default" }} 6 | namespace: {{ .Release.Namespace }} 7 | {{- end }} 8 | name: {{ .Release.Name }}-rasa-volume-claim 9 | spec: 10 | accessModes: 11 | - ReadWriteOnce 12 | resources: 13 | requests: 14 | storage: {{ .Values.persistenceClaim.storage }} 15 | {{- end -}} -------------------------------------------------------------------------------- /botfront/requirements.lock: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - name: mongodb 3 | repository: https://kubernetes-charts.storage.googleapis.com/ 4 | version: 7.8.6 5 | - name: mongo-express 6 | repository: https://cowboysysop.github.io/charts/ 7 | version: 1.0.1 8 | - name: redis 9 | repository: https://charts.bitnami.com/bitnami/ 10 | version: 10.5.14 11 | digest: sha256:ce1d452b7b1f89b308770f0e2e4731384e05dc4c42cb4a6cf6d0ee34de70fe2f 12 | generated: "2020-04-03T18:54:56.110713-04:00" 13 | -------------------------------------------------------------------------------- /botfront/templates/botfront-api-service.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.botfront.webhooks.enabled -}} 2 | 3 | apiVersion: v1 4 | kind: Service 5 | metadata: 6 | labels: 7 | app: {{ .Release.Name }}-{{ .Values.botfront.webhooks.appName }} 8 | name: {{ .Release.Name }}-webhooks-service 9 | spec: 10 | ports: 11 | - name: http 12 | port: 80 13 | protocol: TCP 14 | targetPort: 8080 15 | selector: 16 | app: {{ .Release.Name }}-{{ .Values.botfront.webhooks.appName }} 17 | type: NodePort 18 | {{ end }} 19 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 0.5 4 | 5 | New `environments` section containing `resources`, `debug`, `host`, `tlsSecretName`, `path` 6 | 7 | ## 0.4 8 | 9 | ### Added 10 | - Deployments rollouts when configmaps or secrets change 11 | - GraphQL API protected with key 12 | 13 | ### Fixed 14 | - `OPLOG_URL` is now only added as an environment variable if corresponding username and passwords are set in the db 15 | 16 | ### Changed 17 | - `mongodb.mongodbHost` and `mongodb.mongodbPort` have been replaced with `mongodb.mongodbHostsAndPorts`. `mongodb.mongodbHostsAndPorts` supports a comma separated list for clusters 18 | - `ducklingUrl` is replaced with `duckling.url` -------------------------------------------------------------------------------- /botfront/templates/botfront-app-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: "v1" 2 | kind: "ConfigMap" 3 | metadata: 4 | name: {{ .Release.Name }}-app-config 5 | data: 6 | {{- if .Values.botfront.initialProjectId }} 7 | BF_PROJECT_ID: {{ .Values.botfront.initialProjectId }} 8 | {{- end }} 9 | ORCHESTRATOR: {{ .Values.botfront.orchestrator }} 10 | GCP_PROJECT_ID: {{ .Values.botfront.initialProjectId }} 11 | ROOT_URL: {{ .Values.botfront.app.protocol }}://{{ .Values.botfront.app.host }} 12 | APPLICATION_APP_LOG_TRANSPORT: {{ .Values.botfront.logs.transport }} 13 | APPLICATION_LOGGER_NAME: {{ .Values.botfront.logs.loggerName }} 14 | APPLICATION_APP_LOG_LEVEL: {{ .Values.botfront.logs.level }} 15 | AUDIT_LOG_TRANSPORT: {{ .Values.botfront.audit.transport }} 16 | AUDIT_LOGGER_NAME: {{ .Values.botfront.audit.loggerName }} 17 | -------------------------------------------------------------------------------- /botfront/templates/botfront-api-configmap.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.botfront.webhooks.enabled -}} 2 | apiVersion: "v1" 3 | kind: "ConfigMap" 4 | metadata: 5 | name: {{ .Release.Name }}-api-config 6 | data: 7 | PORT: "8080" 8 | APPLICATION_APP_LOG_TRANSPORT: {{ .Values.botfront.logs.transport | quote }} 9 | APPLICATION_APP_LOG_LEVEL: {{ .Values.botfront.logs.level | quote }} 10 | {{if .Values.kubernetesApi.baseUrl }} 11 | K8S_BASE_URL: {{ .Values.kubernetesApi.baseUrl | quote }} 12 | {{- end }} 13 | {{if .Values.botfront.cloud }} 14 | {{if .Values.botfront.cloud.gcpProjectId }} 15 | GCP_PROJECT_ID: {{ .Values.botfront.cloud.gcpProjectId | quote }} 16 | {{- end }} 17 | {{if .Values.botfront.cloud.deploymentEnvironment }} 18 | CLUSTER_ENVIRONMENT: {{ .Values.botfront.cloud.deploymentEnvironment | quote }} 19 | {{- end }} 20 | {{- end }} 21 | {{ end }} 22 | -------------------------------------------------------------------------------- /botfront/templates/botfront-duckling-deployment.yaml: -------------------------------------------------------------------------------- 1 | {{ if .Values.duckling.enabled}} 2 | apiVersion: apps/v1 3 | kind: Deployment 4 | metadata: 5 | labels: 6 | app: {{ .Release.Name }}-{{ .Values.duckling.name }} 7 | name: {{ .Release.Name }}-duckling-deployment 8 | spec: 9 | selector: 10 | matchLabels: 11 | app: {{ .Release.Name }}-{{ .Values.duckling.name }} 12 | template: 13 | metadata: 14 | labels: 15 | app: {{ .Release.Name }}-{{ .Values.duckling.name }} 16 | spec: 17 | containers: 18 | - image: {{ .Values.duckling.image }} 19 | imagePullPolicy: IfNotPresent 20 | name: {{ .Release.Name }}-duckling 21 | ports: 22 | - containerPort: 8000 23 | protocol: TCP 24 | resources: 25 | {{- with .Values.duckling.resources }} 26 | {{- toYaml . | nindent 10 }} 27 | {{- end }} 28 | livenessProbe: 29 | httpGet: 30 | path: / 31 | port: 8000 32 | restartPolicy: Always 33 | {{ end }} 34 | -------------------------------------------------------------------------------- /botfront/templates/botfront-app-ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.botfront.ingress.enabled -}} 2 | apiVersion: extensions/v1beta1 3 | kind: Ingress 4 | metadata: 5 | name: {{ .Release.Name }}-app-ingress 6 | annotations: 7 | {{if .Values.botfront.ingress.nginx.enabled -}} 8 | kubernetes.io/ingress.class: nginx 9 | {{- with .Values.botfront.ingress.nginx.annotations -}} 10 | {{- toYaml . | nindent 4 }} 11 | {{- end }} 12 | {{- else -}} 13 | {{with .Values.botfront.ingress.annotations }} 14 | {{- toYaml . | nindent 4 }} 15 | {{ end }} 16 | {{- end }} 17 | spec: 18 | rules: 19 | - host: {{ .Values.botfront.app.host }} 20 | http: 21 | paths: 22 | - backend: 23 | serviceName: {{ .Release.Name }}-app-service 24 | servicePort: 80 25 | path: / 26 | {{ if .Values.botfront.ingress.tlsSecretName -}} 27 | tls: 28 | - hosts: 29 | - {{ .Values.botfront.ingress.tlsHost | quote }} 30 | secretName: {{ .Values.botfront.ingress.tlsSecretName }} 31 | {{- end -}} 32 | {{- end -}} 33 | -------------------------------------------------------------------------------- /loadtesting/socket-load.yaml: -------------------------------------------------------------------------------- 1 | config: 2 | target: "http://rasa.botfront.local" 3 | socketio: 4 | path: "/socket.io" 5 | transports: ["websocket"] 6 | phases: 7 | - duration: 10 8 | arrivalCount: 1 9 | # variables: 10 | # greeting: ["hello", "goedemorgen", "добрый день", "guten tag", "bonjour", "hola"] 11 | # processor: "./functions.js" 12 | 13 | scenarios: 14 | - name: "A user asking 10 questions" 15 | engine: "socketio" 16 | flow: 17 | - emit: 18 | channel: "user_uttered" 19 | data: 20 | message: /chitchat.greet 21 | customData: 22 | language": fr 23 | response: 24 | channel: bot_uttered 25 | text: "1" 26 | # - loop: 27 | # - emit: 28 | # channel: "user_uttered" 29 | # data: 30 | # message: "/get_started" 31 | # customData: {"language": "fr"} 32 | # response: 33 | # channel: bot_uttered 34 | # data: 35 | # text: Welcome2 36 | # - think: 5 37 | # count: 20 38 | -------------------------------------------------------------------------------- /botfront/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* vim: set filetype=mustache: */}} 2 | {{/* 3 | Expand the name of the chart. 4 | */}} 5 | {{- define "botfront.name" -}} 6 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} 7 | {{- end -}} 8 | 9 | {{/* 10 | Create a default fully qualified app name. 11 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 12 | If release name contains chart name it will be used as a full name. 13 | */}} 14 | {{- define "botfront.fullname" -}} 15 | {{- if .Values.fullnameOverride -}} 16 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} 17 | {{- else -}} 18 | {{- $name := default .Chart.Name .Values.nameOverride -}} 19 | {{- if contains $name .Release.Name -}} 20 | {{- .Release.Name | trunc 63 | trimSuffix "-" -}} 21 | {{- else -}} 22 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} 23 | {{- end -}} 24 | {{- end -}} 25 | {{- end -}} 26 | 27 | {{/* 28 | Create chart name and version as used by the chart label. 29 | */}} 30 | {{- define "botfront.chart" -}} 31 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} 32 | {{- end -}} 33 | -------------------------------------------------------------------------------- /botfront-project/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* vim: set filetype=mustache: */}} 2 | {{/* 3 | Expand the name of the chart. 4 | */}} 5 | {{- define "botfront-project.name" -}} 6 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} 7 | {{- end -}} 8 | 9 | {{/* 10 | Create a default fully qualified app name. 11 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 12 | If release name contains chart name it will be used as a full name. 13 | */}} 14 | {{- define "botfront-project.fullname" -}} 15 | {{- if .Values.fullnameOverride -}} 16 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} 17 | {{- else -}} 18 | {{- $name := default .Chart.Name .Values.nameOverride -}} 19 | {{- if contains $name .Release.Name -}} 20 | {{- .Release.Name | trunc 63 | trimSuffix "-" -}} 21 | {{- else -}} 22 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} 23 | {{- end -}} 24 | {{- end -}} 25 | {{- end -}} 26 | 27 | {{/* 28 | Create chart name and version as used by the chart label. 29 | */}} 30 | {{- define "botfront-project.chart" -}} 31 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} 32 | {{- end -}} 33 | -------------------------------------------------------------------------------- /botfront-project/templates/service.yaml: -------------------------------------------------------------------------------- 1 | {{- if $.Values.service.enabled -}} 2 | apiVersion: v1 3 | kind: Service 4 | metadata: 5 | {{- if ne .Release.Namespace "default" }} 6 | namespace: {{ .Release.Namespace }} 7 | {{- end }} 8 | labels: 9 | app: {{ .Release.Name }}-development-{{ .Values.appName }} 10 | name: {{ .Release.Name }}-rasa-service 11 | spec: 12 | ports: 13 | - name: http 14 | port: {{ .Values.service.port }} 15 | protocol: TCP 16 | targetPort: 5005 17 | selector: 18 | app: {{ .Release.Name }}-development-{{ .Values.appName }} 19 | type: {{ .Values.service.type }} 20 | {{ range $env, $val := $.Values.environments }} 21 | --- 22 | apiVersion: v1 23 | kind: Service 24 | metadata: 25 | labels: 26 | app: {{ $.Release.Name }}-{{ if ne $env "default"}}{{ $env }}-{{ end }}{{ $.Values.appName }} 27 | name: {{ $.Release.Name }}-{{ if ne $env "default"}}{{ $env }}-{{ end }}rasa-service 28 | spec: 29 | ports: 30 | - name: http 31 | port: {{ $.Values.service.port }} 32 | protocol: TCP 33 | targetPort: 5005 34 | selector: 35 | app: {{ $.Release.Name }}-{{ if ne $env "default"}}{{ $env }}-{{ end }}{{ $.Values.appName }} 36 | type: {{ $.Values.service.type }} 37 | {{- end }} 38 | {{- end }} -------------------------------------------------------------------------------- /botfront/templates/botfront-secrets.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: "v1" 2 | kind: "Secret" 3 | metadata: 4 | name: {{ .Release.Name }}-secrets 5 | type: "Opaque" 6 | data: 7 | {{- if .Values.botfront.smtpUri }} 8 | MAIL_URL: {{ .Values.botfront.smtpUri | b64enc | quote }} 9 | {{- end }} 10 | MONGO_URL: {{ printf "%s://%s:%s@%s/%s?%s" .Values.mongodb.mongodbPrefix .Values.mongodb.mongodbUsername .Values.mongodb.mongodbPassword .Values.mongodb.mongodbHostsAndPorts .Values.mongodb.mongodbDatabase .Values.mongodb.mongodbQueryString | b64enc | quote }} 11 | {{- if and .Values.mongodb.mongodbOplogUsername .Values.mongodb.mongodbOplogPassword }} 12 | OPLOG_URL: {{ printf "%s://%s:%s@%s/%s?%s" .Values.mongodb.mongodbPrefix .Values.mongodb.mongodbOplogUsername .Values.mongodb.mongodbOplogPassword .Values.mongodb.mongodbHostsAndPorts "local" .Values.mongodb.mongodbQueryString | b64enc | quote }} 13 | {{- end }} 14 | {{- if .Values.botfront.app.graphQLKey }} 15 | API_KEY: {{ .Values.botfront.app.graphQLKey | toString |b64enc | quote }} 16 | {{- end }} 17 | {{if .Values.kubernetesApi.token }} 18 | K8S_API_TOKEN: {{ .Values.kubernetesApi.token | toString | b64enc | quote }} 19 | {{- end }} 20 | {{if .Values.botfront.licenseKey }} 21 | LICENSE_KEY: {{ .Values.botfront.licenseKey | toString | b64enc | quote }} 22 | {{- end }} -------------------------------------------------------------------------------- /config.yaml: -------------------------------------------------------------------------------- 1 | appName: rasa-project 2 | # Botfront project id 3 | projectId: Hx8CFdNpfY6HpEpj2 4 | # Botfront GraphQL URL 5 | graphQLEndpoint: http://botfront-app-service.botfront/graphql 6 | # Launch Rasa with --debug flag 7 | debug: true 8 | 9 | rasa: 10 | image: docker.io/botfront/rasa-for-botfront:v1.9.0-bf.7 11 | initialProbeDelay: 30 12 | 13 | service: 14 | enabled: true 15 | type: NodePort 16 | port: 80 17 | 18 | persistenceClaim: 19 | enabled: true 20 | storage: 2Gi 21 | 22 | ingress: 23 | enabled: true 24 | nginx: 25 | # Set to true if your cluster uses the nginx-ingress controller 26 | enabled: true 27 | # Those are default values for nginx ingress annotations. Note that two other are present: 28 | # - kubernetes.io/ingress.class: nginx 29 | # - nginx.org/websocket-services: 30 | annotations: 31 | nginx.ingress.kubernetes.io/proxy-body-size: 32m 32 | # Timeouts should be long enough to support long trainings 33 | nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" 34 | nginx.ingress.kubernetes.io/proxy-send-timeout: "3600" 35 | nginx.ingress.kubernetes.io/rewrite-target: / 36 | # Set to "true" if you want to auto redirect to https 37 | nginx.ingress.kubernetes.io/ssl-redirect: "false" 38 | 39 | # If nginx.enabled is false, the following annotations will be added to the Ingress. This is ignored it nginx.enabled is true. 40 | annotations: {} 41 | 42 | host: 43 | tlsSecretName: 44 | 45 | resources: 46 | limits: 47 | cpu: "2" 48 | memory: 2Gi 49 | requests: 50 | cpu: 250m 51 | memory: 512Mi 52 | -------------------------------------------------------------------------------- /botfront-project/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | The Helm chart was succesfully installed on your cluster. 2 | Please execute the following instructions to complete your project's setup. 3 | 4 | 1. Your Rasa instances are available at the following URLs: 5 | {{ range $env, $val := $.Values.environments }} 6 | - {{ if ne $env "default"}}{{ $env }}: {{ end }}http{{ if $val.tlsSecretName }}s{{ end }}://{{ $val.host }}{{ $val.path }} 7 | {{- end }} 8 | 9 | 2. Set the following in your Settings > Endpoints: 10 | nlg: 11 | type: 'rasa_addons.core.nlg.GraphQLNaturalLanguageGenerator' 12 | url: '{{ .Values.botfront.graphQLEndpoint }}' 13 | action_endpoint: 14 | url: 'http://your.actions.server/webhook' # Change that if you have actions 15 | tracker_store: 16 | store_type: 'rasa_addons.core.tracker_stores.botfront.BotfrontTrackerStore' 17 | url: '{{ .Values.botfront.graphQLEndpoint }}' 18 | 19 | 3a. If using Rasa Webchat Open Source, set the following credentials: 20 | 21 | rasa_addons.core.channels.webchat.WebchatInput: 22 | session_persistence: true 23 | base_url: http{{ if .Values.ingress.tls }}s{{ end }}://{{ .Values.ingress.host }}{{ .Values.ingress.path }} 24 | socket_path: '/socket.io/' 25 | 26 | 3b. If using Rasa Webchat Pro, set the following credentials: 27 | 28 | rasa_addons.core.channels.webchat_plus.WebchatPlusInput: 29 | session_persistence: true 30 | base_url: http{{ if .Values.ingress.tls }}s{{ end }}://{{ .Values.ingress.host }}{{ .Values.ingress.path }} 31 | socket_path: '/socket.io/' 32 | 33 | 4. Set the Rasa instance internal URL in Settings > Instance: 34 | {{ range $env, $val := $.Values.environments }} 35 | - {{ if ne $env "default"}}{{ $env }} :{{ end }}http://{{ $.Release.Name }}-{{ if ne $env "default"}}{{ $env }}-{{ end }}rasa-service.{{ $.Release.Namespace }} 36 | {{- end }} 37 | -------------------------------------------------------------------------------- /loadtesting/k6-rest.js: -------------------------------------------------------------------------------- 1 | import http from 'k6/http'; 2 | import { check, sleep } from 'k6'; 3 | export let options = { 4 | stages: [ 5 | { duration: '10s', target: 300 }, // simulate ramp-up of traffic from 1 to 100 users over 5 minutes. 6 | { duration: '10s', target: 300 }, 7 | { duration: '10s', target: 0 }, // ramp-down to 0 users 8 | ], 9 | // thresholds: { 10 | // 'http_req_duration': ['p(99)<1500'], // 99% of requests must complete below 1.5s 11 | // 'logged in successfully': ['p(99)<1500'], // 99% of requests must complete below 1.5s 12 | // } 13 | }; 14 | 15 | function makeid(length=50) { 16 | var result = ''; 17 | var characters = 18 | 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; 19 | var charactersLength = characters.length; 20 | for (var i = 0; i < length; i++) { 21 | result += characters.charAt( 22 | Math.floor(Math.random() * charactersLength) 23 | ); 24 | } 25 | return result; 26 | } 27 | 28 | export default function () { 29 | const uid = makeid() 30 | var url = 'http://rasa.botfront.local/webhooks/rest/webhook'; 31 | var payload = JSON.stringify({ 32 | sender: uid, 33 | message: 'hello', 34 | }); 35 | 36 | var params = { 37 | headers: { 38 | 'Content-Type': 'application/json', 39 | }, 40 | }; 41 | for (var id = 1; id <= 9; id++) { 42 | let res = http.post(url, payload, params); 43 | // console.log(JSON.stringify(res)) 44 | check(res, { 45 | 'response ok': (r) => { 46 | return JSON.parse(r.body)[0].text === `${id}`; 47 | }, 48 | // "response ok": r => console.log(r.body) 49 | }); 50 | sleep(1); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /botfront-project/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | 2 | {{ if .Values.ingress.enabled -}} 3 | {{ range $env, $val := $.Values.environments }} 4 | --- 5 | apiVersion: extensions/v1beta1 6 | kind: Ingress 7 | metadata: 8 | labels: 9 | app: {{ $.Release.Name }}-{{ if ne $env "default"}}{{ $env }}-{{ end }}{{ $.Values.appName }} 10 | name: {{ $.Release.Name }}-{{ if ne $env "default"}}{{ $env }}-{{ end }}rasa-ingress 11 | annotations: 12 | {{- if $.Values.ingress.nginx.enabled}} 13 | {{- if $.Values.ingress.nginx.enableSessionAffinity}} 14 | nginx.ingress.kubernetes.io/affinity: "cookie" 15 | {{- end}} 16 | kubernetes.io/ingress.class: nginx 17 | {{- if $.Values.ingress.nginx.enableSockets}} 18 | nginx.org/websocket-services: {{ $.Release.Name }}-{{ if ne $env "default"}}{{ $env }}-{{ end }}rasa-service 19 | {{- end}} 20 | {{- with $.Values.ingress.nginx.annotations }} 21 | {{- toYaml . | nindent 4 }} 22 | {{- end }} 23 | {{- else -}} 24 | {{ with $.Values.ingress.annotations }} 25 | {{- toYaml . | nindent 4 }} 26 | {{- end -}} 27 | {{- end}} 28 | spec: 29 | rules: 30 | - host: {{ $val.host }} 31 | http: 32 | paths: 33 | - backend: 34 | serviceName: {{ $.Release.Name }}-{{ if ne $env "default"}}{{ $env }}-{{ end }}rasa-service 35 | servicePort: 80 36 | path: {{ if $val.path }}{{ $val.path }}{{ else }}/{{ end }} 37 | 38 | {{ if eq $env "development"}} 39 | - host: {{ $val.host }} 40 | http: 41 | paths: 42 | - backend: 43 | serviceName: {{ $.Release.Name }}-{{ if ne $env "default"}}{{ $env }}-{{ end }}rasa-service 44 | servicePort: 80 45 | path: {{ if $val.path }}{{ $val.path }}{{ else }}/{{ end }} 46 | {{- end}} 47 | 48 | {{ if $val.tlsSecretName -}} 49 | tls: 50 | - hosts: 51 | - {{ $val.host }} 52 | secretName: {{ $val.tlsSecretName }} 53 | {{- end -}} 54 | {{- end }} 55 | {{- end }} -------------------------------------------------------------------------------- /botfront/templates/botfront-api-deployment.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.botfront.webhooks.enabled -}} 2 | apiVersion: apps/v1 3 | kind: Deployment 4 | metadata: 5 | labels: 6 | app: {{ .Release.Name }}-{{ .Values.botfront.webhooks.appName }} 7 | name: {{ .Release.Name }}-webhooks-deployment 8 | spec: 9 | selector: 10 | matchLabels: 11 | app: {{ .Release.Name }}-{{ .Values.botfront.webhooks.appName }} 12 | template: 13 | metadata: 14 | annotations: 15 | # Force rollout restart when configmap or secret change 16 | checksum/config: {{ include (print $.Template.BasePath "/botfront-secrets.yaml") . | sha256sum }}{{ include (print $.Template.BasePath "/botfront-api-configmap.yaml") . | sha256sum }} 17 | labels: 18 | app: {{ .Release.Name }}-{{ .Values.botfront.webhooks.appName }} 19 | spec: 20 | containers: 21 | - env: 22 | - name: MONGO_URL 23 | valueFrom: 24 | secretKeyRef: 25 | key: MONGO_URL 26 | name: {{ .Release.Name }}-secrets 27 | {{if .Values.kubernetesApi.token }} 28 | - name: K8S_API_TOKEN 29 | valueFrom: 30 | secretKeyRef: 31 | key: K8S_API_TOKEN 32 | name: {{ .Release.Name }}-secrets 33 | {{- end }} 34 | envFrom: 35 | - configMapRef: 36 | name: {{ .Release.Name }}-api-config 37 | optional: false 38 | image: {{ .Values.botfront.webhooks.image.name }}:{{ .Values.botfront.webhooks.version }} 39 | {{- if .Values.botfront.webhooks.imagePullPolicy }} 40 | imagePullPolicy: {{ .Values.botfront.webhooks.imagePullPolicy }} 41 | {{- end }} 42 | name: {{ .Release.Name }}-api 43 | ports: 44 | - containerPort: 8080 45 | protocol: TCP 46 | resources: 47 | {{- with .Values.botfront.webhooks.resources }} 48 | {{- toYaml . | nindent 10 }} 49 | {{- end }} 50 | restartPolicy: Always 51 | {{if .Values.botfront.imagePullSecret }} 52 | imagePullSecrets: 53 | - name: {{ .Values.botfront.imagePullSecret }} 54 | {{ end }} 55 | {{ end }} 56 | 57 | 58 | -------------------------------------------------------------------------------- /botfront-project/values.yaml: -------------------------------------------------------------------------------- 1 | # Default values for botfront-project. 2 | # This is a YAML-formatted file. 3 | # Declare variables to be passed into your templates. 4 | 5 | # 6 | appName: rasa-project 7 | # Botfront project id 8 | projectId: bf 9 | # Launch Rasa with --debug flag 10 | debug: true 11 | 12 | rasa: 13 | image: botfront/rasa-for-botfront:v2.2.5-bf.5 14 | authToken: 15 | livenessProbe: 16 | initialProbeDelay: 30 17 | periodSeconds: 10 18 | failureThreshold: 10 19 | securityContext: 20 | runAsUser: 0 21 | runAsGroup: 0 22 | 23 | botfront: 24 | graphQLEndpoint: http://botfront-app-service.botfront/graphql 25 | graphQLKey: 26 | 27 | duckling: 28 | url: http://botfront-duckling-service.botfront 29 | 30 | service: 31 | enabled: true 32 | type: NodePort 33 | port: 80 34 | 35 | persistenceClaim: 36 | enabled: true 37 | storage: 1Gi 38 | 39 | ingress: 40 | enabled: true 41 | nginx: 42 | # Set to true if your cluster uses the nginx-ingress controller 43 | enabled: true 44 | enableSessionAffinity: true 45 | enableSockets: true 46 | # Those are default values for nginx ingress annotations. Note that two other are present: 47 | # - kubernetes.io/ingress.class: nginx 48 | # - nginx.org/websocket-services: 49 | annotations: 50 | nginx.ingress.kubernetes.io/proxy-body-size: 32m 51 | # Timeouts should be long enough to support long trainings 52 | nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" 53 | nginx.ingress.kubernetes.io/proxy-send-timeout: "3600" 54 | nginx.ingress.kubernetes.io/rewrite-target: / 55 | # Set to "true" if you want to auto redirect to https 56 | nginx.ingress.kubernetes.io/ssl-redirect: "false" 57 | 58 | # If nginx.enabled is false, the following annotations will be added to the Ingress. This is ignored it nginx.enabled is true. 59 | annotations: {} 60 | 61 | environments: 62 | development: 63 | debug: true 64 | host: rasa.botfront.local 65 | path: / 66 | tlsSecretName: 67 | envVars: 68 | resources: 69 | limits: 70 | cpu: "2" 71 | memory: 2Gi 72 | requests: 73 | cpu: 250m 74 | memory: 512Mi 75 | -------------------------------------------------------------------------------- /botfront/templates/botfront-role.yaml: -------------------------------------------------------------------------------- 1 | # apiVersion: v1 2 | # kind: ServiceAccount 3 | # metadata: 4 | # labels: 5 | # app: {{ .Release.Name }}-{{ .Values.botfront.appName }} 6 | # name: {{ .Release.Name }}-api-service-account 7 | # secrets: 8 | # - {{ .Release.Name }}-service-account 9 | 10 | 11 | # # resource "kubernetes_service_account" "k8s-api-token" { 12 | # # metadata { 13 | # # namespace = "${var.botfront_namespace}" 14 | # # name = "api-service-account" 15 | # # } 16 | # # secret { 17 | # # name = "api-service-account-secret" 18 | # # } 19 | # # } 20 | 21 | # --- 22 | # apiVersion: v1 23 | # kind: Secret 24 | # type: kubernetes.io/service-account-token 25 | # metadata: 26 | # labels: 27 | # app: {{ .Release.Name }}-{{ .Values.botfront.appName }} 28 | # name: {{ .Release.Name }}-api-secret 29 | # annonations: 30 | # kubernetes.io/service-account.name: {{ .Release.Name }}-api-service-account 31 | # # resource "kubernetes_secret" "k8s-api-token" { 32 | # # metadata { 33 | # # namespace = "${var.botfront_namespace}" 34 | # # name = "${kubernetes_service_account.k8s-api-token.metadata.0.name}-secret" 35 | # # annotations = { 36 | # # "kubernetes.io/service-account.name" = "${kubernetes_service_account.k8s-api-token.metadata.0.name}" 37 | # # } 38 | # # } 39 | # # type = "kubernetes.io/service-account-token" 40 | # # } 41 | # --- 42 | 43 | # # data "kubernetes_secret" "k8s-api-token-data" { 44 | # # depends_on = ["kubernetes_secret.k8s-api-token"] 45 | # # metadata { 46 | # # namespace = "${var.botfront_namespace}" 47 | # # name = "${kubernetes_secret.k8s-api-token.metadata.0.name}" 48 | # # } 49 | # # } 50 | 51 | # resource "kubernetes_cluster_role" "api-role" { 52 | # metadata { 53 | # name = "api-role" 54 | # } 55 | 56 | # rule { 57 | # api_groups = ["batch", "apps"] 58 | # resources = ["jobs", "deployments"] 59 | # verbs = ["create", "patch"] 60 | # } 61 | # } 62 | 63 | # resource "kubernetes_cluster_role_binding" "api-role-binding" { 64 | # metadata { 65 | # name = "api-role-binding" 66 | # } 67 | # role_ref { 68 | # api_group = "rbac.authorization.k8s.io" 69 | # kind = "ClusterRole" 70 | # name = "api-role" 71 | # } 72 | 73 | # subject { 74 | # api_group = "" 75 | # kind = "ServiceAccount" 76 | # name = "${kubernetes_service_account.k8s-api-token.metadata.0.name}" 77 | # namespace = "botfront" 78 | # } 79 | 80 | # depends_on = ["kubernetes_service_account.k8s-api-token", "kubernetes_cluster_role.api-role"] 81 | # } -------------------------------------------------------------------------------- /botfront-project/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | {{ range $env, $val := $.Values.environments }} 2 | --- 3 | apiVersion: apps/v1 4 | kind: Deployment 5 | metadata: 6 | labels: 7 | app: {{ $.Release.Name }}-{{ if ne $env "default"}}{{ $env }}-{{ end }}{{ $.Values.appName }} 8 | name: {{ $.Release.Name }}-{{ if ne $env "default"}}{{ $env }}-{{ end }}rasa-deployment 9 | spec: 10 | selector: 11 | matchLabels: 12 | app: {{ $.Release.Name }}-{{ if ne $env "default"}}{{ $env }}-{{ end }}{{ $.Values.appName }} 13 | template: 14 | metadata: 15 | labels: 16 | app: {{ $.Release.Name }}-{{ if ne $env "default"}}{{ $env }}-{{ end }}{{ $.Values.appName }} 17 | spec: 18 | securityContext: 19 | runAsUser: {{ $.Values.rasa.securityContext.runAsUser }} 20 | runAsGroup: {{ $.Values.rasa.securityContext.runAsGroup }} 21 | containers: 22 | - command: 23 | - rasa 24 | - run 25 | - --enable-api 26 | {{ if $val.debug -}} 27 | - --debug 28 | {{ end -}} 29 | {{- if $.Values.rasa.authToken }} 30 | - -t 31 | - {{ $.Values.rasa.authToken }} 32 | {{- end }} 33 | env: 34 | - name: BOTFRONT_ENV 35 | value: {{ $env }} 36 | {{- if $.Values.botfront.graphQLKey }} 37 | - name: API_KEY 38 | valueFrom: 39 | secretKeyRef: 40 | key: API_KEY 41 | name: {{ $.Release.Name }}-rasa-secrets 42 | {{- end }} 43 | envFrom: 44 | - configMapRef: 45 | name: {{ $.Release.Name }}-rasa-config 46 | optional: false 47 | image: {{ $.Values.rasa.image }} 48 | imagePullPolicy: IfNotPresent 49 | name: rasa 50 | ports: 51 | - containerPort: 5005 52 | protocol: TCP 53 | livenessProbe: 54 | httpGet: 55 | path: "/" 56 | port: 5005 57 | initialDelaySeconds: {{ $.Values.rasa.initialProbeDelay }} 58 | failureThreshold: 10 59 | resources: 60 | {{- with $val.resources }} 61 | {{- toYaml . | nindent 12 }} 62 | {{- end }} 63 | {{- if $.Values.persistenceClaim.enabled }} 64 | volumeMounts: 65 | - mountPath: "/app/models" 66 | name: {{ $.Release.Name }}-rasa-volume 67 | volumes: 68 | - name: {{ $.Release.Name }}-rasa-volume 69 | persistentVolumeClaim: 70 | claimName: {{ $.Release.Name }}-rasa-volume-claim 71 | {{- end -}} 72 | {{if $.Values.rasa.imagePullSecret }} 73 | imagePullSecrets: 74 | - name: {{ $.Values.rasa.imagePullSecret }} 75 | {{end }} 76 | {{- end -}} 77 | -------------------------------------------------------------------------------- /botfront/templates/botfront-app-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | labels: 5 | app: {{ .Release.Name }}-{{ .Values.botfront.app.appName }} 6 | name: {{ .Release.Name }}-app-deployment 7 | spec: 8 | selector: 9 | matchLabels: 10 | app: {{ .Release.Name }}-{{ .Values.botfront.app.appName }} 11 | template: 12 | metadata: 13 | annotations: 14 | # Force rollout restart when configmap or secret change 15 | checksum/config: {{ include (print $.Template.BasePath "/botfront-secrets.yaml") . | sha256sum }}{{ include (print $.Template.BasePath "/botfront-app-configmap.yaml") . | sha256sum }} 16 | labels: 17 | app: {{ .Release.Name }}-{{ .Values.botfront.app.appName }} 18 | spec: 19 | containers: 20 | - env: 21 | - name: MONGO_URL 22 | valueFrom: 23 | secretKeyRef: 24 | key: MONGO_URL 25 | name: {{ .Release.Name }}-secrets 26 | {{- if .Values.botfront.smtpUri }} 27 | - name: MAIL_URL 28 | valueFrom: 29 | secretKeyRef: 30 | key: MAIL_URL 31 | name: {{ .Release.Name }}-secrets 32 | {{- end }} 33 | {{- if and .Values.mongodb.mongodbOplogUsername .Values.mongodb.mongodbOplogPassword }} 34 | - name: OPLOG_URL 35 | valueFrom: 36 | secretKeyRef: 37 | key: OPLOG_URL 38 | name: {{ .Release.Name }}-secrets 39 | {{- end }} 40 | {{- if .Values.botfront.app.graphQLKey }} 41 | - name: API_KEY 42 | valueFrom: 43 | secretKeyRef: 44 | key: API_KEY 45 | name: {{ .Release.Name }}-secrets 46 | {{- end }} 47 | {{- if .Values.botfront.licenseKey }} 48 | - name: LICENSE_KEY 49 | valueFrom: 50 | secretKeyRef: 51 | key: LICENSE_KEY 52 | name: {{ .Release.Name }}-secrets 53 | {{- end }} 54 | - name: PORT 55 | value: "3000" 56 | envFrom: 57 | - configMapRef: 58 | name: {{ .Release.Name }}-app-config 59 | optional: false 60 | image: {{ .Values.botfront.app.image.name }}:{{ .Values.botfront.app.version }} 61 | {{- if .Values.botfront.app.imagePullPolicy }} 62 | imagePullPolicy: {{ .Values.botfront.app.imagePullPolicy }} 63 | {{- end }} 64 | name: {{ .Release.Name }}-app 65 | ports: 66 | - containerPort: 3000 67 | protocol: TCP 68 | resources: 69 | {{- with .Values.botfront.app.resources }} 70 | {{- toYaml . | nindent 10 }} 71 | {{- end }} 72 | volumeMounts: 73 | - mountPath: /app/models 74 | mountPropagation: None 75 | name: {{ .Release.Name }}-disk 76 | livenessProbe: 77 | httpGet: 78 | path: /health 79 | port: 3000 80 | {{- if .Values.botfront.app.graphQLKey }} 81 | httpHeaders: 82 | - name: authorization 83 | value: {{ .Values.botfront.app.graphQLKey | quote }} 84 | {{- end }} 85 | initialDelaySeconds: {{ .Values.botfront.app.livenessProbe.initialDelaySeconds }} 86 | periodSeconds: {{ .Values.botfront.app.livenessProbe.periodSeconds }} 87 | restartPolicy: Always 88 | {{if .Values.botfront.imagePullSecret }} 89 | imagePullSecrets: 90 | - name: {{ .Values.botfront.imagePullSecret }} 91 | {{end }} 92 | volumes: 93 | - emptyDir: {} 94 | name: {{ .Release.Name }}-disk -------------------------------------------------------------------------------- /botfront/values.yaml: -------------------------------------------------------------------------------- 1 | # OpenShift only 2 | # -------------- 3 | # Uncomment and configure the following if you encounter "Error creating: pods "..." is forbidden: unable to validate against any security context constraint" 4 | # securityContext: 5 | # runAsNonRoot: true 6 | # runAsUser: "" 7 | # fsGroup: "" 8 | 9 | # Default values for botfront. 10 | botfront: 11 | imagePullSecret: 12 | # Set this to 'gke' when using the Enterprise Editon 13 | orchestrator: docker-compose 14 | # Only necessary with the open source editon 15 | initialProjectId: bf 16 | # SMTP URI used by Botfront to send accounts related transactional emails 17 | # smtpUri: smtp://login:password@smtp.yourserver.com:587 18 | logs: 19 | # One of debug, info, warn, error 20 | level: info 21 | # Comma seprated list of transports. Currently supported: console, stackdriver 22 | transport: console 23 | # Stack driver application logger name 24 | loggerName: botfront-app-log 25 | audit: 26 | transport: console 27 | # Stack driver audit logger name 28 | loggerName: botfront-audit-log 29 | 30 | 31 | app: 32 | # Botfront version (e.g: latest) 33 | version: v1.0.3 34 | # an optional key to protect your graphql API (recommemded) 35 | graphQLKey: 36 | # name used for labels and selectors 37 | appName: botfront 38 | # The complete host of the Botfront application 39 | host: 40 | # The protocol: http or https 41 | protocol: http 42 | image: 43 | # Botfront image name (e.g: botfront/botfront) 44 | name: botfront/botfront 45 | resources: 46 | requests: 47 | cpu: 100m 48 | memory: 512Mi 49 | livenessProbe: 50 | initialDelaySeconds: 60 51 | periodSeconds: 3 52 | imagePullPolicy: IfNotPresent 53 | webhooks: 54 | enabled: false 55 | # name used for labels and selectors 56 | appName: botfront-webhooks 57 | version: 58 | image: 59 | # Botfront API image name (e.g: botfront/botfront) 60 | name: botfront/botfront-api 61 | resources: 62 | requests: 63 | cpu: 100m 64 | memory: 128Mi 65 | imagePullPolicy: IfNotPresent 66 | 67 | ingress: 68 | enabled: true 69 | nginx: 70 | # Set to true if your cluster uses the nginx-ingress controller 71 | enabled: true 72 | # Those are default values for nginx ingress annotations. Note that another is already present: 73 | # - kubernetes.io/ingress.class: nginx 74 | annotations: 75 | nginx.ingress.kubernetes.io/rewrite-target: / 76 | nginx.ingress.kubernetes.io/ssl-redirect: "false" 77 | 78 | # If nginx.enabled is false, the following annotations will be added to the Ingress. This is ignored it nginx.enabled is true. 79 | annotations: [] 80 | # Secret name containing the certificate 81 | tlsSecretName: 82 | # Host associated with the certificate. Might be different from app.host (could contain a wildcard) 83 | tlsHost: 84 | # If you are using Botfront Enterprise 85 | # licenseKey: 86 | 87 | duckling: 88 | enabled: true 89 | name: duckling 90 | image: botfront/duckling:latest 91 | resources: 92 | requests: 93 | cpu: 100m 94 | memory: 128Mi 95 | 96 | mongodb: 97 | mongodbPrefix: 'mongodb' 98 | # Wether a MongoDB instance should be deployed as part of this chart. Set this to false if you want to use an external MongoDB provider, such as Atlas 99 | enabled: false 100 | service: 101 | name: botfront-mongodb-service 102 | type: NodePort 103 | # MongoDB hosts and ports. Comma separated lists for clusters. 104 | mongodbHostsAndPorts: botfront-mongodb-service.botfront:27017 105 | # Name of the database containing Botfront data 106 | mongodbDatabase: bf 107 | # Query string of the MongoDB authentication database 108 | mongodbQueryString: '&retryWrites=true' 109 | # MongoDB root username 110 | mongodbRootUsername: root 111 | # Username of the MongoDB user that will have read-write access to the Botfront database. This is not the root user 112 | mongodbUsername: 'bfrw' 113 | # Password of the MongoDB user that will have read-write access to the Botfront database. This is not the root user 114 | mongodbPassword: 115 | # MongoDB root password 116 | mongodbRootPassword: 117 | # MongoDB oplog user username 118 | mongodbOplogUsername: 119 | # MongoDB oplog user password 120 | mongodbOplogPassword: 121 | 122 | 123 | mongo-express: 124 | # Set enabled: true to deploy the mongo-express client 125 | enabled: false 126 | # Basic authentication username to access the interface 127 | basicAuthUsername: 128 | # Basic authentication password to access the interface 129 | basicAuthPassword: 130 | # MongoDB root username 131 | mongodbAdminUsername: root 132 | # MongoDB root password 133 | mongodbAdminPassword: 134 | mongodbEnableAdmin: true 135 | # Change this if using custom release name or namesmace {{ .Release.name }}-mongodb-service.{{ .Release.namespace }} 136 | mongodbServer: botfront-mongodb-service.botfront 137 | service: 138 | type: NodePort 139 | ingress: 140 | enabled: true 141 | hosts: 142 | - host: 143 | paths: 144 | - / 145 | tls: [] 146 | 147 | redis: 148 | # Set enabled: true to deploy redis 149 | enabled: false 150 | # Redis Cluster is not able to guarantee strong consistency. 151 | # In practical terms this means that under certain conditions it is possible that Redis Cluster 152 | # will lose writes that were acknowledged by the system to the client. 153 | # So you should not use a redis cluster because rasa uses it for storing locks, thus it needs to be consistent. 154 | cluster: 155 | enabled: false # do not change (see above) 156 | slaveCount: 0 # do not change (see above) 157 | # if the password is not set it will be randomly generated, you can set usePassword to false to not use a password 158 | # usePassword: false 159 | global: 160 | redis: 161 | password: 162 | 163 | kubernetesApi: 164 | baseUrl: 165 | token: 166 | 167 | 168 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Botfront Helm Charts 3 | 4 | This repo contains 2 charts: 5 | 6 | - `botfront`: the Botfront platform 7 | - `botfront-project`: The Rasa project connected to Botfront, 8 | 9 | Both charts need to be installed. 10 | 11 | ## Prerequisites 12 | 13 | - Kubernetes 1.18+ 14 | - Helm 3.4+ 15 | - Persistent volume provisioner support in the underlying infrastructure 16 | 17 | ## Add the repository 18 | 19 | ```bash 20 | helm repo add botfront https://botfront.github.io/botfront-helm 21 | ``` 22 | 23 | ## Installation 24 | 25 | #### Botfront 26 | 27 | Given that there's quite a few parameters to set, we recommend using a config file. This is a minimal `config.yaml` you could start with: 28 | 29 | ```yaml 30 | botfront: 31 | app: 32 | # The complete external host of the Botfront application (eg. botfront.yoursite.com). It must be set even if running on a private or local DNS (it populates the ROOT_URL). 33 | host: botfront.yoursite.com 34 | 35 | mongodb: 36 | enabled: true # disable to use an external mongoDB host 37 | # Username of the MongoDB user that will have read-write access to the Botfront database. This is not the root user 38 | mongodbUsername: username 39 | # Password of the MongoDB user that will have read-write access to the Botfront database. This is not the root user 40 | mongodbPassword: password 41 | # MongoDB root password 42 | mongodbRootPassword: rootpassword 43 | ``` 44 | 45 | 46 | 47 | ```bash 48 | helm install botfront -f config.yaml --namespace botfront botfront/botfront --create-namespace 49 | ``` 50 | 51 | Upgrading: 52 | ``` 53 | helm upgrade -f config.yaml botfront --namespace botfront-project botfront botfront/botfront 54 | ``` 55 | #### Rasa 56 | 57 | 58 | ```bash 59 | helm install -n my_project --namespace botfront botfront/botfront-project \ 60 | --set ingress.host=http://your.public.rasa-host.com 61 | ``` 62 | 63 | When the chart is installed you will get further instructions to finalize the setup of your project. Here is an example: 64 | 65 | ``` 66 | NOTES: 67 | The Helm chart was succesfully installed on your cluster. 68 | Please execute the following instructions to complete your project's setup. 69 | 70 | 1. Your Rasa instance is available at the following URL: 71 | http://rasa.botfront.local 72 | 73 | 2. Set the following in your Settings > Endpoints: 74 | 75 | nlg: 76 | type: 'rasa_addons.core.nlg.GraphQLNaturalLanguageGenerator' 77 | url: 'http://botfront-app-service.botfront/graphql' 78 | action_endpoint: 79 | url: 'http://your.actions.server/webhook' # Change that if you have actions 80 | tracker_store: 81 | store_type: rasa_addons.core.tracker_stores.AnalyticsTrackerStore 82 | # The URL below might be different if you installed Botfront in another namespace. 83 | url: 'http://botfront-webhooks-service.botfront' 84 | project_id: 'bf' 85 | 86 | 3a. If using Rasa Webchat Open Source, set the following credentials: 87 | 88 | rasa_addons.core.channels.webchat.WebchatInput: 89 | session_persistence: true 90 | base_url: http://rasa.botfront.local 91 | 92 | 3b. If using Rasa Webchat Pro, set the following credentials: 93 | 94 | rasa_addons.core.channels.webchat_plus.WebchatPlusInput: 95 | session_persistence: true 96 | base_url: http://rasa.botfront.local 97 | 98 | 4. Set the Rasa instance internal URL in Settings > Instance: 99 | http://botfront-project-rasa-service.botfront-project 100 | ``` 101 | 102 | **Enterprise customers:** you must repeat this step for each Botfront project (change the release name) 103 | 104 | To upgrade a Rasa project 105 | 106 | ``` 107 | helm upgrade -f values-project.yaml my-project --namespace botfront-project botfront/botfront-project 108 | ``` 109 | 110 | ## Parameters reference 111 | 112 | ### Botfront 113 | 114 | | Parameter | Description | Default | 115 | |----------------------------------|-----------------------------------------------------------------------------------------------|-------------------------| 116 | | **`botfront.version`** | Botfront API Docker image | `v1.0.3` | 117 | | **`botfront.app.image.name`** | Botfront Docker image | `botfront/botfront` | 118 | | **`botfront.app.host`** | Botfront host (e.g botfront.your-domain.com) | `nil` | 119 | | **`botfront.app.graphQLKey`** | Key to protect the GraphQL API | `nil` | 120 | | **`botfront.api.image.name`** | Botfront API Docker image | `botfront/botfront-api` | 121 | | `botfront.ingress.enabled` | Enable Ingress | `true` | 122 | | `botfront.ingress.nginx.enabled` | Enable if the `nginx-ingress` controller is installed (and used) on the cluster | `true` | 123 | | `botfront.ingress.tlsSecretName` | Optional. Name of the secret containing the TLS certificate. If not set, SSL will be disabled | `nil` | 124 | | `botfront.ingress.tlsHost` | Optional. Host associated with the TLS certificate (may contain a wildcard) | `nil` | 125 | | `botfront.imagePullSecret` | Name of the secret containing the credentials to pull images from a private Docker repo | `nil` | 126 | 127 | 128 | ## Botfront project (Rasa) parameters 129 | 130 | | Parameter | Description | Default | 131 | |---------------------------------------|---------------------------------------------------------------------------------------------------------------------|-----------------------------------------| 132 | | `projectId` | ProjectId | `bf` | 133 | | `botfront.graphQLEndpoint` | Should have the form `http://./graphql` | `nil` | 134 | | `botfront.graphQLKey` | Botfront GraphQL API key | `nil` | 135 | | `rasa.image` | Rasa image | `botfront/rasa-for-botfront:2.2.5-bf.5` | 136 | | `rasa.authToken` | Rasa [authentication token](https://rasa.com/docs/rasa/http-api/#token-based-auth) | `nil` | 137 | | `ingress.host` | Rasa instance host | `nil` | 138 | | `ingress.tlsSecretName` | Name of the secret containing the certificate | `nil` | 139 | | `ingress.nginx.enableSessionAffinity` | enable sticky session see [Working with multiple rasa instances](#working-with-multiple-rasa-instances) for details | `true` | 140 | | `ingress.nginx.enableSockets` | enable use of sockets for conversations channels with rasa | `true` | 141 | | `duckling.url` | If set, the URL will be set as the `RASA_DUCKLING_HTTP_URL` environment variable to the Rasa deployment | `nil` | 142 | 143 | ## Duckling parameters 144 | 145 | | Parameter | Description | Default | 146 | |------------------------|-------------------------------|----------------------------| 147 | | **`duckling.enabled`** | Enable Duckling in this chart | `true` | 148 | | **`botfront.image`** | Duckling image | `botfront/duckling:latest` | 149 | 150 | 151 | ## MongoDB parameters 152 | 153 | Botfront stores its data in a MongoDB database. A MongoDB deployment (`stable/mongodb` chart) is included in this chart and can be optionally installed. 154 | If you're using Botfront in a production environment, consider adding your own deployment, or using a managed service. And configure automated backups :) 155 | 156 | 157 | | Parameter | Description | Default | 158 | |--------------------------------|-------------------------------------------------------------------------------|-------------------------------------------| 159 | | **`mongodb.mongodbUsername`** | The name of the user accessing the Botfront database (must not be `root`) | `bfrw` | 160 | | **`mongodb.mongodbPassword`** | The password of the user accessing the Botfront database (must not be `root`) | `nil` | 161 | | `mongodb.mongodbHostsAndPorts` | MongoDB server | `botfront-mongodb-service.botfront:27017` | 162 | | `mongodb.mongodbQueryString` | MongoDB connection query string | `&retryWrites=true` | 163 | | `mongodb.mongodbRootPassword` | MongoDB `root` password (only required if `mongodb.enabled` is set | `nil` | 164 | | `mongodb.mongodbOplogUsername` | Optional. Considerable database performance gains | `nil` | 165 | | `mongodb.mongodbOplogPassword` | Optional. Considerable database performance gains | `nil` | 166 | | `mongodb.enabled` | Set to `true` to add MongoDB to this deployment | `false` | 167 | 168 | 169 | **Important** 170 | If you are using the provided MongoDB deployment, `mongodb.mongodbHost` must follow the following pattern: `-mongodb-service.` 171 | 172 | ### Mongo Express parameters 173 | 174 | Mongo Express is a web-based client for MongoDB. You can optionally add Mongo Express to your deployment 175 | 176 | | Parameter | Description | Default | 177 | |--------------------------------------|---------------------------------------------------------------|-------------------------------------| 178 | | `mongo-express.enabled` | Set to `true` to enable a Mongo Express deployment | `false` | 179 | | `mongo-express.basicAuthUsername` | The Basic Auth username to access the Mongo Express interface | `nil` | 180 | | `mongo-express.basicAuthPassword` | The Basic Auth password to access the Mongo Express interface | `nil` | 181 | | `mongo-express.mongodbAdminPassword` | MongoDB `root` password | `nil` | 182 | | `mongo-express.mongodbServer` | MongoDB server | `nil` | 183 | | `mongo-express.hosts[0].host` | Mongo Express host | `botfront-mongodb-service.botfront` | 184 | | `mongo-express.hosts[0].paths[0]` | Mongo Express host path. **You must set it to `/`** | `nil` | 185 | | `mongo-express.tls[0].hosts[0]` | Optional. The host associated to your certificate | `nil` | 186 | | `mongo-express.tls[0].secretName` | Optional. Secret containing your certificate | `nil` | 187 | 188 | 189 | **Important** 190 | If you are using the provided MongoDB deployment, `mongodb.mongodbHost` must follow the following pattern: `-mongodb-service.` 191 | 192 | 193 | ## Scaling Rasa instances 194 | 195 | Two mechanisms can ensure tracker consistency when scaling horizontally: 196 | - A **sticky session** ties a conversation to a single Rasa instance. So the load balancer cannot change the Rasa instance dynamically during the conversation. 197 | - A **lock store** centralizes the conversation state and makes sure no race condition occurs if the load balancer spreads the conversation across several instances. 198 | 199 | **Important :** 200 | - 1. Sockets need to stick with the same instance. **The [Rasa Webchat](https://github.com/botfront/rasa-webchat) requires session affinity** 201 | Rasa chart enables sticky sessions by default. 202 | - 2. Botfront does not provide a model server. Trained models are persisted on persistent volume that is shared across instances. However, if you have more than one instance, you need to [rollout restart](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#-em-restart-em-) your Rasa deployment to make sure each instance loads the latest model. 203 | 204 | 205 | 206 | ### Model server 207 | 208 | TO-DO once a model server is setup 209 | 210 | ### Lockstore 211 | #### Enable and configure redis 212 | 213 | Redis is a data structure store, used by rasa as a lockstore it ensure that incoming messages are processed in the right order. 214 | 215 | | Parameter | Description | Default | 216 | |-------------------------|-----------------------------------------------------------|---------| 217 | | `redis.enabled` | Set to `true` to enable redis | `false` | 218 | | `redis.usePassword` | Enable password authentication for connecting to redis | `true` | 219 | | `redis.global.password` | The password value, if not set will be randomly generated | `nil` | 220 | 221 | #### Lockstore configuration 222 | 223 | Once redis is enabled you will need to update the endpoints in botfront so rasa is able to use it. 224 | here is an example of what you should add to the configuration : 225 | ```yaml 226 | lock_store: 227 | type: "redis" 228 | url: botfront-redis-master. 229 | port: 6379 230 | password: 231 | db: 0 # 232 | ``` 233 | 234 | ### Sticky Session 235 | 236 | This is enabled by default. 237 | If you are using a lockstore, you will need to disable it or the lockstore serve it purpose. 238 | in your rasa values set `ingress.nginx.enableSessionAffinity to `false` 239 | 240 | ### Pulling from a CGP private registry 241 | 242 | Obtain your `key.json` file: 243 | 244 | 1. Create a `docker-registry` secret in your cluster 245 | ```bash 246 | kubectl create secret docker-registry gcr-json-key \ 247 | --docker-server=https://gcr.io \ 248 | --docker-username=_json_key \ 249 | --docker-password="$(cat key.json)" \ 250 | --namespace botfront 251 | ``` 252 | 253 | 2. Patch the `default` service account (or the service account pulling images in your pods) **in the namespace Botfront is deployed in**. 254 | ``` 255 | kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "gcr-json-key"}]}' --namespace botfront 256 | ``` 257 | 258 | 3. Set `botfront.imagePullSecret` to `gcr-json-key` 259 | -------------------------------------------------------------------------------- /index.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | entries: 3 | botfront: 4 | - apiVersion: v1 5 | appVersion: v1.0.3 6 | created: "2021-03-03T09:00:45.468527-05:00" 7 | dependencies: 8 | - condition: mongodb.enabled 9 | name: mongodb 10 | repository: https://kubernetes-charts.storage.googleapis.com/ 11 | version: 7.8.6 12 | - condition: mongo-express.enabled 13 | name: mongo-express 14 | repository: https://cowboysysop.github.io/charts/ 15 | version: 1.0.1 16 | - condition: redis.enabled 17 | name: redis 18 | repository: https://charts.bitnami.com/bitnami/ 19 | version: 10.5.14 20 | description: A Helm chart for Botfront 21 | digest: 80860fc4499bf98e0854edd239636ded5db4df1809cfe4b09e68b2a4ebca61b1 22 | name: botfront 23 | urls: 24 | - https://botfront.github.io/botfront-helm/charts/botfront-1.0.3.tgz 25 | version: 1.0.3 26 | - apiVersion: v1 27 | appVersion: v1.0.0 28 | created: "2021-03-03T09:00:45.462513-05:00" 29 | dependencies: 30 | - condition: mongodb.enabled 31 | name: mongodb 32 | repository: https://kubernetes-charts.storage.googleapis.com/ 33 | version: 7.8.6 34 | - condition: mongo-express.enabled 35 | name: mongo-express 36 | repository: https://cowboysysop.github.io/charts/ 37 | version: 1.0.1 38 | - condition: redis.enabled 39 | name: redis 40 | repository: https://charts.bitnami.com/bitnami/ 41 | version: 10.5.14 42 | description: A Helm chart for Botfront 43 | digest: 76b1ecbeabe70f1a410302664c42f04c53c8a067157dc9926326a05bd57f6d91 44 | name: botfront 45 | urls: 46 | - https://botfront.github.io/botfront-helm/charts/botfront-1.0.0.tgz 47 | version: 1.0.0 48 | - apiVersion: v1 49 | appVersion: v1.0.0-rc4 50 | created: "2021-03-03T09:00:45.457165-05:00" 51 | dependencies: 52 | - condition: mongodb.enabled 53 | name: mongodb 54 | repository: https://kubernetes-charts.storage.googleapis.com/ 55 | version: 7.8.6 56 | - condition: mongo-express.enabled 57 | name: mongo-express 58 | repository: https://cowboysysop.github.io/charts/ 59 | version: 1.0.1 60 | - condition: redis.enabled 61 | name: redis 62 | repository: https://charts.bitnami.com/bitnami/ 63 | version: 10.5.14 64 | description: A Helm chart for Botfront 65 | digest: 25b8b531957780b22cbb1438808406052b00c0e066d38773ae8fc04df416895c 66 | name: botfront 67 | urls: 68 | - https://botfront.github.io/botfront-helm/charts/botfront-1.0.0-beta0.tgz 69 | version: 1.0.0-beta0 70 | - apiVersion: v1 71 | appVersion: 0.27.2 72 | created: "2021-03-03T09:00:45.451113-05:00" 73 | dependencies: 74 | - condition: mongodb.enabled 75 | name: mongodb 76 | repository: https://kubernetes-charts.storage.googleapis.com/ 77 | version: 7.8.6 78 | - condition: mongo-express.enabled 79 | name: mongo-express 80 | repository: https://cowboysysop.github.io/charts/ 81 | version: 1.0.1 82 | - condition: redis.enabled 83 | name: redis 84 | repository: https://charts.bitnami.com/bitnami/ 85 | version: 10.5.14 86 | description: A Helm chart for Botfront 87 | digest: 5cd4d8db9f8fa7ad979056bb3d7ffcc6e4349ac91d3df76d6ce85659630ceda4 88 | name: botfront 89 | urls: 90 | - https://botfront.github.io/botfront-helm/charts/botfront-0.5.2.tgz 91 | version: 0.5.2 92 | - apiVersion: v1 93 | appVersion: 0.25.8 94 | created: "2021-03-03T09:00:45.445356-05:00" 95 | dependencies: 96 | - condition: mongodb.enabled 97 | name: mongodb 98 | repository: https://kubernetes-charts.storage.googleapis.com/ 99 | version: 7.8.6 100 | - condition: mongo-express.enabled 101 | name: mongo-express 102 | repository: https://cowboysysop.github.io/charts/ 103 | version: 1.0.1 104 | - condition: redis.enabled 105 | name: redis 106 | repository: https://charts.bitnami.com/bitnami/ 107 | version: 10.5.14 108 | description: A Helm chart for Botfront 109 | digest: 68ad5caf3e2a0237c4129208ea9ce5151b32c243c59b1e876bb309aacbc16d5f 110 | name: botfront 111 | urls: 112 | - https://botfront.github.io/botfront-helm/charts/botfront-0.5.1.tgz 113 | version: 0.5.1 114 | - apiVersion: v1 115 | appVersion: 0.25.3 116 | created: "2021-03-03T09:00:45.44007-05:00" 117 | dependencies: 118 | - condition: mongodb.enabled 119 | name: mongodb 120 | repository: https://kubernetes-charts.storage.googleapis.com/ 121 | version: 7.8.6 122 | - condition: mongo-express.enabled 123 | name: mongo-express 124 | repository: https://cowboysysop.github.io/charts/ 125 | version: 1.0.1 126 | - condition: redis.enabled 127 | name: redis 128 | repository: https://charts.bitnami.com/bitnami/ 129 | version: 10.5.14 130 | description: A Helm chart for Botfront 131 | digest: 471597de70bfbdae14fd7780ff2ebeba34da2d7b55e4d1f90b32918eeb2736c2 132 | name: botfront 133 | urls: 134 | - https://botfront.github.io/botfront-helm/charts/botfront-0.5.0.tgz 135 | version: 0.5.0 136 | - apiVersion: v1 137 | appVersion: 0.23.0 138 | created: "2021-03-03T09:00:45.433918-05:00" 139 | dependencies: 140 | - condition: mongodb.enabled 141 | name: mongodb 142 | repository: https://kubernetes-charts.storage.googleapis.com/ 143 | version: 7.8.6 144 | - condition: mongo-express.enabled 145 | name: mongo-express 146 | repository: https://cowboysysop.github.io/charts/ 147 | version: 1.0.1 148 | - condition: redis.enabled 149 | name: redis 150 | repository: https://charts.bitnami.com/bitnami/ 151 | version: 10.5.14 152 | description: A Helm chart for Botfront 153 | digest: fda98983df7c93300489b423b93087ce05180ac3c8e59f923acf4b6c2bc32d9d 154 | name: botfront 155 | urls: 156 | - https://botfront.github.io/botfront-helm/charts/botfront-0.4.3.tgz 157 | version: 0.4.3 158 | - apiVersion: v1 159 | appVersion: 0.23.0 160 | created: "2021-03-03T09:00:45.428716-05:00" 161 | dependencies: 162 | - condition: mongodb.enabled 163 | name: mongodb 164 | repository: https://kubernetes-charts.storage.googleapis.com/ 165 | version: 7.8.6 166 | - condition: mongo-express.enabled 167 | name: mongo-express 168 | repository: https://cowboysysop.github.io/charts/ 169 | version: 1.0.1 170 | - condition: redis.enabled 171 | name: redis 172 | repository: https://charts.bitnami.com/bitnami/ 173 | version: 10.5.14 174 | description: A Helm chart for Botfront 175 | digest: f2aa345cb8b725bdc3c5a6a55f7a180dbf256703e6d635477354bd6c4d455a96 176 | name: botfront 177 | urls: 178 | - https://botfront.github.io/botfront-helm/charts/botfront-0.4.2.tgz 179 | version: 0.4.2 180 | - apiVersion: v1 181 | appVersion: 0.22.0 182 | created: "2021-03-03T09:00:45.422866-05:00" 183 | dependencies: 184 | - condition: mongodb.enabled 185 | name: mongodb 186 | repository: https://kubernetes-charts.storage.googleapis.com/ 187 | version: 7.8.6 188 | - condition: mongo-express.enabled 189 | name: mongo-express 190 | repository: https://cowboysysop.github.io/charts/ 191 | version: 1.0.1 192 | - condition: redis.enabled 193 | name: redis 194 | repository: https://charts.bitnami.com/bitnami/ 195 | version: 10.5.14 196 | description: A Helm chart for Botfront 197 | digest: acc638eb86623f0858044d472c0fb29c4681c681d663cdf8cc38869ec53a4924 198 | name: botfront 199 | urls: 200 | - https://botfront.github.io/botfront-helm/charts/botfront-0.4.1.tgz 201 | version: 0.4.1 202 | - apiVersion: v1 203 | appVersion: 0.22.0 204 | created: "2021-03-03T09:00:45.416846-05:00" 205 | dependencies: 206 | - condition: mongodb.enabled 207 | name: mongodb 208 | repository: https://kubernetes-charts.storage.googleapis.com/ 209 | version: 7.8.6 210 | - condition: mongo-express.enabled 211 | name: mongo-express 212 | repository: https://cowboysysop.github.io/charts/ 213 | version: 1.0.1 214 | description: A Helm chart for Botfront 215 | digest: 7abdf078bd7206b0ab3326aa057b632d5b12986ccbb89f9a22f1925f66d81123 216 | name: botfront 217 | urls: 218 | - https://botfront.github.io/botfront-helm/charts/botfront-0.4.0.tgz 219 | version: 0.4.0 220 | - apiVersion: v1 221 | appVersion: 0.21.4 222 | created: "2021-03-03T09:00:45.413109-05:00" 223 | dependencies: 224 | - condition: mongodb.enabled 225 | name: mongodb 226 | repository: https://kubernetes-charts.storage.googleapis.com/ 227 | version: 7.8.6 228 | - condition: mongo-express.enabled 229 | name: mongo-express 230 | repository: https://cowboysysop.github.io/charts/ 231 | version: 1.0.1 232 | description: A Helm chart for Botfront 233 | digest: 0f6f2be2a69d2afd60305df0fd8ae406ade52858faa893d3c3e53f5281a870fe 234 | name: botfront 235 | urls: 236 | - https://botfront.github.io/botfront-helm/charts/botfront-0.3.0.tgz 237 | version: 0.3.0 238 | - apiVersion: v1 239 | appVersion: 0.20.3 240 | created: "2021-03-03T09:00:45.408405-05:00" 241 | dependencies: 242 | - condition: mongodb.enabled 243 | name: mongodb 244 | repository: https://kubernetes-charts.storage.googleapis.com/ 245 | version: 7.8.6 246 | - condition: mongo-express.enabled 247 | name: mongo-express 248 | repository: https://cowboysysop.github.io/charts/ 249 | version: 1.0.1 250 | description: A Helm chart for Botfront 251 | digest: 73a876c23657877a2c457ab67e85303a20f8a4197443f629f1d76003f1c7ee71 252 | name: botfront 253 | urls: 254 | - https://botfront.github.io/botfront-helm/charts/botfront-0.2.4.tgz 255 | version: 0.2.4 256 | - apiVersion: v1 257 | appVersion: 0.20.3 258 | created: "2021-03-03T09:00:45.404169-05:00" 259 | dependencies: 260 | - condition: mongodb.enabled 261 | name: mongodb 262 | repository: https://kubernetes-charts.storage.googleapis.com/ 263 | version: 7.8.6 264 | - condition: mongo-express.enabled 265 | name: mongo-express 266 | repository: https://cowboysysop.github.io/charts/ 267 | version: 1.0.1 268 | description: A Helm chart for Botfront 269 | digest: 5796a6b3e4e29dd0ee01eb0f78e0571f584a2e85aa67d3ae3dce90fd9029afc2 270 | name: botfront 271 | urls: 272 | - https://botfront.github.io/botfront-helm/charts/botfront-0.2.3.tgz 273 | version: 0.2.3 274 | - apiVersion: v1 275 | appVersion: 0.20.2 276 | created: "2021-03-03T09:00:45.399762-05:00" 277 | dependencies: 278 | - condition: mongodb.enabled 279 | name: mongodb 280 | repository: https://kubernetes-charts.storage.googleapis.com/ 281 | version: 7.8.6 282 | - condition: mongo-express.enabled 283 | name: mongo-express 284 | repository: https://cowboysysop.github.io/charts/ 285 | version: 1.0.1 286 | description: A Helm chart for Botfront 287 | digest: 90a6ef6a8f07ce0cc952f2ff6e53e66f46a15e5530fb1f7fc5a3a91d5c1c6cbc 288 | name: botfront 289 | urls: 290 | - https://botfront.github.io/botfront-helm/charts/botfront-0.2.2.tgz 291 | version: 0.2.2 292 | - apiVersion: v1 293 | appVersion: 0.20.0 294 | created: "2021-03-03T09:00:45.394393-05:00" 295 | dependencies: 296 | - condition: mongodb.enabled 297 | name: mongodb 298 | repository: https://kubernetes-charts.storage.googleapis.com/ 299 | version: 7.8.6 300 | - condition: mongo-express.enabled 301 | name: mongo-express 302 | repository: https://cowboysysop.github.io/charts/ 303 | version: 1.0.1 304 | description: A Helm chart for Botfront 305 | digest: d00074771675033b453a45f591388cd646e0b6762ab3d2caa49cd52effc3d685 306 | name: botfront 307 | urls: 308 | - https://botfront.github.io/botfront-helm/charts/botfront-0.2.1.tgz 309 | version: 0.2.1 310 | - apiVersion: v1 311 | appVersion: 0.20.0 312 | created: "2021-03-03T09:00:45.389984-05:00" 313 | dependencies: 314 | - condition: mongodb.enabled 315 | name: mongodb 316 | repository: https://kubernetes-charts.storage.googleapis.com/ 317 | version: 7.8.6 318 | - condition: mongo-express.enabled 319 | name: mongo-express 320 | repository: https://cowboysysop.github.io/charts/ 321 | version: 1.0.1 322 | description: A Helm chart for Botfront 323 | digest: 289aa2ed24837bf5e8e5cd34659f7a34469f6556ec458df5996a53ac78d1fe0c 324 | name: botfront 325 | urls: 326 | - https://botfront.github.io/botfront-helm/charts/botfront-0.2.0.tgz 327 | version: 0.2.0 328 | - apiVersion: v1 329 | appVersion: "1.0" 330 | created: "2021-03-03T09:00:45.384583-05:00" 331 | dependencies: 332 | - condition: mongodb.enabled 333 | name: mongodb 334 | repository: https://kubernetes-charts.storage.googleapis.com/ 335 | version: 7.8.6 336 | - condition: mongo-express.enabled 337 | name: mongo-express 338 | repository: https://cowboysysop.github.io/charts/ 339 | version: 1.0.1 340 | description: A Helm chart for Botfront 341 | digest: b02e860be5a8e44303ac07ba46abd6f31ce70a9f1030764692e1ba2ed9f8c529 342 | name: botfront 343 | urls: 344 | - https://botfront.github.io/botfront-helm/charts/botfront-0.1.0.tgz 345 | version: 0.1.0 346 | botfront-project: 347 | - apiVersion: v1 348 | appVersion: v1.0.3 349 | created: "2021-03-03T09:00:45.476676-05:00" 350 | description: A Helm chart for Botfront projects 351 | digest: 1f4bfbcbaead3740accfb9e2777226f0f13effd94ca0e89d638e89b5e5915999 352 | name: botfront-project 353 | urls: 354 | - https://botfront.github.io/botfront-helm/charts/botfront-project-1.0.3.tgz 355 | version: 1.0.3 356 | - apiVersion: v1 357 | appVersion: v1.0.0 358 | created: "2021-03-03T09:00:45.476111-05:00" 359 | description: A Helm chart for Botfront projects 360 | digest: 2c0716882023427ca4673e250c688559d351284fc1703b987349fb45c1143d26 361 | name: botfront-project 362 | urls: 363 | - https://botfront.github.io/botfront-helm/charts/botfront-project-1.0.0.tgz 364 | version: 1.0.0 365 | - apiVersion: v1 366 | appVersion: v1.0.0-rc4 367 | created: "2021-03-03T09:00:45.474906-05:00" 368 | description: A Helm chart for Botfront projects 369 | digest: dc87c371218d0420398743cc254e3c1b7fc3038a8b21b811f88093aa15ca6fcb 370 | name: botfront-project 371 | urls: 372 | - https://botfront.github.io/botfront-helm/charts/botfront-project-1.0.0-beta0.tgz 373 | version: 1.0.0-beta0 374 | - apiVersion: v1 375 | appVersion: 0.27.2 376 | created: "2021-03-03T09:00:45.474347-05:00" 377 | description: A Helm chart for Botfront projects 378 | digest: d316d1b61864dcf50e222cf08d330ae4a91db5bc8c2f5a68ad9059f3d2dd9bec 379 | name: botfront-project 380 | urls: 381 | - https://botfront.github.io/botfront-helm/charts/botfront-project-0.5.2.tgz 382 | version: 0.5.2 383 | - apiVersion: v1 384 | appVersion: 0.25.8 385 | created: "2021-03-03T09:00:45.473808-05:00" 386 | description: A Helm chart for Botfront projects 387 | digest: 5d1cd3e3234c07093196f562d43d15e41172fcf279821f2f1977899c27b22c34 388 | name: botfront-project 389 | urls: 390 | - https://botfront.github.io/botfront-helm/charts/botfront-project-0.5.1.tgz 391 | version: 0.5.1 392 | - apiVersion: v1 393 | appVersion: 0.25.3 394 | created: "2021-03-03T09:00:45.4733-05:00" 395 | description: A Helm chart for Botfront projects 396 | digest: 6663ec34bf5782c2079798c5925f46dc61fbaf880b834b129db1693e5c5d22d5 397 | name: botfront-project 398 | urls: 399 | - https://botfront.github.io/botfront-helm/charts/botfront-project-0.5.0.tgz 400 | version: 0.5.0 401 | - apiVersion: v1 402 | appVersion: 0.23.0 403 | created: "2021-03-03T09:00:45.47281-05:00" 404 | description: A Helm chart for Botfront projects 405 | digest: 274cfb3d79fef6fceced8eb1c0b5793cdafd1ed4d6fad0cd6e2dcb7f7092c16e 406 | name: botfront-project 407 | urls: 408 | - https://botfront.github.io/botfront-helm/charts/botfront-project-0.4.3.tgz 409 | version: 0.4.3 410 | - apiVersion: v1 411 | appVersion: 0.23.0 412 | created: "2021-03-03T09:00:45.472364-05:00" 413 | description: A Helm chart for Botfront projects 414 | digest: a046262c22a4cfefec988b76904aaae9b9962a6fa788c27a36d0f5a961bac3a1 415 | name: botfront-project 416 | urls: 417 | - https://botfront.github.io/botfront-helm/charts/botfront-project-0.4.2.tgz 418 | version: 0.4.2 419 | - apiVersion: v1 420 | appVersion: 0.22.0 421 | created: "2021-03-03T09:00:45.471885-05:00" 422 | description: A Helm chart for Botfront projects 423 | digest: 83dd0f18ce01dbe4f00e63292017936ee30c1f99121f1709f9b9cd740c5bccc0 424 | name: botfront-project 425 | urls: 426 | - https://botfront.github.io/botfront-helm/charts/botfront-project-0.4.1.tgz 427 | version: 0.4.1 428 | - apiVersion: v1 429 | appVersion: 0.22.0 430 | created: "2021-03-03T09:00:45.471406-05:00" 431 | description: A Helm chart for Botfront projects 432 | digest: 57d0538d46b7e1becb689502833eb696aabad1fcac5d5cca89efec7e8c991965 433 | name: botfront-project 434 | urls: 435 | - https://botfront.github.io/botfront-helm/charts/botfront-project-0.4.0.tgz 436 | version: 0.4.0 437 | - apiVersion: v1 438 | appVersion: 0.21.4 439 | created: "2021-03-03T09:00:45.47097-05:00" 440 | description: A Helm chart for Botfront projects 441 | digest: ff44923bb838b174cfe4aa6f383e7df8ba448d95a2dc7eaf0c1e5145ccf825b9 442 | name: botfront-project 443 | urls: 444 | - https://botfront.github.io/botfront-helm/charts/botfront-project-0.3.0.tgz 445 | version: 0.3.0 446 | - apiVersion: v1 447 | appVersion: 0.20.3 448 | created: "2021-03-03T09:00:45.470493-05:00" 449 | description: A Helm chart for Botfront projects 450 | digest: 579590836bd77ca0f6d5d67039ed2f62fe25a78c454fdef92b145536204a70b4 451 | name: botfront-project 452 | urls: 453 | - https://botfront.github.io/botfront-helm/charts/botfront-project-0.2.4.tgz 454 | version: 0.2.4 455 | - apiVersion: v1 456 | appVersion: 0.20.3 457 | created: "2021-03-03T09:00:45.470005-05:00" 458 | description: A Helm chart for Botfront projects 459 | digest: 6402238c2eacd0324550253110f3634f0c5c2f2a57bc3556051bac232ce067d6 460 | name: botfront-project 461 | urls: 462 | - https://botfront.github.io/botfront-helm/charts/botfront-project-0.2.3.tgz 463 | version: 0.2.3 464 | - apiVersion: v1 465 | appVersion: 0.20.2 466 | created: "2021-03-03T09:00:45.469529-05:00" 467 | description: A Helm chart for Botfront projects 468 | digest: dce648653fcd81d2d8993a0e06c33b87abfc0c98d33e21999544359e20cf6fac 469 | name: botfront-project 470 | urls: 471 | - https://botfront.github.io/botfront-helm/charts/botfront-project-0.2.2.tgz 472 | version: 0.2.2 473 | - apiVersion: v1 474 | appVersion: 0.20.0 475 | created: "2021-03-03T09:00:45.469015-05:00" 476 | description: A Helm chart for Botfront projects 477 | digest: 909aef686cce1f1e6209479f3d4284b9909ba92a89df785b135f4e3300314430 478 | name: botfront-project 479 | urls: 480 | - https://botfront.github.io/botfront-helm/charts/botfront-project-0.2.0.tgz 481 | version: 0.2.0 482 | generated: "2021-03-03T09:00:45.379587-05:00" 483 | --------------------------------------------------------------------------------