Skip to main content

Setting up Rig on EKS on Amazon Web Services

Prerequisites

This guide assumes you have a running EKS cluster with the AWS Load Balancer Controller installed. This guide by AWS shows how to setup a simple cluster and sample application with the Load Balancer Controller installed as well.

Besides just having an EKS cluster up and running, your kubectl should have its current context pointing to your cluster. Here you can see how to get that.

Installing the Rig Operator

We install the Rig Operator using Helm. We need one piece of AWS specific configuration to make Ingress work such that your Capsules and Rig Platform is reachable on the Internet. AWS EKS has their own Ingress controller, the Amazon Load Balancer (ALB) Controller mentioned in Prerequisites. The Rig Operator needs to be instructed how it generates Ingress resources such that they fit with the ALB. This we do through our Routes plugin. The following Helm values configure it to work with the ALB.

Helm values - Operator
config:
pipeline:
routesStep:
plugin: rigdev.ingress_routes
config: |
ingressClassName: alb
# The ALB handles TLS outside the cluster
disableTLS: true
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing

This makes all Ingress resources generated by the Rig Operator be an ALB type Ingress which exposes its host as internet facing, making it reachable outside the cluster.

Save the values file as operator.yaml

helm upgrade --install rig-operator rig-operator \
--repo https://charts.rig.dev \
--version 1.0.44 \
--namespace rig-system \
--create-namespace \
-f operator.yaml

Installing the Rig Platform

We also install the Rig Platform using Helm. The Rig Platform depends on a PostgreSQL database. You can choose to connect your own, managed PostgreSQL (recommended for production setups) or spin up a small, in-cluster one (should only be for development setups). Besides that, enabling ingress will spin up an Ingress resource which will receive a host onto which you can access the Platform.

ingress:
host: ""
enabled: true

# Uncomment if you want to use the small, in-cluster development database
# postgres:
# enabled: true
## AWS specific storage class
# storage:
# className: ebs-sc

# Uncomment if you want to use your own managed database
# client:
# postgres:
# database: "rig" ## change if different database is used.
# host: <host or ip>
# user: <db user>
# password: <db password>
# # insecure: false ## set only if DB connection is insecure

Save the config as platform.yaml and run

helm upgrade --install rig-platform rig-platform \
--repo https://charts.rig.dev \
--version 1.0.70 \
--namespace rig-system \
--create-namespace \
-f platform.yaml

After installing the platform, running

kubectl get ingress -n rig-system

should show the Ingress resource associated to the Rig Platform

NAME                        CLASS   HOSTS   ADDRESS                                      PORTS   AGE
rig-platform-rig-platform alb * k8s-rigsyste-rigplatf- .... .amazonaws.com 80 81m

After a few minutes the adress should be available and take you to the Rig Platform start page.

Rig Platform start page

To get accesss to the Platform you also need a Rig account which you can setup by running

kubectl exec -it -n rig-system deploy/rig-platform -- rig-admin init

after which you can log in on the Dashboard using the account you just created.

Creating a Capsule with a public host

Now that we have the Platform up and running, we can create our first Capsule and give it a publicly reachable host. We will do this through the Dashboard.

1
1
Click Create Project and create a new project.

You now have a basic setup on AWS EKS with Rig running and utilizing the Amazon Load Balancer. From the AWS console you can see the loadbalancers created.

1
1
From the AWS console, search for EC2