Run Airy Core on AWS with Terraform
The goal of this document is to provide a step-by-step guide to setting up Airy Core
on a Kubernetes Cluster using the infrastructure-as-code tool Terraform. Terraform takes care of provisioning, updating, and cleaning up virtual resources.
note
Currently, we only support the AWS Elastic Kubernetes Service (AWS-EKS) as a provider. Terraform modules for other providers (and on different architectures) such as Google Cloud and Digital Ocean will soon be added.
#
Requirements#
ArchitectureThe local file structure for the installation is as follows:
The installation takes place in two steps, each in a separate Terraform environment organized by directories:
/[PROVIDER]
(default =aws-eks
) - where you create the cluster.
/airy-core
- whereAiry Core
is installed on the cluster.
In each directory, the main.tf
is the root module of a remote parent module of the same name in our GitHub repository (airy/infrastructure/terraform/modules).
#
Install step by stepnote
When you run a cloud installation with the Airy CLI with airy create --provider cloud-provider
, the CLI will run all the following steps in a sequence. Currently, only the AWS EKS (aws-eks) provider is supported.
If you already have a cluster installed without Terraform, i.e. via Helm, skip Step 4 and place the Kubernetes config file in the installation directory. Remember to specify the location of this file in the main.tf
of airy-core
.
#
1. Create Airy WorkspaceCreate a directory with an airy.yaml
and cli.yaml
file. If you skip this step, the CLI will create it for you.
#
2. Create the installation directory inside Airy Workspace#
3. Set up files inside Installation DirectoryCopy/Download airy-core
and the relevant provider directory from airy/infrastructure/terraform/install.
This can be done by git clone git@github.com:airyhq/airy.git
and then moving the relevant files.
Or grab the files inside your installation directory directly (and select the provider directory).
#
4. Create Kubernetes Clusternote
Every provider has its own requirements for creating and accessing the Kubernetes cluster. For AWS check the following requirements.
Change into your /[PROVIDER]
directory.
This will ask for the provider environmental variables, in the case of AWS: aws_profile
and aws_region
. You can provide these values when prompted on the Command Line or do one of the following alternatives:
- export them as AWS_REGION and AWS_PROFILE,
- export them as TF_VAR_aws_region and TF_VAR_aws_profile,
- store them, in a
terraform.tfvars
file in the same provider directory.
This step will take time, depending on the provider and architecture. Provisioning a full Kubernetes Cluster takes between 5 - 10 mins. On completion, it will output a kube.conf
in the installation directory.
#
5. Install Airy on ClusterTerraform will look for a Kube Config to connect to the cluster provisioned in Step 4. (or which you already have provisioned), and helm
install airy-core
onto it.
This will output a link to your UI, API, and source URLs.
#
6. Verify the installationConnect to your new instance using kube.conf
file inside your installation directory.
kubectl get pods --kubeconfig ./kube.conf
To uninstall, simply run terraform destroy
in the airy-core
directory first, and then once again in the PROVIDER
directory.
#
Uninstall step by stepFor uninstalling Airy you need to destroy both of the environments that you have created. First destroy the airy-core
environment:
Then destroy the PROVIDER environment:
#
Install and uninstall using a scriptIn the airy/infrastructure/terraform/install, there are scripts:
install.sh
uninstall.sh
install.flags
These scripts provide a simple interface for the installation/uninstallation process. They are also used by the Airy CLI and are useful to check the file structure as well as ensure correct install/uninstall order.