Document custom load balancer usage

Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
This commit is contained in:
Nicolas De Loof 2020-11-18 11:53:37 +01:00
parent e6d7871290
commit c7752c1f87
No known key found for this signature in database
GPG Key ID: 9858809D6F8F6E7E
1 changed files with 37 additions and 1 deletions

View File

@ -348,7 +348,42 @@ of a VPC when deploying a Compose application.
- Use `x-aws-loadbalancer` as a top-level element in your Compose file to set - Use `x-aws-loadbalancer` as a top-level element in your Compose file to set
the ARN of an existing LoadBalancer. the ARN of an existing LoadBalancer.
- Use `external: true` inside a network definition in your Compose file for The latter can be used for those who want to customize application exposure, typically to
use an existing domain name for your application:
1. Use AWS web console or CLI to get your VPC and Subnets IDs. You can typically retrieve default VPC ID and attached subnets using this AWS CLI commands:
```console
➜ aws ec2 describe-vpcs --filters Name=isDefault,Values=true --query 'Vpcs[0].VpcId'
"vpc-123456"
➜ aws ec2 describe-subnets --filters Name=vpc-id,Values=vpc-123456 --query 'Subnets[*].SubnetId'
[
"subnet-1234abcd",
"subnet-6789ef00",
]
```
1. Use AWS CLI to create your load balancer. The AWS Web Console can also be used but will require to assing at least one listener, which we don't need here.
```console
➜ tutu aws elbv2 create-load-balancer --name myloadbalancer --type application --subnets "subnet-1234abcd" "subnet-6789ef00"
{
"LoadBalancers": [
{
"IpAddressType": "ipv4",
"VpcId": "vpc-123456",
"LoadBalancerArn": "arn:aws:elasticloadbalancing:us-east-1:1234567890:loadbalancer/app/myloadbalancer/123abcd456",
"DNSName": "myloadbalancer-123456.us-east-1.elb.amazonaws.com",
...
```
1. To assign your application an existing domain name, you can configure your DNS with a
CNAME entry pointing to just-created loadbalancer's `DNSName` reported as you created the loadbalancer.
1. Use Loadbalancer ARN to set `x-aws-loadbalancer` in your compose file, and deploy your application using `docker compose up` command.
Please note Docker ECS integration won't be aware of this domain name, so `docker compose ps` command will report URLs with loadbalancer DNSName, not your own domain.
You also can use `external: true` inside a network definition in your Compose file for
Docker Compose CLI to _not_ create a Security Group, and set `name` with the Docker Compose CLI to _not_ create a Security Group, and set `name` with the
ID of an existing SecurityGroup you want to use for network connectivity between ID of an existing SecurityGroup you want to use for network connectivity between
services: services:
@ -360,6 +395,7 @@ networks:
name: "sg-1234acbd" name: "sg-1234acbd"
``` ```
## Local simulation ## Local simulation
When you deploy your application on ECS, you may also rely on the additional AWS services. When you deploy your application on ECS, you may also rely on the additional AWS services.