Rasa & Dashbot & Kubernetes

You’re values.yml example is close but isn’t formatted correctly:

  additionalEndpoints:
    event_broker:
      type: dashbot.rasa.rasa
      apiKey: "PLACEHOLDER"

I’m not familiar with the dashbot type event broker. If that is a python module that needs to be mounted into the pod, you’ll need to also do that.

1 Like

How do u mount the python module in the pod?

Here’s the values.yml setting. You’ll want to read more about how this works in the Kubernetes docs.

Do i install the module in the worker pod?

Or inside Rabbit pod

I probably have to configure the docker image correct?

rasa-production needs to have it mounted. You can do the mount with values.yml as I indicated above. You could also create your own docker image that includes the dashbot code but you’d be better off mounting it at runtime.

1 Like

Seems like the implementation on the values file is wrong?

It’s probably the indentation in your yml file. These settings have been working in the values.yml for over a year. Paste your full values.yml.

# Default values for rasa-x.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

# rasax specific settings
rasax:
  # override the default command to run in the container
  command: []
  # override the default arguments to run in the container
  args: []
  # name of the Rasa X image to use
  name: "rasa/rasa-x"  # gcr.io/rasa-platform/rasa-x-ee
  # tag refers to the Rasa X image tag (uses `appVersion` by default)
  tag: ""
  # port on which Rasa X runs
  port: 5002
  # scheme by which Rasa X is accessible
  scheme: http
  # passwordSalt Rasa X uses to salt the user passwords
  passwordSalt: "passwordSalt"
  # token Rasa X accepts as authentication token from other Rasa services
  token: "rasaXToken"
  # jwtSecret which is used to sign the jwtTokens of the users
  jwtSecret: "jwtSecret"
  # databaseName Rasa X uses to store data
  # (uses the value of global.postgresql.postgresqlDatabase by default)
  databaseName: ""
  # disableTelemetry permanently disables telemetry
  disableTelemetry: false
  # Jaeger Sidecar
  jaegerSidecar: "false"
  # initialUser is the user which is created upon the initial start of Rasa X
  initialUser:
    # username specifies a name of this user
    username: "me"
    # password for this user (leave it empty to skip the user creation)
    password: "$CrvMe3i&ye3FdfvJR$t4KJ2"
  ## Enable persistence using Persistent Volume Claims
  ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
  ##
  persistence:
    # access Modes of the pvc
    accessModes:
    - ReadWriteOnce
    # size of the Rasa X volume claim
    size: 10Gi
    # annotations for the Rasa X pvc
    annotations: {}
    # finalizers for the pvc
    finalizers:
    - kubernetes.io/pvc-protection
    # existingClaim which should be used instead of a new one
    existingClaim: ""
  # livenessProbe checks whether rasa x needs to be restarted
  livenessProbe:
    enabled: true
    # initialProbeDelay for the `livenessProbe`
    initialProbeDelay: 10
    # scheme to be used by the `livenessProbe`
    scheme: "HTTP"
  # readinessProbe checks whether rasa x can receive traffic
  readinessProbe:
    enabled: true
    # initialProbeDelay for the `readinessProbe`
    initialProbeDelay: 10
    # scheme to be used by the `readinessProbe`
    scheme: "HTTP"
  # resources which Rasa X is required / allowed to use
  resources: {}
  # extraEnvs are environment variables which can be added to the Rasa X deployment
  extraEnvs: []
  # - name: SOME_CUSTOM_ENV_VAR
  #   value: "custom value"

  # additional volumeMounts to the main container
  extraVolumeMounts: []
  # - name: tmpdir
  #   mountPath: /var/lib/mypath

  # additional volumes to the pod
  extraVolumes: []
  # - name: tmpdir
  #   emptyDir: {}

  # tolerations can be used to control the pod to node assignment
  # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
  tolerations: []
    # - key: "nvidia.com/gpu"
    #   operator: "Exists"

  # nodeSelector to specify which node the pods should run on
  # https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
  nodeSelector: {}
    # "beta.kubernetes.io/instance-type": "g3.8xlarge"

  # automountServiceAccountToken specifies whether the Kubernetes service account
  # credentials should be automatically mounted into the pods. See more about it in
  # https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#use-the-default-service-account-to-access-the-api-server
  automountServiceAccountToken: false

  # service specifies settings for exposing rasa x to other services
  service:
    # annotations for the service
    annotations: {}

  # podLabels adds additional pod labels
  # https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
  podLabels: {}

  # hostNetwork controls whether the pod may use the node network namespace
  hostNetwork: false

  # dnsPolicy specifies Pod's DNS policy
  # ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy
  dnsPolicy: ""

