-
Notifications
You must be signed in to change notification settings - Fork 475
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NE-406: ingress: Add aws-elb-idle-timeout enhancement #461
NE-406: ingress: Add aws-elb-idle-timeout enhancement #461
Conversation
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: Miciah The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
061987e
to
9a0f9ac
Compare
Issues go stale after 90d of inactivity. Mark the issue as fresh by commenting If this issue is safe to close now please do so with /lifecycle stale |
Stale issues rot after 30d of inactivity. Mark the issue as fresh by commenting If this issue is safe to close now please do so with /lifecycle rotten |
Rotten issues close after 30d of inactivity. Reopen the issue by commenting /close |
@openshift-bot: Closed this PR. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
/reopen |
@Miciah: Reopened this PR. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
Issues go stale after 90d of inactivity. Mark the issue as fresh by commenting If this issue is safe to close now please do so with /lifecycle stale |
Stale issues rot after 30d of inactivity. Mark the issue as fresh by commenting If this issue is safe to close now please do so with /lifecycle rotten |
Rotten enhancement proposals close after 7d of inactivity. See https://github.com/openshift/enhancements#life-cycle for details. Reopen the proposal by commenting /close |
@openshift-bot: Closed this PR. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
/reopen |
@Miciah: Reopened this PR. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
/remove-lifecycle rotten |
9a0f9ac
to
504a5c4
Compare
504a5c4
to
14009aa
Compare
Route annotation for the application's Route: | ||
|
||
```shell | ||
oc patch -n my-project routes/my-route haproxy.router.openshift.io/timeout=5m |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is supposed to be the annotate
command right? patch doesn't work like this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall 👍, comments are just nits or ideas. It's harder for me to judge based on design precedents because of my lack of experience with openshift API, but the methods listed here are sound.
be added: | ||
|
||
1. Create an IngressController that specifies a short timeout (for example, 10 seconds). | ||
2. Create a pod with a simple HTTP application that sends static responses. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit semantics I think you also need to specify it intentionally holds a connection open so it does indeed timeout, but I understand what you are getting at here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point, this test plan has problems. When I wrote this test plan way back when, I had in mind that the client would open the connection and wait before sending the request. I realize now that the client would reach the tcp-request inspect-delay
timeout of 5 seconds with this approach. I've updated the test plan to say that the client sends a request and the server imposes a delay for the response.
field of the corresponding IngressController to the desired value to restore the | ||
configuration. Otherwise, the default ELB timeout period remains in effect | ||
after an upgrade. Because modifying operator-managed resources is generally | ||
unsupported, it should suffice to address this issue through a release note. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree here 👍
annotation on operator-managed Services. This would require less work to | ||
implement. However, an explicit API can be more easily validated. | ||
Additionally, allowing users to set the annotation would set a precedent of | ||
allowing users to modify operator-managed resources, which we want to avoid. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I also add the idea of centralized configuration. In our current version, you'd turn on the classic load balance service via spec.endpointPublishingStrategy.loadBalancer.providerParameters.aws.classicLoadBalancer
, but then users need to go tweak the timeout on a different object (service) that is created after you enable the classic load balancer. This enhancement seems more congruent to me. You configure it where you turn enable it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! Very good point. I've added it to the enhancement.
annotation on operator-managed Services. This would require less work to | ||
implement. However, an explicit API can be more easily validated. | ||
Additionally, allowing users to set the annotation would set a precedent of | ||
allowing users to modify operator-managed resources, which we want to avoid. |
This comment was marked as duplicate.
This comment was marked as duplicate.
Sorry, something went wrong.
14009aa
to
9f0ffa7
Compare
Changes look good to me @Miciah thanks! |
9f0ffa7
to
3feb104
Compare
3feb104
to
b070b03
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, just one comment that need not hold up the PR but, equally, curious about the answer.
IngressController's | ||
`spec.endpointPublishingStrategy.loadBalancer.providerParameters.aws.classicLoadBalancer.connectionIdleTimeout` | ||
field to `5m` or longer, and the project administrator must similarly set a | ||
Route annotation for the application's Route: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the connection idle timeout value is set and you forget (or omit) the route setting is there any feedback that the latter hasn't been done?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, there is no feedback. Application developers usually shouldn't need to worry about this sort of thing anyway; configuring timeouts on routes is an advanced use-case.
/lgtm |
/approve |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: frobware 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 |
@Miciah: all tests passed! Full PR test history. Your PR dashboard. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here. |
This enhancement extends the IngressController API to allow the user to configure the timeout period for idle connections to an IngressController that is published using an AWS Classic Elastic Load Balancer.