Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign upAdd http/2 support for haproxy router. #19968
Conversation
openshift-ci-robot
added
the
size/XS
label
Jun 11, 2018
openshift-ci-robot
requested review from
pweil- and
smarterclayton
Jun 11, 2018
knobunc
assigned
ironcladlou
Jun 12, 2018
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
/hold |
openshift-ci-robot
added
the
do-not-merge/hold
label
Jun 12, 2018
knobunc
approved these changes
Jun 12, 2018
/lgtm
Can you add a docs PR for the environment variable please?
openshift-ci-robot
assigned
knobunc
Jun 12, 2018
openshift-ci-robot
added
the
lgtm
label
Jun 12, 2018
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
openshift-ci-robot
Jun 12, 2018
[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: knobunc, ramr
The full list of commands accepted by this bot can be found here.
The pull request process is described here
images/router/OWNERS[knobunc]
Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment
openshift-ci-robot
commented
Jun 12, 2018
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: knobunc, ramr The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
openshift-ci-robot
added
the
approved
label
Jun 12, 2018
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
@knobunc ack on submitting a docs PR. |
| @@ -219,6 +219,7 @@ frontend fe_sni | ||
| {{- if isTrue (env "ROUTER_STRICT_SNI") }} strict-sni {{ end }} | ||
| {{- ""}} crt {{firstMatch ".+" .DefaultCertificate "/var/lib/haproxy/conf/default_pub_keys.pem"}} | ||
| {{- ""}} crt-list /var/lib/haproxy/conf/cert_config.map accept-proxy | ||
| {{- if isTrue (env "ROUTER_ENABLE_HTTP2") }} alpn h2,http/1.1{{ end }} |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
pravisankar
Jun 12, 2018
Contributor
Do we really need ROUTER_ENABLE_HTTP2 env when we know that protocol downgrade happen automatically based on the client?
pravisankar
Jun 12, 2018
Contributor
Do we really need ROUTER_ENABLE_HTTP2 env when we know that protocol downgrade happen automatically based on the client?
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
ramr
Jun 12, 2018
Contributor
It is intentionally disabled by default as per the requirements in the trello card: https://trello.com/c/qzvlzuyx/27-3-implement-router-http-2-support-terminating-at-the-router-router (Acceptance criteria bullet 1)
Edited trello link pointer
ramr
Jun 12, 2018
•
Contributor
It is intentionally disabled by default as per the requirements in the trello card: https://trello.com/c/qzvlzuyx/27-3-implement-router-http-2-support-terminating-at-the-router-router (Acceptance criteria bullet 1)
Edited trello link pointer
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
ironcladlou
Jun 13, 2018
Member
What is the underlying justification of the cited requirement for a new piece of config? What are the specific risks of always enabling http2? When would a user want to disable it?
ironcladlou
Jun 13, 2018
Member
What is the underlying justification of the cited requirement for a new piece of config? What are the specific risks of always enabling http2? When would a user want to disable it?
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
ramr
Jun 13, 2018
Contributor
So as re: your questions:
3. The flag is flipped ... in that it is disabled by default and has to be explicitly enabled by the user/admin.
2. I don't see risks to always enable http2 as we do downgrade the connections to http/1.x if http/2 is not supported but that said one reason I can see is this is a new feature (and so interactions with different/older clients are something to also consider) - making it more prudent to have a flag that enables it as needed.
- @knobunc can probably more on the cited requirement. Suspect it might be 2 but ...
ramr
Jun 13, 2018
Contributor
So as re: your questions:
3. The flag is flipped ... in that it is disabled by default and has to be explicitly enabled by the user/admin.
2. I don't see risks to always enable http2 as we do downgrade the connections to http/1.x if http/2 is not supported but that said one reason I can see is this is a new feature (and so interactions with different/older clients are something to also consider) - making it more prudent to have a flag that enables it as needed.
- @knobunc can probably more on the cited requirement. Suspect it might be 2 but ...
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
knobunc
Jun 14, 2018
Contributor
Yeah, it's new in haproxy and there have already been security vulnerabilities around it. I want to let it soak for a while before turning it on all the time.
knobunc
Jun 14, 2018
Contributor
Yeah, it's new in haproxy and there have already been security vulnerabilities around it. I want to let it soak for a while before turning it on all the time.
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
ramr
Jun 12, 2018
Contributor
@pravisankar as re: your question on the call, to test protocol downgrade to as example http/1.0, use -0 with curl.
E.g. curl -0 -k -vvv --resolve reencrypt.header.test:443:127.0.0.1 https://reencrypt.header.test/
|
@pravisankar as re: your question on the call, to test protocol downgrade to as example http/1.0, use |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
Associated docs PR: openshift/openshift-docs#10057 |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
smarterclayton
Jun 12, 2018
Member
When would we enable this by default? How do we get enough soak testing on this to enable by default?
|
When would we enable this by default? How do we get enough soak testing on this to enable by default? |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
knobunc
Jun 12, 2018
Contributor
@smarterclayton I'd enable it on int then starter in 3.11 and if all is well, enable by default in 3.12.
|
@smarterclayton I'd enable it on int then starter in 3.11 and if all is well, enable by default in 3.12. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
/hold cancel |
openshift-ci-robot
removed
the
do-not-merge/hold
label
Jun 27, 2018
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
/retest |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
openshift-bot
Jun 28, 2018
/retest
Please review the full test history for this PR and help us cut down flakes.
openshift-bot
commented
Jun 28, 2018
|
/retest Please review the full test history for this PR and help us cut down flakes. |
3 similar comments
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
openshift-bot
Jun 28, 2018
/retest
Please review the full test history for this PR and help us cut down flakes.
openshift-bot
commented
Jun 28, 2018
|
/retest Please review the full test history for this PR and help us cut down flakes. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
openshift-bot
Jun 28, 2018
/retest
Please review the full test history for this PR and help us cut down flakes.
openshift-bot
commented
Jun 28, 2018
|
/retest Please review the full test history for this PR and help us cut down flakes. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
openshift-bot
Jun 28, 2018
/retest
Please review the full test history for this PR and help us cut down flakes.
openshift-bot
commented
Jun 28, 2018
|
/retest Please review the full test history for this PR and help us cut down flakes. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
/retest |
1 similar comment
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
/retest |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
/test gcp |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
flake #19679 |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
/test gcp |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
/retest |
ramr commentedJun 11, 2018
Adds http2 support for haproxy.
Ref: https://trello.com/c/qzvlzuyx/27-3-implement-router-http-2-support-terminating-at-the-router-router
To run:
Test:
You should see that the protocol negotiation (between haproxy and the client) uses HTTP2 and there's a new header sent to the backend
x-forwarded-proto-version: h2.@ironcladlou @knobunc PTAL thx