notice

This is documentation for Rasa X Documentation v1.0.x, which is no longer actively maintained.
For up-to-date documentation, see the latest version (1.1.x).

Version: 1.0.x

Installation

Installation

This page contains detailed instructions for bootstrapping a AWS EKS Cluster (K8S) via eksctl.

For more information on eksctl visit the official Weavenet eksctl Page

Configure EKS Cluster

Create the file rasa-x.yaml for eksctl

Please change the values region / availabilityZones / name (Clustername) accordingly if needed.

cat << EOF > rasa-x.yaml
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: rasa-x-eksctl
region: eu-central-1
version: "1.19"
availabilityZones: ["eu-central-1a", "eu-central-1b"]
managedNodeGroups:
- name: nodegroup
desiredCapacity: 3
instanceType: t3.medium
EOF

Create EKS Cluster

Create the EKS cluster via eksctl:

eksctl create cluster -f rasa-x.yaml

This takes 15-20 around minutes. When it completes, the new cluster will be added to your ~/.kube/config file and set as the current context for kubectl.

2021-09-09 13:57:27 [ℹ] using region eu-central-1
2021-09-09 13:57:27 [ℹ] subnets for eu-central-1a - public:192.168.0.0/19 private:192.168.64.0/19
2021-09-09 13:57:27 [ℹ] subnets for eu-central-1b - public:192.168.32.0/19 private:192.168.96.0/19
2021-09-09 13:57:27 [ℹ] nodegroup "nodegroup" will use "" [AmazonLinux2/1.19]
2021-09-09 13:57:27 [ℹ] using Kubernetes version 1.19
2021-09-09 13:57:27 [ℹ] creating EKS cluster "rasa-x-eksctl-rev3" in "eu-central-1" region with managed nodes
2021-09-09 13:57:27 [ℹ] 1 nodegroup (nodegroup) was included (based on the include/exclude rules)
2021-09-09 13:57:27 [ℹ] will create a CloudFormation stack for cluster itself and 0 nodegroup stack(s)
2021-09-09 13:57:27 [ℹ] will create a CloudFormation stack for cluster itself and 1 managed nodegroup stack(s)
2021-09-09 13:57:27 [ℹ] if you encounter any issues, check CloudFormation console or try 'eksctl utils describe-stacks --region=eu-central-1 --cluster=rasa-x-eksctl'
2021-09-09 13:57:27 [ℹ] CloudWatch logging will not be enabled for cluster "rasa-x-eksctl" in "eu-central-1"
2021-09-09 13:57:27 [ℹ] you can enable it with 'eksctl utils update-cluster-logging --enable-types={SPECIFY-YOUR-LOG-TYPES-HERE (e.g. all)} --region=eu-central-1 --cluster=rasa-x-eksctl'
2021-09-09 13:57:27 [ℹ] Kubernetes API endpoint access will use default of {publicAccess=true, privateAccess=false} for cluster "rasa-x-eksctl-rev3" in "eu-central-1"
2021-09-09 13:57:27 [ℹ] 2 sequential tasks: { create cluster control plane "rasa-x-eksctl", 3 sequential sub-tasks: { wait for control plane to become ready, 1 task: { create addons }, create managed nodegroup "nodegroup" } }
2021-09-09 13:57:27 [ℹ] building cluster stack "eksctl-rasa-x-eksctl-cluster"
2021-09-09 13:57:28 [ℹ] deploying stack "eksctl-rasa-x-eksctl-cluster"
2021-09-09 13:57:58 [ℹ] waiting for CloudFormation stack "eksctl-rasa-x-eksctl-cluster"
2021-09-09 14:13:38 [ℹ] building managed nodegroup stack "eksctl-rasa-x-eksctl-nodegroup-nodegroup"
2021-09-09 14:13:38 [ℹ] deploying stack "eksctl-rasa-x-eksctl-rev3-nodegroup-nodegroup"
2021-09-09 14:13:38 [ℹ] waiting for CloudFormation stack "eksctl-rasa-x-eksctl-nodegroup-nodegroup"
2021-09-09 14:18:58 [ℹ] waiting for the control plane availability...
2021-09-09 14:18:58 [✔] saved kubeconfig as "/home/dsa/.kube/config"
2021-09-09 14:18:58 [ℹ] no tasks
2021-09-09 14:18:58 [✔] all EKS cluster resources for "rasa-x-eksctl" have been created
2021-09-09 14:18:59 [ℹ] nodegroup "nodegroup" has 3 node(s)
2021-09-09 14:18:59 [ℹ] node "ip-192-168-1-253.eu-central-1.compute.internal" is ready
2021-09-09 14:18:59 [ℹ] node "ip-192-168-41-41.eu-central-1.compute.internal" is ready
2021-09-09 14:18:59 [ℹ] node "ip-192-168-48-196.eu-central-1.compute.internal" is ready
2021-09-09 14:18:59 [ℹ] waiting for at least 3 node(s) to become ready in "nodegroup"
2021-09-09 14:18:59 [ℹ] nodegroup "nodegroup" has 3 node(s)
2021-09-09 14:18:59 [ℹ] node "ip-192-168-1-253.eu-central-1.compute.internal" is ready
2021-09-09 14:18:59 [ℹ] node "ip-192-168-41-41.eu-central-1.compute.internal" is ready
2021-09-09 14:18:59 [ℹ] node "ip-192-168-48-196.eu-central-1.compute.internal" is ready
2021-09-09 14:21:02 [ℹ] kubectl command should work with "/home/dsa/.kube/config", try 'kubectl get nodes'
2021-09-09 14:21:02 [✔] EKS cluster "rasa-x-eksctl" in "eu-central-1" region is ready

Deploy NGINX ingress with NetworkLoadBalancer

To make RASA X available over the internet we will deploy NGINX Ingress with a NetworkLoadBalancer.

The following command will deploy NGINX Ingress and create the NetworkLoadBalancer.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-0.32.0/deploy/static/provider/aws/deploy.yaml

Check with kubectl afterwards that everything is deployed and running:

$ kubectl -n ingress-nginx get pods
NAME READY STATUS RESTARTS AGE
ingress-nginx-admission-create-tjr52 0/1 Completed 0 55m
ingress-nginx-admission-patch-rmlnk 0/1 Completed 0 55m
ingress-nginx-controller-98f46f89d-w8l8m 1/1 Running 0 55m

Check that the NetworkLoadBalancer got allocated and assigned:

$ kubectl -n ingress-nginx get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.100.187.239 af6e0b3f4129d483db5dd01b60e76056-ec0064f8a93a6fed.elb.eu-central-1.amazonaws.com 80:30622/TCP,443:30015/TCP 57m
ingress-nginx-controller-admission ClusterIP 10.100.232.160 <none> 443/TCP 57m

Please follow the instructions to install Rasa X using the Rasa X Helm chart next.

Once you have installed Rasa X via the Helm chart, you will see the the NetworkLoadBalancer linked with the referring Ingress exposed.

kubectl get ing -A
Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
NAMESPACE NAME CLASS HOSTS ADDRESS PORTS AGE
rasa-x rasa-x <none> rasa-eks.rasa.com af6e0b3f4129d483db5dd01b60e76056-ec0064f8a93a6fed.elb.eu-central-1.amazonaws.com 80 12m
rasa-x rasa-x-rasa-open-source-api <none> rasa-eks.rasa.com af6e0b3f4129d483db5dd01b60e76056-ec0064f8a93a6fed.elb.eu-central-1.amazonaws.com 80 9m17s
rasa-x rasa-x-rasa-open-source-channels <none> rasa-eks.rasa.com af6e0b3f4129d483db5dd01b60e76056-ec0064f8a93a6fed.elb.eu-central-1.amazonaws.com 80 9m16s

Finally, create a CNAME Record with your designated FQDN to the NetworkLoadBalancer CNAME record.

Next Steps