Deploying Antidote into Production

This is NOT the guide for running a local instance of Antidote. That can be found in the build local instructions. These instructions are if you wish to leverage the Terraform and Ansible scripts to get a production-quality instance of Antidote running in the cloud.

Prerequisites

  • Git
  • Terraform
  • Ansible

Infrastructure Setup

Follow the instructions for installing the Google Cloud SDK, and then run these commands to authenticate:

gcloud auth login
gcloud auth application-default login
gcloud config set compute/zone us-west1-b
gcloud config set compute/region us-west1

You will also want to set up a billing account, and write down the billing account ID (you can find this on the [billing console](https://console.cloud.google.com/billing)). You’ll need that when we run terraform.

Make sure to clone this repo so you can get access to the Terraform configs and Ansible playbooks for provisioning the environment:

git clone https://github.com/nre-learning/antidote && cd antidote

All of Antidotes infrastructure is defined in Terraform configurations. So we just need to run terraform apply:

Note

At this point, Terraform will prompt you to provide the billing account ID you just retrieved in the previous step. It goes without saying but NOTE THAT THIS WILL MAKE CHANGES IN YOUR ENVIRONMENT. Review the output of terraform apply or terraform plan to determine the scope of the changes you’re making:

cd infrastructure/
terraform apply

Once terraform creates all of the necessary resources, we first need to do a little manual work. We need to create an A record in the GCE dashboard for vip.labs.networkreliability.engineering, and add all of the provisioned NAT IPs (external) for each of the instances in the workers instance group. Do this before moving on. Eventually this will be replaced with a proper load balancing setup.

Next, bootstrap the cluster:

./bootstrapcluster.sh

Platform Setup

Next we need to start the services that will power Antidote. At this point, you should now be able to run kubectl commands. Verify with:

kubectl get nodes

Enter the platform directory and execute the shell script to upload all of the platform kubernetes manifests:

cd ../platform/
./bootstrapplatform.sh

Note

may need to restart the coredns pods

Cleaning Up

As expected, clean up with terraform destroy