# rasa: Settings common for all Rasa containers
rasa:
  # version is the Rasa Open Source version which should be used.
  # Used to ensure backward compatibility with older Rasa Open Source versions.
  version: "2.8.12"  # Please update the default value in the Readme when updating this
  # disableTelemetry permanently disables telemetry
  disableTelemetry: false
  # override the default command to run in the container
  command: []
  # override the default arguments to run in the container
  args: []
  # add extra arguments to the command in the container
  extraArgs: []
  # name of the Rasa image to use
  name: "rasa/rasa"
  # tag refers to the Rasa image tag. If empty `.Values.rasa.version-full` is used.
  tag: ""
  # port on which Rasa runs
  port: 5005
  # scheme by which Rasa services are accessible
  scheme: http
  # token Rasa accepts as authentication token from other Rasa services
  token: "rasaToken"
  # rabbitQueue it should use to dispatch events to Rasa X
  rabbitQueue: "rasa_production_events"
  # Optional additional rabbit queues for e.g. connecting to an analytics stack
  additionalRabbitQueues: [
  ]
  # additionalChannelCredentials which should be used by Rasa to connect to various

  # input channels
  additionalChannelCredentials: {}
    # rest:
    # facebook:
    #   verify: "rasa-bot"
    #   secret: "3e34709d01ea89032asdebfe5a74518"
    #   page-access-token: "EAAbHPa7H9rEBAAuFk4Q3gPKbDedQnx4djJJ1JmQ7CAqO4iJKrQcNT0wtD"
  # input channels
  additionalEndpoints:
    event_broker:
      type: dashbot.rasa.rasa
      apiKey: HL8BaPzYNMW2A9bkcXl64bxKmAbwwbyinLK2Joos
  # Jaeger Sidecar
  jaegerSidecar: "false"
  livenessProbe:
    enabled: true
    # initialProbeDelay for the `livenessProbe`
    initialProbeDelay: 10
    # scheme to be used by the `livenessProbe`
    scheme: "HTTP"
  # useLoginDatabase will use the Rasa X database to log in and create the database
  # for the tracker store. If `false` the tracker store database must have been created
  # previously.
  useLoginDatabase: true
  # lockStoreDatabase is the database in redis which Rasa uses to store the conversation locks
  lockStoreDatabase: "1"
  # cacheDatabase is the database in redis which Rasa X uses to store cached values
  cacheDatabase: "2"
  # extraEnvs are environment variables which can be added to the Rasa deployment
  extraEnvs: []
    # example which sets env variables in each Rasa Open Source service from a separate k8s secret
    # - name: "TWILIO_ACCOUNT_SID"
    #   valueFrom:
    #     secretKeyRef:
    #       name: twilio-auth
    #       key: twilio_account_sid
    # - name: TWILIO_AUTH_TOKEN
    #   valueFrom:
    #     secretKeyRef:
    #       name: twilio-auth
    #       key: twilio_auth_token

  # tolerations can be used to control the pod to node assignment
  # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
  tolerations: []
    # - key: "nvidia.com/gpu"
    #   operator: "Exists"

  # automountServiceAccountToken specifies whether the Kubernetes service account
  # credentials should be automatically mounted into the pods. See more about it in
  # https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#use-the-default-service-account-to-access-the-api-server
  automountServiceAccountToken: false

  # podLabels adds additional pod labels
  # https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
  podLabels: {}

  # versions of the Rasa container which are running
  versions:
    # rasaProduction is the container which serves the production environment
    rasaProduction:

      # enable the rasa-production deployment
      # You can disable the rasa-production deployment in order to use external Rasa OSS deployment instead.
      enabled: true

      # Define if external Rasa OSS should be used.
      external:
        # enable external Rasa OSS
        enabled: false

        # host of external Rasa OSS deployment
        host: "http://rasa-bot"

      # nodeSelector to specify which node the pods should run on
      # https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
      nodeSelector: {}
        # "beta.kubernetes.io/instance-type": "g3.8xlarge"
      # replicaCount of the Rasa Production container
      replicaCount: 1 
      # serviceName with which the Rasa production deployment is exposed to other containers
      serviceName: "rasa-production"
      # service specifies settings for exposing rasa production to other services
      service:
        # annotations for the service
        annotations: {}
      # modelTag of the model Rasa should pull from the the model server
      modelTag: "production"
      # trackerDatabase it should use to to store conversation trackers
      trackerDatabase: "tracker"
      # rasaEnvironment it used to indicate the origin of events published to RabbitMQ (App ID message property)
      rasaEnvironment: "production"
      # resources which rasaProduction is required / allowed to use
      resources: {}
      # additional volumeMounts to the main container
      extraVolumeMounts: []
      # - name: tmpdir
      #   mountPath: /var/lib/mypath

      # additional volumes to the pod
      extraVolumes: []
      # - name: tmpdir
      #   emptyDir: {}
    # rasaWorker is the container which does computational heavy tasks such as training
    rasaWorker:
      # enable the rasa-worker deployment
      # You can disable the rasa-worker deployment in order to use external Rasa OSS deployment instead.
      enabled: true

      # Define if external Rasa OSS should be used.
      external:
        # enable external Rasa OSS
        enabled: false

        # host of external Rasa OSS deployment
        host: "http://rasa-worker"

      # nodeSelector to specify which node the pods should run on
      # https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
      nodeSelector: {}
        # "beta.kubernetes.io/instance-type": "g3.8xlarge"
      # replicaCount of the Rasa worker container
      replicaCount: 1
      # serviceName with which the Rasa worker deployment is exposed to other containers
      serviceName: "rasa-worker"
      # service specifies settings for exposing rasa worker to other services
      service:
        # annotations for the service
        annotations: {}
      # modelTag of the model Rasa should pull from the the model server
      modelTag: "production"
      # trackerDatabase it should use to to store conversation trackers
      trackerDatabase: "worker_tracker"
      # rasaEnvironment it used to indicate the origin of events published to RabbitMQ (App ID message property)
      rasaEnvironment: "worker"
      # resources which rasaWorker is required / allowed to use
      resources: {}
      # additional volumeMounts to the main container
      extraVolumeMounts: []
      # - name: tmpdir
      #   mountPath: /var/lib/mypath

      # additional volumes to the pod
      extraVolumes: []
      # - name: tmpdir
      #   emptyDir: {}


