This repository was archived by the owner on Mar 5, 2024. It is now read-only.
Supports use of ! prefix for interface name#54
Merged
pingles merged 2 commits intouswitch:masterfrom Apr 28, 2018
Merged
Conversation
There are some CNI implementations that make use of multiple
Elastic Network Interfaces and secondary IPs to assign pods ips
directly from the VPC ranges. For example:
https://github.com/aws/amazon-vpc-cni-k8s
https://github.com/lyft/cni-ipvlan-vpc-k8s
For kiam to function correctly, it is necessary to have an iptables
rule that applies to all of the interfaces that pod traffic may come
from. And since these interfaces may be added and removed on demand,
it is necessary to have DNAT rules that will continue to work as
interfaces come and go.
iptables supports inverted matching for interface names which can be
useful to include all but certain interfaces in rules. For example:
iptables --append PREROUTING --protocol tcp \
--destination 169.254.169.254 --dport 80 \
\! -i loopback --jump DNAT --table nat \
--to-destination 10.100.100.3:8181
will apply the DNAT rule to all interfaces except the loopback.
This change puts the "!" for inverting the interface before the name
of the interface in the rules spec that inverted rules work as
intended.
Contributor
|
Thanks! Would you mind updating the README also to add include section on the iptables config wrt those cni plugins, it'd be really useful to call out what you could/should use to make them work. I'll add notes on what we use with Flannel/Canal also. |
Contributor
Author
|
Let me know what you think about that documentation blurb. We've only used weave and cni-ipvlan-vpc-k8s so I added entries for those two. Thanks for the feedback 👍 |
Contributor
|
That's perfect, thank you. |
pingles
approved these changes
Apr 28, 2018
gjtempleton
added a commit
to gjtempleton/kube2iam
that referenced
this pull request
Aug 10, 2021
Based on matching functionality in Kiam Introduced by uswitch/kiam#54
gjtempleton
added a commit
to gjtempleton/kube2iam
that referenced
this pull request
Aug 11, 2021
Based on matching functionality in Kiam Introduced by uswitch/kiam#54
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
There are some CNI implementations that make use of multiple
Elastic Network Interfaces and secondary IPs to assign pods ips
directly from the VPC ranges. For example:
For kiam to function correctly, it is necessary to have an iptables
rule that applies to all of the interfaces that pod traffic may come
from. And since these interfaces may be added and removed on demand,
it is necessary to have DNAT rules that will continue to work as
interfaces come and go.
iptables supports inverted matching for interface names which can be
useful to include all but certain interfaces in rules. For example:
will apply the DNAT rule to all interfaces except the loopback.
This change puts the "!" for inverting the interface before the name
of the interface in the rules spec that inverted rules work as
intended.