Skip to main content

Run Airy Core on AWS with Terraform

Create a cluster and run Airy Core using 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.


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.



The local file structure for the installation is as follows:

[Airy Workspace Directory]

The installation takes place in two steps, each in a separate Terraform environment organized by directories:

    1. /[PROVIDER] (default = aws-eks) - where you create the cluster.
    1. /airy-core- where Airy Core is installed on the cluster.

In each directory, the is the root module of a remote parent module of the same name in our GitHub repository (airy/infrastructure/terraform/modules).

Install step by step


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 of airy-core.

1. Create Airy Workspace

Create 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

mkdir terraform

3. Set up files inside Installation Directory

Copy/Download airy-core and the relevant provider directory from airy/infrastructure/terraform/install.

This can be done by git clone and then moving the relevant files. Or grab the files inside your installation directory directly (and select the provider directory).

$ cd terraform
$ svn export
$ svn export[PROVIDER]

4. Create Kubernetes Cluster


Every provider has its own requirements for creating and accessing the Kubernetes cluster. For AWS check the following requirements.

Change into your /[PROVIDER] directory.

$ terraform init
$ terraform apply

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 Cluster

$ cd ../airy-core
$ terraform init
$ terraform apply

Terraform 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 installation

Connect 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 step

For uninstalling Airy you need to destroy both of the environments that you have created. First destroy the airy-core environment:

$ cd ../airy-core
$ terraform destroy

Then destroy the PROVIDER environment:

$ terraform destroy

Install and uninstall using a script

In the airy/infrastructure/terraform/install, there are scripts:

  • 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.