# dbMigrationService specifies settings for the database migration service
# The database migration service requires Rasa X >= 0.33.0
dbMigrationService:
  # initContainer describes settings related to the init-db container used as a init container for deployments
  initContainer:
    # image is the Docker image which is used by the init container
    image: alpine:3.12.3
    # command overrides the default command to run in the init container
    command: []
  # command overrides the default command to run in the container
  command: []
  # args overrides the default arguments to run in the container
  args: []
  # name is the Docker image name which is used by the migration service (uses `rasax.name` by default)
  name: ""  # gcr.io/rasa-platform/rasa-x-ee
  # tag refers to the Rasa X image tag (uses `appVersion` by default)
  tag: ""
  # ignoreVersionCheck defines if check required minimum Rasa X version that is required to run the service
  ignoreVersionCheck: false
  # port on which which to run the readiness endpoint
  port: 8000

  # tolerations can be used to control the pod to node assignment
  # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
  tolerations: []
    # - key: "nvidia.com/gpu"
    #   operator: "Exists"

  # nodeSelector to specify which node the pods should run on
  # https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
  nodeSelector: {}
    # "beta.kubernetes.io/instance-type": "g3.8xlarge"

  # resources which the event service is required / allowed to use
  resources: {}
  # extraEnvs are environment variables which can be added to the dbMigrationService deployment
  extraEnvs: []
  # - name: SOME_CUSTOM_ENV_VAR
  #   value: "custom value"

  # extraVolumeMounts defines additional volumeMounts to the main container
  extraVolumeMounts: []
  # - name: tmpdir
  #   mountPath: /var/lib/mypath

  # extraVolumes defines additional volumes to the pod
  extraVolumes: []
  # - name: tmpdir
  #   emptyDir: {}

  # automountServiceAccountToken specifies whether the Kubernetes service account
  # credentials should be automatically mounted into the pods. See more about it in
  # https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#use-the-default-service-account-to-access-the-api-server
  automountServiceAccountToken: false

  # service specifies settings for exposing the db migration service to other services
  service:
    # annotations for the service
    annotations: {}

  livenessProbe:
    enabled: true
    # initialProbeDelay for the `livenessProbe`
    initialProbeDelay: 10
    # scheme to be used by the `livenessProbe`
    scheme: "HTTP"
  # readinessProbe checks whether rasa x can receive traffic
  readinessProbe:
    enabled: true
    # initialProbeDelay for the `readinessProbe`
    initialProbeDelay: 10
    # scheme to be used by the `readinessProbe`
    scheme: "HTTP"

  # podLabels adds additional pod labels
  # https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
  podLabels: {}

