AWS Elastic Container Services (ECS) - Via Opsera

Opsera provides the ability to integrate with the tasks and management provided around the Elastic Container Services in AWS in multiple ways. Users can take advantage of Octopus based iterations through Opsera (see our Octopus documentation) or natively through direct Opsera to AWS integration. This native integration allows for both a more simplified experience with interacting with AWS and also provides more security and structure to the interactions. Tasks around creating clusters can be restricted behind our RBAC mechanisms and then deployment of updated containers can be managed through our pipelines directly. This creates a more secure and easily repeatable process for managing ECS in AWS.

The Opsera integration with AWS ECS is broken into two compontents: creation, management and excuection of tasks (Opsera Tasks) for managing the clusters and then direct pipeline steps (Opsera Pipelines) to publish containers. The two aspects are necessary to work together in order to complete the functionality. Listed below are details on how to perform all of the tasks in Opsera.

 

AWS ECS Service Creation workflow requires setup in both Tasks and Pipeline. Service Creation and deployment require the latest image URL in order to deploy. This is generated during pipeline runtime. The workflow is separated into two parts where the user enters certain static information in the Tasks page and then links the task to the respective Docker step in the pipeline.

Task Setup Instructions:
  1. Select Create AWS ECS Service from the Type drop down. Once this has been selected, the following values will be fetched for selection:

    • AWS Tool - Select an established AWS tool from the Tool Registry.

    • Required Compatibility - Select Fargate or EC2.

    • Cluster Name - Select a Cluster Name fetched from the AWS portal.

    • Existing VPC - Select an existing VPC from the list of values fetched from the AWS portal.

    • Desired Count - Select the amount of deployments desired.

    • Load Balancer ARN - Select a Load Balancer ARN from the list of values fetched from the AWS portal.

    • Execution Role ARN - Select a Load Balancer ARN from the list of values fetched from the AWS portal.

    • Subnets - Select 2 subnets from list of values fetched from the AWS portal.

  2. Select Save to create a template.

Once the task has been created, it can be linked to a Docker step in the pipeline.

To set up an ECS Service Pipeline pipeline, create 3 pipeline steps: Build, Docker ECR Push and AWS ECS Deploy

  • Build

  • Docker ECR Push - Create a new pipeline step

    • Initial Setup: Create new pipeline step using Docker ECR Push as Tool and Save

    • Step Configuration:

      • Jenkins Tool - Select a Jenkins tool from the Tool Registry.

      • Jenkins Job - DOCKER PUSH (must be created in selected Jenkins Tool)

      • AWS Credentials - Select an AWS account configured in Opsera Tool Registry

      • Build Step Info - Build

      • ECR Repository - Use an existing Repository or create a new one.

  • AWS ECS Deploy - Create new pipeline step using AWS ECS Deploy as Tool.

    • Docker Step - Create a name.

    • Service Task - Fetched from AWS ECS Service Tasks

    • Generate Dynamic Service Name toggle - currently not working, when it works the port name will not have to be changed for every pipeline run.

    • Dynamic Name Prefix

    • Service Name Example - User has option to dynamically generate service names on runtime as AWS does not allow two services to have the same name. The user can give a prefix to the service and the pipeline will generate a unique service name with the prefix and the run count when the pipeline runs.

    • Service Container Port - This is the location where service will be deployed. *currently, service port must be changed for every pipeline run.

AWS ECS Service Creation Help Documentation

 

Service Creation workflow requires setup in both Task and Pipeline. The reason for this is that Service Creation and deployment requires the latest image URL in order to deploy and that is generated during pipeline runtime. The workflow is separated into two parts where the user enters certain static information in the Tasks page and then links the task to the respective Docker step in the pipeline. The following step refers to the setup in Task.

AWS ECS Service Creation Setup - Tasks

Similar to ECS Cluster Creation, ECS Service creation templates can also be created via the Tasks tab.

  1. Navigate to Tasks and click +Create New Task

  2. Click Create AWS ECS Service from the Type drop down menu.

  3. This then presents user with options that are required for service creation:

  • AWS Tool - Configured in Tool Registry

  • Required Compatibility

  • Cluster Name

  • Existing VPC

  • Desired Count - This is the count of deployments desired. Creation of the number of cluster replications. Number replications of the image that we are going to deploy

  • Service Log Group - any created name

  • Load Balancer ARN

  • Execution Role ARN

  • Subnets - Add 2 subnets from drop down.

Once this Task template is created, a pipeline can now be setup using this Task. Deployment requires the latest image URL in order to deploy and that is generated during pipeline runtime.

AWS ECS Service Creation Setup - Pipeline

To set up an ECS Service pipeline, create 3 pipeline steps: Build, Docker ECR Push and AWS ECS Deploy.

  • Build

  • Docker ECR Push - Create a new pipeline step

    • Initial Setup: Create new pipeline step using Docker ECR Push as Tool and Save

  • Step Configuration:

    • Jenkins Tool -

    • Jenkins Job - DOCKER PUSH (must be created in selected Jenkins Tool)

    • AWS Credentials - Select an AWS account configured in Opsera Tool Registry

    • Build Step Info - Build

    • ECR Repository - Use an existing Repository or create a new one.

 

  • AWS ECS Deploy - Create new pipeline step using AWS ECS Deploy as Tool.

     

    • Docker Step - Create a name.

    • Service Task - Fetched from AWS ECS Service Tasks

    • Generate Dynamic Service Name toggle - AWS does not allow users to have 2 services with the same name, so the prefix entered in Dynamic Name Prefix field below will be used in the deploy with the run count as the name so that the name changes with every new run.

    • Dynamic Name Prefix - Select a unique name to be used for each service run.

    • Service Name Example - User has option to dynamically generate service names on runtime as AWS does not allow two services to have the same name. The user can give a prefix to the service and the pipeline will generate a unique service name with the prefix and the run count when the pipeline runs.

    • Service Container Port - This is the location where service will be deployed.