Using Helm to Install Rasa X

Let's go through all the commands needed to install Rasa X on Kubernetes by using Helm.

Video

So let's go over all the steps you need to run to get Rasa X up and running on a VM using kind to run kubernetes on our behalf.

Content

Step 1: Create a Cluster

kind create cluster

Step 2: Create a Namespace for Rasa X

kubectl create namespace rasax

Step 3: Create a values.yml file.

Next we need to create a values.yml file that will hold all of our settings for the helm installation. Note that in our example below we're using the same password for everything. For a demo this is fine but for a real-life deployment you'll want to use a different password for each service.

# rasax specific settings
rasax:
# initialUser is the user which is created upon the initial start of Rasa X
initialUser:
# password for the Rasa X user
password: "merely-for-demo-purposes"
# passwordSalt Rasa X uses to salt the user passwords
passwordSalt: "merely-for-demo-purposes"
# token Rasa X accepts as authentication token from other Rasa services
token: "merely-for-demo-purposes"
# jwtSecret which is used to sign the jwtTokens of the users
jwtSecret: "merely-for-demo-purposes"
tag: "0.42.0"
# rasa: Settings common for all Rasa containers
rasa:
# token Rasa accepts as authentication token from other Rasa services
token: "merely-for-demo-purposes"
tag: "2.8.0-full"
# RabbitMQ specific settings
rabbitmq:
# rabbitmq settings of the subchart
rabbitmq:
# password which is used for the authentication
password: "merely-for-demo-purposes"
# global settings of the used subcharts
global:
# postgresql: global settings of the postgresql subchart
postgresql:
# postgresqlPassword is the password which is used when the postgresqlUsername equals "postgres"
postgresqlPassword: "merely-for-demo-purposes"
# redis: global settings of the redis subchart
redis:
# password to use in case there no external secret was provided
password: "merely-for-demo-purposes"

Step 4: Use Helm to Install Rasa X on Cluster

helm repo add rasa-x https://rasahq.github.io/rasa-x-helm
helm install --generate-name --namespace rasax --values values.yml rasa-x/rasa-x

Step 5: Connect Ports

If you want to connect Rasa X to the outside world, you need to open the ports to the Kubernetes cluster. The main port you'll want to connect to is the port connected to the nginx pod. You'll first need to find out what the name of the corresponding pod is. You can use kubectl get pods to find out.

> kubectl --namespace rasax get pods
NAME                                                READY   STATUS    RESTARTS   AGE
rasa-x-1627907752-app-699f86d8db-kb7nd              1/1     Running   0          11m
rasa-x-1627907752-db-migration-service-0            1/1     Running   1          11m
rasa-x-1627907752-duckling-6c5686c848-j9ctl         1/1     Running   0          11m
rasa-x-1627907752-event-service-78696d7df7-l2k8n    1/1     Running   0          11m
rasa-x-1627907752-nginx-7f6fc46df6-gcnlz            1/1     Running   0          11m
rasa-x-1627907752-postgresql-0                      1/1     Running   0          11m
rasa-x-1627907752-rabbit-0                          1/1     Running   0          11m
rasa-x-1627907752-rasa-production-5f5bbd4ff-g6wdb   1/1     Running   0          11m
rasa-x-1627907752-rasa-worker-5f8cfdf766-wmjrd      1/1     Running   0          11m
rasa-x-1627907752-rasa-x-96b74b7bd-zkkbd            1/1     Running   0          11m
rasa-x-1627907752-redis-master-0                    1/1     Running   0          11m

We observere the name rasa-x-1627907752-nginx-7f6fc46df6-gcnlz here. The name that you observe is likely different from the one shown in this tutorial so make sure you double check. Given that we know where to connect to, we can now open the ports by port-forwarding.

kubectl --namespace rasax port-forward svc/rasa-x-1629279392-rasa-x 5002:5002

You should now be able to connect to Rasa X at http://localhost:5002. Note that the command you'll need to use is likely going to be different because your deployment may have a different name for the rasa-x service.

Exercises

Try to answer the following questions to test your knowledge.

  1. Is it possible to customise a Helm deployment of Rasa X?
  2. If you're using helm to deploy pods, why might you still want to use kubectl from time to time?

2016-2022 © Rasa.