e2e/loadbalancer: added hairpin connection cases#1161
e2e/loadbalancer: added hairpin connection cases#1161k8s-ci-robot merged 1 commit intokubernetes:masterfrom
Conversation
|
This issue is currently awaiting triage. If cloud-provider-aws contributors determine this is a relevant issue, they will accept it by applying the The DetailsInstructions 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-sigs/prow repository. |
|
Hi @mtulio. Thanks for your PR. I'm waiting for a kubernetes member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. DetailsInstructions 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-sigs/prow repository. |
|
/ok-to-test |
CI infra issue. /test pull-cloud-provider-aws-e2e |
a623f3d to
5099f7f
Compare
|
I am observing a permanent failure on CI when launching the cluster trying to use an image that is no longer available: Hi @kmala @elmiko, do you know if is this comes from the test framework or is it possible to use a valid image in CCM repo? |
|
An issue has been opened to track the CI problem: #1167 |
|
looks like pull-cloud-provider-aws-e2e is running (and stuck) in the last 48h. Just stopped it and trying to run again: /test pull-cloud-provider-aws-e2e |
|
/test pull-cloud-provider-aws-e2e-kubetest2 |
|
Looks like #1167 has been resolved. I manually stopped the running job (42h+); Triggering it again: /test pull-cloud-provider-aws-e2e |
elmiko
left a comment
There was a problem hiding this comment.
looking mostly good, i just have a question about the global variables.
2120cf7 to
e7d0731
Compare
Thanks, @elmiko, good suggestions. Fixed. |
elmiko
left a comment
There was a problem hiding this comment.
thanks Marco, i think that makes it a little less fragile.
/lgtm
|
Hey @cartermckinnon , would you mind taking a look at this e2e test improvements to help us troubleshooting known issues? This won't fix #1160, but help us test it. Thanks! |
|
@oliviassss can you take a look? |
|
@mtulio Hi, thanks for the contribution. Just for my understanding, this PR mostly adds the test coverage for internal NLB hairpin issue, but in the test case itself we expect the test to fail and skip the failed test? What's the main purpose for adding the test cases? From the AWS ELB doc I think the internal NLB will have hairpin issue with UDP or TCP_UDP protocol since the preserve client IP attribute cannot be disabled. (and I don't think CCM provide an annotation to disable this TG attributes anyway)
|
Hi @oliviassss , answering your questions:
Correct, we are skipping only the NLB test case as it works on CLB. https://github.com/kubernetes/cloud-provider-aws/pull/1161/files#diff-05b1c14f2de829d8a0c5f65b1b492a9ed9ab9d100ce6daa89d2d2347c8a14c77R122-R160
The main purpose is to expose the test scenario (hairpin connection) for both supported Load Balancer by CCM: CLB and NLB, skipping the NLB case to prevent know failures on CCM CI. This problem was unknown until now, we are exposing this scenario as "known issue" to CCM in #1160, and using this e2e as a helper to reproduce and fix in follow up PRs. |
|
Hi @oliviassss @kmala , would you mind also triage the related issue #1160, please? |
Implementing the hairpin connection test cases, and exposing an issue on NLB with internal scheme which fails when the client is trying to access a service loadbalancer which is hosted in the same node. The hairpin connection is caused by the client IP preservation attribute is set to true (default), and the service does not provide an interface to prevent the issue. The e2e is expecting to pass to prevent permanent failures in CI, but it is tracked by an issue kubernetes#1160.
|
/approve |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: kmala, oliviassss The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
/lgtm |
-#1215-#1217-#1214-upstream-release-1.32 Automated cherry pick of #1153: e2e/deps: enhance test scenarios with NLB #1161: e2e/loadbalancer: implement hairpin connection cases #1215: refact: e2e tests documenting hooks and enhance logging/steps #1217: e2e/debug: increase data collection on e2e failures #1214: doc/service: describe supported target group attributes
-#1215-#1217-#1214-upstream-release-1.33 Automated cherry pick of #1153: e2e/deps: enhance test scenarios with NLB #1161: e2e/loadbalancer: implement hairpin connection cases #1215: refact: e2e tests documenting hooks and enhance logging/steps #1217: e2e/debug: increase data collection on e2e failures #1214: doc/service: describe supported target group attributes
-#1215-#1217-#1214-upstream-release-1.31 Automated cherry pick of #1153: e2e/deps: enhance test scenarios with NLB #1161: e2e/loadbalancer: implement hairpin connection cases #1215: refact: e2e tests documenting hooks and enhance logging/steps #1217: e2e/debug: increase data collection on e2e failures #1214: doc/service: describe supported target group attributes
What type of PR is this?
/kind bug
/kind failing-test
What this PR does / why we need it:
Implementing the hairpin connection test cases, and exposing an issue on NLB with internal scheme which fails when the client is trying to access a service loadbalancer which is hosted in the same node.
The hairpin connection is caused by the client IP preservation attribute is set to true (default), and the service does not provide an interface to prevent the issue.
The e2e is expecting to pass to prevent permanent failures in CI, but it is tracked by an issue #1160.
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
Those tests are important to increase coverage of scenarios that CCM declares as supported.
I also believe we can remove the hairpin with scheme internet-facing (public) LBs because the source IPs would be traversing a VPC gateway (IGW/NGW) and masquerade the real source, not reproducing the problem we are trying to expose in #1160. Thoughts?
Does this PR introduce a user-facing change?: