Wallaroo Enterprise AWS EKS Setup Instructions
The following instructions are made to assist users set up their Amazon Web Services (AWS) environment for running Wallaroo Enterprise using AWS Elastic Kubernetes Service (EKS).
These represent a recommended setup, but can be modified to fit your specific needs.
Installation Flow
A typical installation of Wallaroo Enterprise follows this flow:
- Create Environment: Create the environment to install Wallaroo that meets the system prerequisites.
- Install Wallaroo: Install Wallaroo into the target environment.
- Configure DNS: Configure DNS services and the Wallaroo instance for your organization’s use.
AWS Prerequisites
To install Wallaroo in your AWS environment based on these instructions, the following prerequisites must be met:
-
Register an AWS account: https://aws.amazon.com/ and assign the proper permissions according to your organization’s needs.
-
The Kubernetes cluster must include the following minimum settings:
- Nodes must be OS type Linux with using the
containerd
driver. - Role-based access control (RBAC) must be enabled.
- Minimum of 4 nodes, each node with a minimum of 8 CPU cores and 16 GB RAM. 50 GB will be allocated per node for a total of 625 GB for the entire cluster.
- RBAC is enabled.
- Recommended Aws Machine type:
c5.4xlarge
. For more information, see the AWS Instance Types.
- Nodes must be OS type Linux with using the
-
Installed eksctl version 0.101.0 and above.
Environment Software Requirements
Running Wallaroo has two sets of software requirements:
- Environment Requirements: The following software must be installed on the environment that will be running Wallaroo version. Most are automatically available through the supported cloud providers.
- Kubernetes Version 1.18 to 1.23.
- Kubernetes Version
1.20
is the minimum requirement1.21
is preferred for versions of Wallaroo released before July 2022.1.22
:- Is preferred for versions of Wallaroo after the July 2022 release (code name Simca) and beyond.
- Is not supported for versions of Wallaroo released before July 2022.
1.23
:- Is the preferred version for Wallaroo version 2022.4.
- Is not supported for versions of Wallaroo released before Wallaroo version 2022.4.
- Kubernetes Version
- Runtime: containerd is required.
- Kubernetes Version 1.18 to 1.23.
- Kubernetes Admin Requirements: The following software must be installed in the system where the Kubernetes environment is being managed - aka where
kubectl
andkots
will be installed. This requires the following software be installed to manage the Kubernetes environment:kubectl
: https://kubernetes.io/docs/tasks/tools/- If using kots for installation:
- Version
1.91.3
: Preferred for Wallaroo versions 2022.4 and later. - Version
1.81.0
: Preferred for Wallaroo versions before 2022.4 and after the August 2022 release. - Version
1.70.1
: Preferred for versions of Wallaroo before the August 2022 release.
- Version
- If using helm for installation:
helm
: Install Helmkrew
: Install Krewkrew preflight
andkrew support-bundle
.
- If using kots for installation:
Environment Software Requirements
Running Wallaroo has two sets of software requirements:
- Environment Requirements: The following software must be installed on the environment that will be running Wallaroo version. Most are automatically available through the supported cloud providers.
- Kubernetes Version 1.18 to 1.23.
- Kubernetes Version
1.20
is the minimum requirement1.21
is preferred for versions of Wallaroo released before July 2022.1.22
:- Is preferred for versions of Wallaroo after the July 2022 release (code name Simca) and beyond.
- Is not supported for versions of Wallaroo released before July 2022.
1.23
:- Is the preferred version for Wallaroo version 2022.4.
- Is not supported for versions of Wallaroo released before Wallaroo version 2022.4.
- Kubernetes Version
- Runtime: containerd is required.
- Kubernetes Version 1.18 to 1.23.
- Kubernetes Admin Requirements: The following software must be installed in the system where the Kubernetes environment is being managed - aka where
kubectl
andkots
will be installed. This requires the following software be installed to manage the Kubernetes environment:kubectl
: https://kubernetes.io/docs/tasks/tools/- If using kots for installation:
- Version
1.91.3
: Preferred for Wallaroo versions 2022.4 and later. - Version
1.81.0
: Preferred for Wallaroo versions before 2022.4 and after the August 2022 release. - Version
1.70.1
: Preferred for versions of Wallaroo before the August 2022 release.
- Version
- If using helm for installation:
helm
: Install Helmkrew
: Install Krewkrew preflight
andkrew support-bundle
.
- If using kots for installation:
Recommendations
IMPORTANT NOTE
<p>Organizations that intend to stop and restart their Kubernetes environment on an intentional or regular basis are recommended to use a single availability zone for their nodes. This minimizes issues such as persistent volumes in different availability zones, etc.</p>
Organizations that intend to use Wallaroo Enterprise in a high availability cluster are encouraged to follow best practices including using separate availability zones for redundancy, etc.
Custom Configurations
Wallaroo can be configured with custom installations depending on your organization’s needs. The following options are available:
- Install Wallaroo to Specific Nodes: How to specify what nodes in a Kubernetes cluster to install Wallaroo to.
- Install Wallaroo with Minimum Services: How to install Wallaroo with reduced services to fit into a lower-resource environment.
- Taints and Tolerances Guide: How to configure Wallaroo for specific taints and tolerances so ensure that only Wallaroo services are running in specific nodes.
AWS Environment Setup Steps
The following steps are guidelines to assist new users in setting up their AWS environment for Wallaroo. Feel free to replace these with commands with ones that match your needs.
These commands make use of the command line tool eksctl which streamlines the process in creating Amazon Elastic Kubernetes Service clusters for our Wallaroo environment.
The following are used for the example commands below. Replace them with your specific environment settings:
- AWS Cluster Name:
wallarooAWS
Create an AWS EKS Cluster
The following eksctl
configuration file is an example of setting up the AWS environment for a Wallaroo cluster, including the static and adaptive nodepools. Adjust these names and settings based on your organizations requirements.
IMPORTANT NOTE
This sample YAML file can be downloaded from here:
Enterprise Cluster
The following is based on the requirements for Wallaroo Enterprise, including support for adaptive nodepools:
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: wallarooAWS
region: us-east-1
version: "1.23"
nodeGroups:
- name: mainpool
instanceType: m5.2xlarge
desiredCapacity: 3
containerRuntime: containerd
amiFamily: AmazonLinux2
availabilityZones:
- us-east-1a
- name: postgres
instanceType: m5.2xlarge
desiredCapacity: 1
taints:
- key: wallaroo.ai/postgres
value: "true"
effect: NoSchedule
containerRuntime: containerd
amiFamily: AmazonLinux2
availabilityZones:
- us-east-1a
- name: engine-lb
instanceType: c5.4xlarge
minSize: 1
maxSize: 3
taints:
- key: wallaroo.ai/enginelb
value: "true"
effect: NoSchedule
tags:
k8s.io/cluster-autoscaler/node-template/label/k8s.dask.org/node-purpose: engine-lb
k8s.io/cluster-autoscaler/node-template/taint/k8s.dask.org/dedicated: "true:NoSchedule"
iam:
withAddonPolicies:
autoScaler: true
containerRuntime: containerd
amiFamily: AmazonLinux2
availabilityZones:
- us-east-1a
- name: engine
instanceType: c5.2xlarge
minSize: 1
maxSize: 3
taints:
- key: wallaroo.ai/engine
value: "true"
effect: NoSchedule
tags:
k8s.io/cluster-autoscaler/node-template/label/k8s.dask.org/node-purpose: engine
k8s.io/cluster-autoscaler/node-template/taint/k8s.dask.org/dedicated: "true:NoSchedule"
iam:
withAddonPolicies:
autoScaler: true
containerRuntime: containerd
amiFamily: AmazonLinux2
availabilityZones:
- us-east-1a
Create the Cluster
Create the cluster with the following command, which creates the environment and sets the correct Kubernetes version.
eksctl create cluster -f wallaroo_enterprise_aws_install.yaml
During the process the Kubernetes credentials will be copied into the local environment. To verify the setup is complete, use the kubectl get nodes
command to display the available nodes as in the following example:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-192-168-21-253.us-east-2.compute.internal Ready <none> 13m v1.23.8-eks-9017834
ip-192-168-30-36.us-east-2.compute.internal Ready <none> 13m v1.23.8-eks-9017834
ip-192-168-38-31.us-east-2.compute.internal Ready <none> 9m46s v1.23.8-eks-9017834
ip-192-168-55-123.us-east-2.compute.internal Ready <none> 12m v1.23.8-eks-9017834
ip-192-168-79-70.us-east-2.compute.internal Ready <none> 13m v1.23.8-eks-9017834
ip-192-168-37-222.us-east-2.compute.internal Ready <none> 13m v1.23.8-eks-9017834
Install Wallaroo
With the environment prepared, Wallaroo can now be installed.
Step | Status |
---|---|
Setup Environment
|
COMPLETED! |
Install Wallaroo Enterprise | Install Wallaroo into a prepared environment |
Integrate Wallaroo with DNS Services | Update Wallaroo post-install |