Deployment example

This is an example TF stack demonstrating the principles described in this RFC.

Usage

Setup

You will need to create the stack and populate the ECR repositories.

# Create the stack
terraform apply

# Populates ECR repos with images
./deploy.sh

You should receive a list of the images in ECR:

{
    "imageIds": [
        {
            "imageDigest": "sha256:4fe8827f51a5e11bb83afa8227cbccb402df840d32c6b633b7ad079bc8144100",
            "imageTag": "prod"
        },
        {
            "imageDigest": "sha256:afe605d272837ce1732f390966166c2afff5391208ddd57de10942748694049d",
            "imageTag": "hash_2"
        },
        {
            "imageDigest": "sha256:4fe8827f51a5e11bb83afa8227cbccb402df840d32c6b633b7ad079bc8144100",
            "imageTag": "hash_1"
        }
    ]
}

You can see there are 2 images (notice the matching digests) under 3 tags. By default hash_1 is tagged prod.

Check the state

You can then run check.sh to view the current state of deployments.

This lists the image digests in use by the services current tasks, along with the digest currently tagged "prod".

Deploy

You can choose to deploy hash_2 as follows:

This will update the image tags so that hash_2 is tagged prod and a redeployment is forced.

Again you can check the status of the deployment by running check.sh.

If you check while the transition is occuring you may see both tasks available with the new image_id task replacing the old.

Last updated