How to install pip module into production pod in a kubernetes deployment

How to install pip module into production pod in a kubernetes deployment

2021-12-03 21:52:52 WARNING rasa.core.brokers.broker - The EventBroker type ‘dashbot.rasa.rasa’ could not be found. Not using any event broker. Error: No module named ‘dashbot’

Doing this at runtime didn’t work and gave me

ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: '/opt/venv/lib/python3.8/site-packages/dashbot'
Check the permissions.

And doing this through creating a custom image of rasax and adding the install of dashbot there also didn’t seem to install it into the production pod.


# if using community edition, please replace with rasa-x-ce

  FROM rasa/rasa-x:0.42.5

  # Switch to root user to install packages

  USER root

  RUN pip install dashbot

  USER 1001
# 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: "aymane258/customrasax"  # gcr.io/rasa-platform/rasa-x-ee
  # tag refers to the Rasa X image tag (uses `appVersion` by default)
  tag: "0.42.5"
  # 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: "123456"
  ## 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: *****

  trackerStore:
    # optional dictionary to be added as a query string to the connection URL
    query: {}
    #  driver: my-driver
    #  sslmode: require
  # 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
      securityContext:
        runAsUser: 1
        fsGroup: 1

      # 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:
    # command overrides the default command to run in the init container
    command: []
    # resources which initContainer is required / allowed to use
    resources: {}
  # 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: "rasa/rasa-x-demo"
  # tag refers to the custom action server image tag
  tag: "0.38.0"
  # 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: false
  # 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: {}

Can anyone give me step by step instruction how to do this, i would really appreciate!

Hello @ aymane258

the simplest way would be

  • pull the recent rasa docker image locally
  • run it and install dashbot via pip
  • commit the modified docker image locally
  • push the container to dockerhub or another container registry of your liking
  • update the helm chart to pull your modified docker image

follow this step by step guide for guidance on the process

Thanks its installed now, I do get crashes on production and worker pod but thats a different issue ty: )

1 Like