DEV Community

Ezzio Moreira
Ezzio Moreira

Posted on

8

Stack Grafana deployed on AWS ECS -Part 1 - Create a Cluster

This post is part of a series about the stack Grafana deployed on AWS ECS. This project is a simple MVP.

In part 1, we will set up our cluster ECS and LoadBalance.

AWS ECS: is a container orchestration that helps us to deploy, manage, and scale applications.

Pre-Requirements

  • Knowledge with Terraform
  • AWS Account
    • 2 subnets publics, with tag: tier = public
    • 2 subnets private, with tag: tier = private

AWS VPC

We need the following structure for AWS VPC. We'll get ID the subnets privates with the Terraform DataSource.

Image description

Remember the add tag tier = private for private subnets.

Image description

Remember the add tag tier = public for public subnets.

Image description

ECS Cluster Type

Currently, there are three types of the ECS cluster. Cluster EC2 instance, serverless Fargate, and on-primeses VM.

Consult the AWS documentations for more details. https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-configuration.html

We'll use the ECS EC2 cluster for this MVP.

Create ECS Cluster

You can use this Terraform module to create cluster ECS.

Below an example how to use this module. That will provide a cluster ECS type of EC2, and Application LoadBalance.



####################################################################################################
### ECS Cluster o11y ###
####################################################################################################

module "ecs_cluster" {
source = "https://github.com/EzzioMoreira/aws-terraform-module//modules/ecs-cluster?ref=v0.0.1-ecs-cluster-alb"

cluster_name = "ecs-cluster-example"
min_size = 1
max_size = 2
desired_size = 1
instance_type = "t3a.medium"
vpc_id = "vpc-xxxxxxxx"
tags = {
created_by = "terraform"
documentation = "null"
env = "prod"
repository = "ezziomoreira/aws-terraform-modules"
service = "observability"
team = "sre"
}
}

####################################################################################################
### Loadbalance o11y ###
####################################################################################################
module "loadbalance" {
source = "https://github.com/EzzioMoreira/aws-terraform-module//modules/loadbalance?ref=v0.0.1-ecs-cluster-alb"

name = "ecs-cluster-example-internal"
type = "application"
internal = true
subnet_ids = ["subnet-xyxyx", "subnet-yxyxyx"]
security_group_ids = [sg-123123123]
tags = {
created_by = "terraform"
documentation = "null"
env = "prod"
repository = "ezziomoreira/aws-terraform-modules"
service = "observability"
team = "sre"
}
}

Enter fullscreen mode Exit fullscreen mode




References

Image of Datadog

The Essential Toolkit for Front-end Developers

Take a user-centric approach to front-end monitoring that evolves alongside increasingly complex frameworks and single-page applications.

Get The Kit

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay