Configuration
Configuring Values in a Deployment
You can start a deployment with a predefined configuration by using the --values-file flag to pass a file with configuration, e.g. rasactl start --values-file values.yaml.
Configurable Values
rasactl uses the Rasa X Helm chart to deploy Rasa X. Therefore the same values that apply to a Helm chart installation apply to a rasactl installation.
Applying Changes
To change values for an existing Rasa X deployment:
Set the relevant values in
values.yml.Upgrade the deployment:
rasactl upgrade --values-file values.yml
If you have multiple deployments, specify the deployment that you want to customize:
rasactl upgrade deployment-name --values-file values.yml
To list all available deployments use the rasactl list command.
Common Customizations
Use a Specific Rasa X / Enterprise Version
You can configure a Rasa X deployment to use a specific Rasa X version.
Create a
values.yamlfile with the following content:rasax: tag: "1.0.0" eventService: tag: "1.0.0" dbMigrationService: tag: "1.0.0"Apply the values to the deployment:
rasactl upgrade --values-file values.yml
Deploy Rasa X with a Defined Password
By default, the password for a Rasa X user (the admin user) is rasaxlocal.
You can use the --rasa-x-password flag to define the user password while creating a new deployment.
You can use the --rasa-x-password-stdin flag if you want to read the password from STDIN.
rasactl start --rasa-x-password my-password
Enable TLS
Requirements
- Your deployment must be available at a domain (not a bare IP address). If you started your deployment using
rasactl starton your local machine, you can use theURLreturned byrasactl status. If you use a VM with a dynamic external IP address, use a static one to avoid IP address rotation and assign a domain to it. - Your deployment must be accessible on ports
80and443.
Steps
Install cert-manager via helm.
helm repo add jetstack https://charts.jetstack.io helm repo update helm install \ cert-manager jetstack/cert-manager \ --namespace cert-manager \ --create-namespace \ --version v1.5.3 \ --set installCRDs=trueCreate a Basic ACME Issuer.
You will need to create a cluster-issuer.yaml file that contains a specification for the cluster issuer. In the example below Let's Encrypt is used as the certificate issuer.
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt
spec:
acme:
email: user@example.com # You must replace this email address with your own.
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: example-issuer-account-key
solvers:
- http01:
ingress:
class: nginx
Then create the ClusterIssuer resource:
kubectl create -f cluster-issuer.yaml
- Configure your Rasa X / Enterprise deployment.
You will need to upgrade your deployment so that a new TLS certificate can be issued for your domain. First, update your deployments values to include configuration for an Ingress resource.
ingress:
enabled: true
annotations:
cert-manager.io/cluster-issuer: letsencrypt
hosts:
- host: your-domain.com
paths:
- /
tls:
- secretName: rasa-x-tls
hosts:
- your-domain.com
nginx:
enabled: false
Then apply the changes by upgrading your deployment:
rasactl upgrade --values-file values.yaml
After the configuration is applied, you should be able to access your deployment over HTTPS.
You can execute the rasactl status command to check a URL and if HTTPS is enabled.
$ rasactl status
Name: quirky-jang
Status: Running
URL: https://rasa-x.example.com
Version: 1.0.4
Enterprise: inactive
Rasa production version: 0.0.0
Rasa worker version: 0.0.0
Project path: not defined
Share your bot running locally
To share your bot you’ll need to make your locally running Rasa X server available to external traffic. You can do this using ngrok.
You can download and install ngrok for free. Once it is installed, open a new terminal window and run:
Determine URL for your deployment by executing the
rasactl statuscommand.$ rasactl status Name: inspiring-albattani Status: Running URL: http://inspiring-albattani.rasactl.localhost Version: 1.0.4 Enterprise: inactive Rasa production version: 0.0.0 Rasa worker version: 0.0.0 Project path: not definedRun
ngrok.ngrok http -host-header=inspiring-albattani.rasactl.localhost inspiring-albattani.rasactl.localhost
This will create a public HTTPS URL for your locally running Rasa X server, given that it is running at the default port (if not, change the command above).
You should see something like this:
Session Status online
Session Expires 1 hour, 58 minutes
Version 2.3.40
Region Europe (eu)
Web Interface http://127.0.0.1:4040
Forwarding http://3c3f-2a02-2454-25a-d700-5147-7d98-d4c4-e178.eu.ngrok.io -> http://inspiring-albattani.rasactl.localhost:80
Forwarding https://3c3f-2a02-2454-25a-d700-5147-7d98-d4c4-e178.eu.ngrok.io -> http://inspiring-albattani.rasactl.localhost:80
To share your bot, replace the http://inspiring-albattani.rasactl.localhost portion of your share your bot link with the HTTPS forwarding address from ngrok. Your link should look like this:
https://3c3f-2a02-2454-25a-d700-5147-7d98-d4c4-e178.eu.ngrok.io/guest/conversations/production/29fbd34c2a06481f . From there you can follow the instructions for sharing your bot as usual.
Keep in mind that ngrok has limits on free usage and this is not a production set up.
Accessing Secrets
This section describes how to retrieve secrets from your running deployment. The following secrets are created by default
| description | default secret name |
|---|---|
| PostgreSQL database password | postgresql |
| Redis lock store and cache password | redis |
| RabbitMQ event broker password | rabbit |
To view the plaintext value of a secret, run the following, replacing <your deployment name> and <your release name> with your deployment and the name of your release:
secret=<secret name>
namespace=<your deployment name>
release_name=<your release name>
kubectl --namespace ${namespace} \
get secret ${release_name}-${secret} -o yaml \
| awk -F ': ' '/password/{print $2}' | base64 -d
For example, if you want to see the value of the redis secret for a release called rasa-x in the local namespace:
$ secret=redis
$ namespace=local
$ release_name=rasa-x
$ kubectl --namespace ${namespace} get secret ${release_name}-${secret} -o yaml \
| awk -F ': ' '/password/{print $2}' | base64 -d
redis-password
If you’re not sure what deployment name or release name your deployment runs under, you can use the following commands to find out. To list the available deployments, run:
```bash
rasactl list
And to list the releases under a particular deployment, run:
rasactl status <deployment-name> --details
The release name can be found in the Helm release field.