Skip to content

Add docs for new docker for aws ELB HTTPS protocol feature#3945

Merged
mdlinville merged 3 commits intodocker:vnext-enginefrom
kencochrane:aws_elb_https
Jul 26, 2017
Merged

Add docs for new docker for aws ELB HTTPS protocol feature#3945
mdlinville merged 3 commits intodocker:vnext-enginefrom
kencochrane:aws_elb_https

Conversation

@kencochrane
Copy link
Contributor

Proposed changes

I added some documentation for a new feature that is added to docker for aws 17.07.0 related to the AWS ELB

Signed-off-by: Ken Cochrane kencochrane@gmail.com

/cc @FrenchBen @ddebroy @friism

Signed-off-by: Ken Cochrane <kencochrane@gmail.com>

### HTTPS vs SSL load balancer protocols

The elastic load balancer allows you to configure which protocol your listener will support. Originally, only `TCP` and `SSL` was supported. This was limiting because when you use `TCP` or `SSL` it doesn't include the HTTP headers that most applications use to determine the requestor's original IP address. `TCP` and `SSL` does support the [Proxy Protocol](http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/enable-proxy-protocol.html#proxy-protocol), but most applications aren't setup to support it.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think the docs should have the history of the product embedded, but it's great we cover the trade-offs between the two options and proxy-protocol stuff.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Open to suggestions, but I feel it is important to let people know how it used to work and how it works now, so they are not confused with the change. We can remove this once it becomes a standard feature in a stable release.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Docker for AWS version 17.07.0 and later also support the HTTPS listener protocol when using ACM certificates.

Use the HTTPS protocol if your app relies on checking the `X-Forwarded-For` header for resolving the client IP address. Note that the client IP is also available with `SSL` by using the [Proxy Protocol](http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/enable-proxy-protocol.html#proxy-protocol), but many apps and app frameworks don't support this.

The only valid options are `HTTPS` and `SSL`. Specifying any other value will cause `SSL` to be selected. For backwards compatibility the default protocol is `SSL`.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks


The elastic load balancer allows you to configure which protocol your listener will support. Originally, only `TCP` and `SSL` was supported. This was limiting because when you use `TCP` or `SSL` it doesn't include the HTTP headers that most applications use to determine the requestor's original IP address. `TCP` and `SSL` does support the [Proxy Protocol](http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/enable-proxy-protocol.html#proxy-protocol), but most applications aren't setup to support it.

Starting with `Docker for AWS 17.07.0` it is now possible to specify if you want `HTTPS` or `SSL` as the load balancer protocol when using an ACM certificate. If you do not specify the protocol it will default to `SSL (TCP)` so that it is backwards compatible with older versions. The only valid options are `HTTPS` or `SSL`, if you put any other value, it will default to `SSL`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think ideally we should error on invalid input. A user (not having read these docs) providing invalid input and getting back SSL might surmise that there's a bug in the product.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The problem is there is no place to show the error, it is in the l4controller on the master node so it is hidden. Better to default to something and still work, then break silently and be confusing for the person.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, I see - +1

com.docker.aws.lb.arn="arn:...@443"
```

#### A SSL (TCP) listener on port 443
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move with the above header, as an equivalent to @SSL:443

Copy link
Contributor

@FrenchBen FrenchBen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small comment, otherwise LGTM

Signed-off-by: Ken Cochrane <kencochrane@gmail.com>
Copy link
Contributor

@ddebroy ddebroy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Signed-off-by: Ken Cochrane <kencochrane@gmail.com>
@kencochrane
Copy link
Contributor Author

@friism better?

@friism
Copy link
Contributor

friism commented Jul 24, 2017

lgtm!

@mdlinville
Copy link

mdlinville commented Jul 26, 2017

This relies upon a version of Docker that is not yet released, and needs to be based on the vnext-engine branch. I updated the PR.

@mdlinville mdlinville changed the base branch from master to vnext-engine July 26, 2017 17:24
@mdlinville mdlinville merged commit ab5c418 into docker:vnext-engine Jul 26, 2017
@kencochrane
Copy link
Contributor Author

@mstanleyjones thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants