Requirements
To deploy Studio with Helm you need:- Rasa Account: An enterprise Rasa account as well as Rasa and Rasa Studio license keys.
- LLM API Key: OpenAI API key or credentials for another LLM.
- Helm: An installed version of Helm
>=3.8.0. - Kubernetes Cluster: A running Kubernetes cluster. To create a cluster, see documentation on Google Cloud Platform, AWS, and Azure.
- kubectl: A working installation to manage your cluster. To install kubectl, see documentation on Google Cloud Platform, AWS, and Azure.
Get Started
Step 1: Pull the official Studio helm chart
You can run the below-mentioned command to pull the latest version chart from Rasa’s Google Artifact Registry.studio-1.0.3.tgz) to your machine. Extract this file to see the chart templates and values.yaml file.
For the complete documentation of the Helm Chart, see Studio Helm Chart.
Step 2: Create a value file
A value file contains the configuration options and parameters for the Helm chart. You can customize these options based on your requirements. A samplevalues.yaml file is available in the Studio Helm Chart. The file can be seen if you extract the .tgz chart file you downloaded from the Google Artifact Registry. Follow these steps to create your value file:
- Make a copy of
values.yamlfile which can be found inside extracted chart directory. Let us call itmy-values.yaml. This file will serve as your custom value file. - Open
my-values.yamlin a text editor and modify the configuration options according to your needs. Ensure that you review and update values related to the way your Kubernetes cluster is set up. The chart’s readme file will provide you with all the keys that are available with their default values. - Set the public hostname in Expose Try your assistant, then save and close
my-values.yaml.
Expose Try your assistant
Try your assistant opens a WebSocket from the browser to the Rasa Pro model server. The browser is outside the cluster, so that address has to be a public hostname. The path is/talk.
The chart writes this address into RASA_MODEL_SERVER_BASE_URL on the model server:
host is rasa.rasa.ingress.hostName when that value is set. Otherwise host is config.ingressHost.
If you copied the chart’s values.yaml, set the public hostname on config.ingressHost and keep the &dns_hostname anchor. In that file, rasa.rasa.ingress.hosts uses *dns_hostname, so the /talk ingress stays on the same host.
copied values.yaml
&dns_hostname inside the chart’s values.yaml before it merges an override. A small values file that sets only config.ingressHost leaves rasa.rasa.ingress.hosts[0].host as INGRESS.HOST.NAME. The browser URL then uses your hostname, and the /talk ingress still serves the placeholder, so Try your assistant fails. Set the same hostname on that host and keep the /talk path. Helm replaces the hosts list, so the override has to include the path:
override values.yaml
config.ingressClassName to the ingress class installed in the cluster, such as nginx. If rasa.rasa.ingress.hostName is set, the chart uses it as host instead of config.ingressHost. A Kubernetes Service name in hostName is the address the browser will request. Set hostName to the same public hostname, or remove it so config.ingressHost applies.
Each component keeps the path the chart assigns:
rasa.enabled and rasa.rasa.ingress.enabled default to true. Keep both enabled when Studio runs the bundled Rasa Pro. That model server’s Service name is rasapro.
config.connectionType is the scheme the chart writes into RASA_MODEL_SERVER_BASE_URL. The default is http. Keep http when the ingress terminates TLS and pods call each other over HTTP. https in that setup makes the backend fail to authenticate to Keycloak.
The ingress for /talk must forward WebSocket upgrade requests. On OpenShift, the route for /talk must pass WebSocket traffic. Annotations for the Studio ingresses go in config.ingressAnnotations. Annotations for /talk go in rasa.rasa.ingress.annotations.
MS_API_URL is the address the Studio backend uses to reach Rasa Pro inside the cluster. The default is http://rasapro. Set it when you turn off the bundled Rasa Pro and point Studio at a Rasa Pro Service you run yourself.
After deployment, open Try your assistant. The browser should request wss://studio.example.com/talk/.... A request to an in-cluster Service name, including a name that ends in -model-service, fails with ERR_NAME_NOT_RESOLVED. Studio can still load, because the web client uses a different ingress. Put the public hostname in config.ingressHost and on the /talk ingress, and confirm the ingress or OpenShift route for /talk forwards WebSocket traffic.
Studio Helm chart 1.xThese charts deploy a separate model running service. Its in-cluster Service name is
model-running-service. Leave modelService.running.proxy.botTalkSubPath at /talk.On 1.0.0 through 1.2.2, config.ingressHost sets the /talk ingress host and the address handed to the browser. The shipped value is rasa.bot.com. modelService.running.orchestrator.ingress.hosts[0].host is not read.On 1.2.3 through 1.2.6, set modelService.running.orchestrator.ingress.hostName to the public hostname. When hostName is empty, the chart uses config.ingressHost.Studio Helm chart 2.7.0 uses the rasa subchart and the Service name rasapro. When the hostname in the browser matches neither rasapro nor model-running-service, compare it with the values.yaml from the chart version you installed.Step 3: Create Kubernetes secrets
To store sensitive values mentioned in the above section it is recommended to create Kubernetes secrets. To create them- Make a copy of the
secrets.yamlfile which can be found inside extracted chart directory. Let us call itmy-secrets.yaml. - Create base64 encoded values of the secrets and update the yaml file with them. You can run
echo -n "my-secret-key" | base64to quickly createbase64encoded values of your secrets. - Once all the secrets are updated run
kubectl apply -f my-secrets.yaml -n <namespace>. This creates the Kubernetes secret in the namespace where you plan to deploy Studio. - These secrets are then referenced and passed onto the pods inside the cluster when Studio is deployed with
my-values.yamlfile created in the previous step.
- Helm Chart v2.2.1 and above
- Helm Chart v2.1.9 and below
Step 4: Deploy Rasa Studio using Helm
With the Helm chart and value file prepared, you are ready to deploy Rasa Studio in your Kubernetes cluster. Run the following command:<release-name>: The name for your Rasa Studio release ie. rasa-studio.
<path-to-chart-folder>: The path to the extracted folder of the tgz file you obtained by downloading the chart from the Google Artifactory registry.
<path-to-value-file>: The path to your custom value file my-values.yaml
<namespace>: The Kubernetes namespace you want to deploy to.
Example command:
Step 5: Monitor deployment and access Rasa Studio
Once the deployment is complete, you can monitor the deployment status by running:https://<ingressHost>, using the hostname from Expose Try your assistant.
For further information on advanced configuration options and maintenance tasks, refer to the Rasa Studio Helm charts documentation (README.md in the downloaded Helm chart and inline comments in values.yaml file) and the official Helm documentation.
🎉 That’s it! You can now proceed to activate your license