Skip to content
This repository has been archived by the owner on Mar 14, 2022. It is now read-only.

AWS & Deployment Selections

Erin Fahy edited this page Apr 9, 2018 · 4 revisions

Overview

TACO is deployed as a Docker container to AWS' Elastic Container Service (ECS) via CircleCI. The ECS environment consists of an infrastructure cluster, a taco service, and a container/task definition which is configured via Terraform. CircleCI, when triggered for a deployment, builds and tags a new image, registers the image with Taco's Docker Hub Repo, registers a new task definition with ECS, then updates the taco ECS service.

Deployment

CircleCI was chosen for its Dockerfile like syntax to create isolated testing and/or deployment environments. This allows for any action to be performed within a configured container without any existing providers. For example, deployments to ECS are performed by installing and configuring the AWS cli and running aws ecs commands within the container.

CircleCI also allows for complex workflows for separate testing and deployment actions with optional dependencies. TACO's deployment workflow is currently triggered one of two ways:

  • any change to master branch
  • pushing a tag matching /v[0-9]+(\.[0-9]+)*(-demo)/ from any branch

AWS

All ECS resources are managed in DLSS' terraform-aws private GitHub repo. It provides the VPC for the demo environment, roles required by ECS, the deployer role that CircleCI uses to configure the AWS cli for deployments, the infrastructure ECS cluster (that creates a public application load balancer and log group in CloudWatch for the cluster), the TACO service, and initializes TACO's container definitions.

ECS resources in Terraform is currently deployed to the us-east-1 AWS region in order to leverage the new serverless Fargate launch type for ECS. The identifier-service and permissions-service services will also be deployed to the infrastructure cluster in the near future.