# event-service specific settings
eventService:
  # override the default command to run in the container
  command: []
  # override the default arguments to run in the container
  args: []
  # event service just uses the Rasa X image
  name: "rasa/rasa-x"  # gcr.io/rasa-platform/rasa-x-ee
  # tag refers to the Rasa X image tag (uses `appVersion` by default)
  tag: ""
  # port on which which to run the readiness endpoint
  port: 5673
  # replicaCount of the event-service container
  replicaCount: 1
  # databaseName the event service uses to store data
  databaseName: "rasa"

  # tolerations can be used to control the pod to node assignment
  # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
  tolerations: []
    # - key: "nvidia.com/gpu"
    #   operator: "Exists"

  # nodeSelector to specify which node the pods should run on
  # https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
  nodeSelector: {}
    # "beta.kubernetes.io/instance-type": "g3.8xlarge"

  # resources which the event service is required / allowed to use
  resources: {}
  # extraEnvs are environment variables which can be added to the eventService deployment
  extraEnvs: []
  # - name: SOME_CUSTOM_ENV_VAR
  #   value: "custom value"

  # additional volumeMounts to the main container
  extraVolumeMounts: []
  # - name: tmpdir
  #   mountPath: /var/lib/mypath

  # additional volumes to the pod
  extraVolumes: []
  # - name: tmpdir
  #   emptyDir: {}

  # livenessProbe checks whether the event service needs to be restarted
  livenessProbe:
    enabled: true
    # initialProbeDelay for the `livenessProbe`
    initialProbeDelay: 10
    scheme: "HTTP"
  # readinessProbe checks whether the event service can receive traffic
  readinessProbe:
    enabled: true
    # initialProbeDelay for the `readinessProbe`
    initialProbeDelay: 10
    scheme: "HTTP"
  # automountServiceAccountToken specifies whether the Kubernetes service account
  # credentials should be automatically mounted into the pods. See more about it in
  # https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#use-the-default-service-account-to-access-the-api-server
  automountServiceAccountToken: false

  # podLabels adds additional pod labels
  # https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
  podLabels: {}

