-
Notifications
You must be signed in to change notification settings - Fork 134
Environments
Casey Lee edited this page Oct 26, 2018
·
22 revisions
Environments are defined to become a target for deploying services to. Each environment is a CloudFormation stack consisting of the following resources:
- VPC – To provide the network infrastructure to launch the ECS container instances into. Optionally, you can target an existing VPC.
- ECS Cluster – The cluster that the services will be deployed into.
- Auto Scaling Group – To manage the ECS container instances that contain the compute resources for running the containers. Auto scaling policies will be defined based on memory entitlements in the cluster.
- Application Load Balancer – To provide load balancing for the microservices running in containers.
The VPC that mu creates is shown in the diagram below:
---
### Define a list of environments
environments:
# The unique name of the environment (required)
- name: acceptance
provider: ecs # The type of environment to use, ec2, eks, ecs, or ecs-fargate (default: ecs)
### Attributes for the ECS container instances
cluster:
imageId: ami-xxxxxx # The AMI to use for the ECS container instances (default: latest ECS optimized AMI)
osType: amazon # Type of OS. Supported values: amazon, centos7 (default: amazon)
instanceType: t2.micro # The instance type to use for the ECS container instances (default: t2.micro)
instanceTenancy: default # Whether to use default or dedicated tenancy (default: default)
desiredCapacity: 1 # Desired number of ECS container instances (default 1)
keyName: my-keypair # name of EC2 keypair to associate with ECS container instances. Launches bastion host if defined. (default: none)
sshAllow: 0.0.0.0/0 # CIDR block to allow SSH access from (default: 0.0.0.0/0)
httpProxy: 10.0.0.43:8080 # Host and port to use for HTTP proxy for yum, docker images, and ECS (default: none)
targetCPUReservation: 75 # Threshold for % CPU utilization to scale out ECS container instances (default: 75)
targetMemoryReservation: 75 # Threshold for % memory utilization to scale in ECS container instances (default: 75)
minSize: 1 # Min size to scale the ECS ASG to (default: 1)
maxSize: 2 # Max size to scale the ECS ASG to (default: 2)
### Attributes for the ELB
loadbalancer:
internal: true # Whether to create an internal ELB or not (default: false)
hostedzone: mydomain.com # HostedZone in Route53 to create ELB DNS for. Leave blank to not create DNS (default: none)
name: api # Name to register in hostedzone for ELB DNS. (default: environment name)
certificate: 973c1a2f-8d43... # The identifier of a certificate in ACM. If defined, will create HTTPS listener in ELB. (default: none)
### Attributes for Service Discovery
discovery:
provider: route53 # Which provider to use for service discovery: `route53` is currently the only supported provider (default: route53)
name: acceptance.mu.local # What namespace to use for service discovery (default <environment>.<namespace>.local)
### Attributes for the VPC to target. If not defined, a VPC will be created. (default: none)
vpcTarget:
vpcId: vpc-xxxxx # The id of the VPC to launch ECS container instances into
instanceSubnetIds: # The list of subnets to use for ECS container instances
- subnet-xxxxx
- subnet-xxxxy
- subnet-xxxxz
elbSubnetIds: # The list of subnets to use for ELBs
- subnet-xxxxx
- subnet-xxxxy
- subnet-xxxxz
# List all environments
> mu env list
# Show details about a specific environment (ECS container instances, Running services, etc)
> mu env show <environment_name>
# View the logs from EC2 instances in your cluster
> mu env logs [--follow] <environment_name> [filter]
# Upsert an environment
> mu env up <environment_name>
# Terminate an environment
> mu env terminate <environment_name>