daemon: Ignore cilium_* interfaces when deriving NodePort device#16104
daemon: Ignore cilium_* interfaces when deriving NodePort device#16104borkmann merged 1 commit intocilium:masterfrom eyanulis:gh16019-exclude-cilium-interfaces-nodeport
Conversation
|
Commit 102d4515a6b8c84d8aca5f947e568c42ca1b0953 does not contain "Signed-off-by". Please follow instructions provided in https://docs.cilium.io/en/stable/contributing/development/contributing_guide/#developer-s-certificate-of-origin |
There was a problem hiding this comment.
Nit: s/skipping interface/skipping interface for device detection/.
There was a problem hiding this comment.
Nit: s/NodePort device/device/ (it's not only used for NodePort).
There was a problem hiding this comment.
Updated, thanks. Also s/in/for/ to be consistent with various messages around it.
There was a problem hiding this comment.
Thanks for catching that, I've removed them. I had gone back and forth between having an "implicit" and "explicit" else condition and the continues would have been required for the implicit condition, but I forgot to remove them after settling on an explicit else.
Any Cilium-created interface (cilium_host, etc) will never be a valid interface for kube-proxy-replacement NodePort (or direct routing). In certain cases, it is possible for the NodePort auto-derivation code to select one of these interfaces. This notably happens when the k8s node IP is an IPv6 address: the node IP is cloned to cilium_host, and the IP (sans netmask) is used as a map key - so cilium_host may be viewed as the only interface with an address matching the node IP. Add a check bypassing any interface whose name is prefixed with "cilium_" during NodePort device detection. Add a test mimicking the IPv6 cilium_host case: node IP assigned to a "real" interface and a "cilium_foo" interface, we should ignore "cilium_foo". Fixes: #16019 Signed-off-by: Eric M. Yanulis <eric@eyanulis.net>
|
test-me-please |
|
It looks like most(/all?) of the failing tests are Github flakes from the first run (HTTP 500 during checkout, etc). Is there any way to rerun them? I'm not terribly familiar with how this repo is wired up to Github Actions but it doesn't seem like they re-ran after the |
I think GH was having some issues yesterday with actions. Closing and reopening the PR should have restarted them |
|
test-1.16-netnext |
|
The tests relevant to this PR are passing, so marking this ready for merge. |
Any Cilium-created interface (
cilium_host, etc) will never be a validinterface for kube-proxy-replacement NodePort (or direct routing). In
certain cases, it is possible for the NodePort auto-derivation code to
select one of these interfaces. This notably happens when the k8s node
IP is an IPv6 address: the node IP is cloned to
cilium_host, and the IP(sans netmask) is used as a map key - so
cilium_hostmay be viewed asthe only interface with an address matching the node IP.
Add a check bypassing any interface whose name is prefixed with
cilium_during NodePort device detection.Add a test mimicking the IPv6
cilium_hostcase: node IP assigned to a"real" interface and a
cilium_foointerface, we should ignorecilium_foo.Fixes: #16019
Please ensure your pull request adheres to the following guidelines:
description and a
Fixes: #XXXline if the commit addresses a particularGitHub issue.