# app (custom action server) specific settings
app:
  # default is to install action server from image.
  install: true
  # if install is set to false, the url to the existing action server can be configured by setting existingUrl.
  # #existingUrl: http://myactionserver:5055/webhook
  #
  # override the default command to run in the container
  command: []
  # override the default arguments to run in the container
  args: []
  # name of the custom action server image to use
  name: "aymane258/customactionserver"
  # tag refers to the custom action server image tag
  tag: "1"
  # replicaCount of the custom action server container
  replicaCount: 1
  # port on which the custom action server runs
  port: 5055
  # scheme by which custom action server is accessible
  scheme: http
  # resources which app is required / allowed to use
  resources: {}
  # Jaeger Sidecar
  jaegerSidecar: "false"
  # extraEnvs are environment variables which can be added to the app deployment
  extraEnvs: []
  #  - name: DATABASE_URL
  #    valueFrom:
  #      secretKeyRef:
  #        name: app-secret
  #        key: database_url

  # tolerations can be used to control the pod to node assignment
  # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
  tolerations: []
    # - key: "nvidia.com/gpu"
    #   operator: "Exists"

  # nodeSelector to specify which node the pods should run on
  # https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
  nodeSelector: {}
    # "beta.kubernetes.io/instance-type": "g3.8xlarge"

  # endpoints specifies the webhook and health check url paths of the action server app
  endpoints:
    # actionEndpointUrl is the URL which Rasa Open Source calls to execute custom actions
    actionEndpointUrl: /webhook
    # healthCheckURL is the URL which is used to check the pod health status
    healthCheckUrl: /health

  # additional volumeMounts to the main container
  extraVolumeMounts: []
  # - name: tmpdir
  #   mountPath: /var/lib/mypath

  # additional volumes to the pod
  extraVolumes: []
  # - name: tmpdir
  #   emptyDir: {}

  # automountServiceAccountToken specifies whether the Kubernetes service account
  # credentials should be automatically mounted into the pods. See more about it in
  # https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#use-the-default-service-account-to-access-the-api-server
  automountServiceAccountToken: true

  # service specifies settings for exposing app to other services
  service:
    # annotations for the service
    annotations: {}

  # livenessProbe checks whether app needs to be restarted
  livenessProbe:
    enabled: true
    # initialProbeDelay for the `livenessProbe`
    initialProbeDelay: 10
    # scheme to be used by the `livenessProbe`
    scheme: "HTTP"
  # readinessProbe checks whether app can receive traffic
  readinessProbe:
    enabled: true
    # initialProbeDelay for the `readinessProbe`
    initialProbeDelay: 10
    # scheme to be used by the `readinessProbe`
    scheme: "HTTP"

  # podLabels adds additional pod labels
  # https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
  podLabels: {}

# nginx specific settings
nginx:
  # enabled should be `true` if you want to use nginx
  # if you set false, you will need to set up some other method of routing (VirtualService/Ingress controller)
  enabled: true
  # subPath defines the subpath used by Rasa X (ROOT_URL), e.g /rasa-x
  subPath: ""
  # override the default command to run in the container
  command: []
  # override the default arguments to run in the container
  args: []
  # name of the nginx image to use
  name: "nginx"
  # tag refers to the nginx image tag (uses `appVersion` by default)
  tag: "1.19"
  # custom config map containing nginx.conf, ssl.conf.template, rasax.nginx.template
  customConfConfigMap: ""
  # replicaCount of nginx containers to run
  replicaCount: 1
  # certificateSecret which nginx uses to mount the certificate files
  certificateSecret: ""
  # service which is to expose nginx
  service:
    # annotations for the service
    annotations: {}
    # type of the service (https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types)
    type: LoadBalancer
    # loadBalancerSourceRange for AWS deployments (https://kubernetes.io/docs/concepts/services-networking/service/#aws-nlb-support)
    loadBalancerSourceRanges: []
    # port is the port which the nginx service exposes for HTTP connections
    port: 8000
    # nodePort can be used with a service of type `NodePort` to expose the service on a certain port of the node (https://kubernetes.io/docs/concepts/services-networking/service/#nodeport)
    nodePort: ""
    # externalIPs can be used to expose the service to certain IPs (https://kubernetes.io/docs/concepts/services-networking/service/#external-ips)
    externalIPs: []
  livenessProbe:
    enabled: true
    # command for the `livenessProbe`
    command: []
    # initialProbeDelay for the `livenessProbe`
    initialProbeDelay: 10
  # readinessProbe checks whether rasa x can receive traffic
  readinessProbe:
    enabled: true
    # command for the `readinessProbe`
    command: []
    # initialProbeDelay for the `readinessProbe`
    initialProbeDelay: 10

  # tolerations can be used to control the pod to node assignment
  # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
  tolerations: []
    # - key: "nvidia.com/gpu"
    #   operator: "Exists"

  # nodeSelector to specify which node the pods should run on
  # https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
  nodeSelector: {}
    # "beta.kubernetes.io/instance-type": "g3.8xlarge"

  # resources which nginx is required / allowed to use
  resources: {}

  # additional volumeMounts to the main container
  extraVolumeMounts: []
  # - name: tmpdir
  #   mountPath: /var/lib/mypath

  # additional volumes to the pod
  extraVolumes: []
  # - name: tmpdir
  #   emptyDir: {}

  # automountServiceAccountToken specifies whether the Kubernetes service account
  # credentials should be automatically mounted into the pods. See more about it in
  # https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#use-the-default-service-account-to-access-the-api-server
  automountServiceAccountToken: false

  # podLabels adds additional pod labels
  # https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
  podLabels: {}

