Amazon Web Services
Learn how to deploy Beam OSS (Beta9) to Amazon EKS.
Prerequisites
- Amazon EKS
- Karpenter
- Helm and kubectl
- Beta9 CLI
Dependencies
Beta9 uses an S3-compatible object storage system for its file system. In this example, we’ll deploy localstack.
Without a Localstack license, its data is temporary. If its pod is deleted, the data will be lost. We recommend that you use AWS S3 or something similar.
Install Helm Chart
Install the helm chart and open connections to the service.
Configure the CLI
Create a new config.
Confirm the config was created and has a token set.
Setting Configuration Values
Setup your config file. You will need to set a few values in here and create a secret in your cluster, under the beta9
namespace.
Recommended Settings
Mounting Secrets
Once you’ve configured the config and created a secret in K8s, you’ll need to do two more things:
- Mount the secret to the gateway by modifying the persistence value in the
values.yaml
file. - Add an env var to the gateway called
CONFIG_PATH
that points to where you are mounting the secret.
IAM Policies
To access the S3 bucket that you need to setup and configure in the config/secret, you’ll need to also setup an IAM role that a K8s service account can authenticate with.
This is called EKS IRSA. Once you figure this out, you’ll need to add an annotation to the K8s service account that points to their IAM role.
Here is an example in the values.yaml
file:
We recommend saving secrets with the External Secrets Operator, but you can also create secrets manually in the cluster.
To create a secret manually, create your secrets file on disk and run kubectl apply
like you would normally.
Gotchas
- Make sure your ingress supports GRPC and HTTP
- Your IAM permissions need to be set correctly. You will need to create S3 buckets manually or in Terraform.
- If you are using Karpenter for your autoscaler, you’ll need to add a label to the nodes which you want the Beta9 scheduler to pick up.
Was this page helpful?