# Duckling specific settings
duckling:
  # override the default command to run in the container
  command: []
  # override the default arguments to run in the container
  args: []
  # Enable or disable duckling
  enabled: true
  # name of the Duckling image to use
  name: "rasa/duckling"
  # tag refers to the duckling image tag
  tag: "0.1.6.3"
  # replicaCount of duckling containers to run
  replicaCount: 1
  # port on which duckling should run
  port: 8000
  # scheme by which duckling is accessible
  scheme: http
  extraEnvs: []
  # tolerations can be used to control the pod to node assignment
  # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
  tolerations: []
    # - key: "nvidia.com/gpu"
    #   operator: "Exists"

  # nodeSelector to specify which node the pods should run on
  # https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
  nodeSelector: {}
    # "beta.kubernetes.io/instance-type": "g3.8xlarge"

  # resources which duckling is required / allowed to use
  resources: {}

  readinessProbe:
    enabled: true
    # initialProbeDelay for the `readinessProbe`
    initialProbeDelay: 10
    # scheme to be used by the `readinessProbe`
    scheme: "HTTP"
  livenessProbe:
    enabled: true
    # initialProbeDelay for the `livenessProbe`
    initialProbeDelay: 10
    # scheme to be used by the `livenessProbe`
    scheme: "HTTP"
  # additional volumeMounts to the main container
  extraVolumeMounts: []
  # - name: tmpdir
  #   mountPath: /var/lib/mypath

  # additional volumes to the pod
  extraVolumes: []
  # - name: tmpdir
  #   emptyDir: {}

  # automountServiceAccountToken specifies whether the Kubernetes service account
  # credentials should be automatically mounted into the pods. See more about it in
  # https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#use-the-default-service-account-to-access-the-api-server
  automountServiceAccountToken: false

  # service specifies settings for exposing duckling to other services
  service:
    # annotations for the service
    annotations: {}

  # podLabels adds additional pod labels
  # https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
  podLabels: {}

# rasaSecret object which supplies passwords, tokens, etc. See
# https://rasa.com/docs/rasa-x/openshift-kubernetes/#providing-access-credentials-using-an-external-secret
# to see which values are required in the secret in case you want to provide your own.
# If no secret is provided, a secret will be generated.
rasaSecret: ""

# debugMode enables / disables the debug mode for Rasa and Rasa X
debugMode: false

# separateEventService value determines whether the eventService will be run as a separate service.
# If set to 'false', Rasa X will run an event service as a subprocess (not recommended
# high-load setups).
separateEventService: "true"

# separateDBMigrationService value determines whether the dbMigrationService will be run as a separate service.
# If set to 'false', Rasa X will run a database migration service as a subprocess.
separateDBMigrationService: true

# postgresql specific settings (https://hub.helm.sh/charts/bitnami/postgresql/8.6.13)
postgresql:
  # Install should be `true` if the postgres subchart should be used
  install: true
  # postgresqlPostgresPassword is the password when .Values.global.postgresql.postgresqlUsername	does not equal "postgres"
  postgresqlPostgresPassword: ""
  # existingHost is the host which is used when an external postgresql instance is provided (`install: false`)
  existingHost: ""
  # existingSecretKey is the key to get the password when an external postgresql instance is provided (`install: false`)
  existingSecretKey: ""

  # Configure security context for the postgresql init container
  # volumePermissions:
      ## Init container Security Context
  #   securityContext:
  #     runAsUser: 0

  ## Configure security context for the rabbitmq container
  # securityContext:
  #   enabled: true
  #   fsGroup: 1001
  #   runAsUser: 1001

# RabbitMQ specific settings (https://hub.helm.sh/charts/bitnami/rabbitmq/6.19.2)
rabbitmq:
  # Install should be `true` if the rabbitmq subchart should be used
  install: true
  # Enabled should be `true` if any version of rabbit is used
  enabled: true
  # rabbitmq settings of the subchart
  rabbitmq:
    # username which is used for the authentication
    username: "user"
    # password which is used for the authentication
    password: "password"
    # existingPasswordSecret which should be used for the password instead of putting it in the values file
    existingPasswordSecret: ""
  # service specifies settings for exposing rabbit to other services
  service:
    # port on which rabbitmq is exposed to Rasa
    port: 5672
   # existingHost is the host which is used when an external rabbitmq instance is provided (`install: false`)
  existingHost: ""
  # existingPasswordSecretKey is the key to get the password when an external rabbitmq instance is provided (`install: false`)
  existingPasswordSecretKey: ""
  # # security context for the rabbitmq container (please see the documentation of the subchart)
  # securityContext:
  #   enabled: true
  #   fsGroup: 1001
  #   runAsUser: 1001

# redis specific settings (https://hub.helm.sh/charts/bitnami/redis/10.5.14)
redis:
  # Install should be `true` if the redis subchart should be used
  install: true
  # cluster settings for redis (Rasa does currently not support redis sentinels)
  cluster:
    # set up a single Redis instance, as `redis-py` does not support clusters (https://github.com/andymccurdy/redis-py#cluster-mode)
    enabled: false
  # redisPort: port which should be used to expose redis to the other components
  redisPort: 6379
  # existingSecret which should be used for the password instead of putting it in the values file
  existingSecret: ""
  # existingSecretPasswordKey is the key to get the password when an external redis instance is provided
  existingSecretPasswordKey: ""
  # existingHost is the host which is used when an external redis instance is provided (`install: false`)
  existingHost: ""
  # # security context for the redis container (please see the documentation of the subchart)
  # securityContext:
  #   enabled: true
  #   fsGroup: 1001
  #   runAsUser: 1001

# ingress settings
ingress:
  # enabled should be `true` if you want to use this ingress.
  # Note that if `nginx.enabled` is `true` the `nginx` image is used as reverse proxy.
  # In order to use nginx ingress you have to set `nginx.enabled=false`.
  enabled: true
  # annotations for the ingress - annotations are applied for the rasa and rasax ingresses
  annotations: {}
    # kubernetes.io/ingress.class: nginx
    # kubernetes.io/tls-acme: "true"
  # annotationsRasa is extra annotations for the rasa nginx ingress
  annotationsRasa: {}
  # annotationsRasaX is extra annotations for the rasa x nginx ingress
  annotationsRasaX:
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
  # hosts for this ingress
  hosts:
    - host: rasa-x.example.com
      paths:
      - /
  # tls: Secrets for the certificates
  tls: []
  #  - secretName: rasa-x-tls
  #    hosts:
  #      - rasa-x.example.com

networkPolicy:
  # Enable creation of NetworkPolicy resources. When set to true, explicit ingress & egress
  # network policies will be generated for the required inter-pod connections
  enabled: false

  # Allow for traffic from a given CIDR - it's required in order to make kubelet able to run live and readiness probes
  nodeCIDR: {}
  #  - ipBlock:
  #      cidr: 0.0.0.0/0

# images: Settings for the images
images:
  # pullPolicy to use when deploying images
  pullPolicy: "Always"
  # imagePullSecrets which are required to pull images for private registries
  imagePullSecrets: []

# securityContext to use
securityContext:
  # runAsUser: 1000
  fsGroup: 1000

# nameOverride replaces the Chart's name
nameOverride: ""

# fullNameOverride replace the Chart's fullname
fullnameOverride: ""

# global settings of the used subcharts
global:
  # specifies the number of seconds you want to wait for your Deployment to progress before
  # the system reports back that the Deployment has failed progressing - surfaced as a condition
  # with Type=Progressing, Status=False. and Reason=ProgressDeadlineExceeded in the status of the resource
  # source: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#progress-deadline-seconds
  progressDeadlineSeconds: 600
  # storageClass the volume claims should use
  storageClass: ""
  # postgresql: global settings of the postgresql subchart
  postgresql:
    # postgresqlUsername which should be used by Rasa to connect to Postgres
    postgresqlUsername: "postgres"
    # postgresqlPassword is the password which is used when the postgresqlUsername equals "postgres"
    postgresqlPassword: "password"
    # existingSecret which should be used for the password instead of putting it in the values file
    existingSecret: ""
    # postgresDatabase which should be used by Rasa X
    postgresqlDatabase: "rasa"
    # servicePort which is used to expose postgres to the other components
    servicePort: 5432
    # host: postgresql.hostedsomewhere.else
  # redis: global settings of the postgresql subchart
  redis:
    # password to use in case there no external secret was provided
    password: "redis-password"

  # additionalDeploymentLabels can be used to map organizational structures onto system objects
  # https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
  additionalDeploymentLabels: {}

@stephens

Thanks for the values.yml file. It looks like there’s an open issue here and workaround here

1 Like

will try it out in a bit , fingers crossed. Absolutely appreciate you helping out, you have no idea how much this means to me.

im quite sure dashbot uses rabbitmq , so would i have to disable kafka?

Stephens the workaround doesn’t really work, disabling rabbitmq causes the following pods to crash

C:\Users\ayman\OneDrive\Bureaublad\VisualQuran\iChoosr-Rasa-chatbot>kubectl -n rasax logs rasa-x-1638803505-rasa-production-b7784bfd8-n89vr
←(0lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk←(B
←(0x←(B Rasa Open Source reports anonymous usage telemetry to help improve the product ←(0x←(B
←(0x←(B for all its users.                                                             ←(0x←(B
←(0x←(B                                                                                ←(0x←(B
←(0x←(B If you'd like to opt-out, you can use `rasa telemetry disable`.                ←(0x←(B
←(0x←(B To learn more, check out https://rasa.com/docs/rasa/telemetry/telemetry.       ←(0x←(B
←(0mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj←(B
←[92mStarting Rasa X in production mode... 🚀←[0m
Traceback (most recent call last):
  File "/opt/venv/bin/rasa", line 8, in <module>
    sys.exit(main())
  File "/opt/venv/lib/python3.8/site-packages/rasa/__main__.py", line 121, in main
    cmdline_arguments.func(cmdline_arguments)
  File "/opt/venv/lib/python3.8/site-packages/rasa/cli/x.py", line 355, in rasa_x
    run_in_production(args)
  File "/opt/venv/lib/python3.8/site-packages/rasa/cli/x.py", line 414, in run_in_production
    _rasa_service(args, endpoints, None, credentials_path)
  File "/opt/venv/lib/python3.8/site-packages/rasa/cli/x.py", line 89, in _rasa_service
    serve_application(
  File "/opt/venv/lib/python3.8/site-packages/rasa/core/run.py", line 178, in serve_application
    app = configure_app(
  File "/opt/venv/lib/python3.8/site-packages/rasa/core/run.py", line 103, in configure_app
    app = server.create_app(
  File "/opt/venv/lib/python3.8/site-packages/rasa/server.py", line 650, in create_app
    Initialize(
  File "/opt/venv/lib/python3.8/site-packages/sanic_jwt/initialization.py", line 133, in __init__
    self.__load_configuration()
  File "/opt/venv/lib/python3.8/site-packages/sanic_jwt/initialization.py", line 306, in __load_configuration
    self.config = self.configuration_class(self.app.config, **self.kwargs)
  File "/opt/venv/lib/python3.8/site-packages/sanic_jwt/configuration.py", line 283, in __init__
    self._validate_secret()
  File "/opt/venv/lib/python3.8/site-packages/sanic_jwt/configuration.py", line 308, in _validate_secret
    if self.secret() is None or (
  File "/opt/venv/lib/python3.8/site-packages/sanic_jwt/configuration.py", line 134, in __call__
    if asyncio.get_event_loop().is_running():
  File "/usr/lib/python3.8/asyncio/events.py", line 639, in get_event_loop
    raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'MainThread'.

The production pod gives the following error

Hope you can help me out. Thank you

Sorry for the confusion but I wasn’t suggesting you replace rabbit with kafka. The example was intended to show how you can configure a different event broker. In your case, you need to replace rabbit with the dashbot broker.

Rasa doesn’t not support multple event brokers. Based on your config, you are using the rabbit broker to send events to Rasa X. You could replace rabbit with the dashbot config but your Rasa X instance will no longer receive the conversations.

Rabbit does allow you to create multiple queues, so it’s possible you could create a second queue that would be forwarded to Dashbot but then you would need to re-write the dashbot.rasa.rasa code to read from the rabbit queue directly. Otherwise you could disconnect Rasa X and just use Dashbot.

1 Like

How come this does work locally though, rasaX and dashbot

Also disconnecting Rasa X and using dashbot only is not an option as they serve two different purposes.

What’s your endpoints.yml file look like when running locally?

1 Like