mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-28 21:55:48 +00:00
Automatic merge from submit-queue (batch tested with PRs 50068, 52406, 52394, 48551, 52131). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.. Add IPv6 support to iptables proxier Add IPv6 support to iptables proxier The following changes are proposed for the iptables proxier: - There are three places where a string specifying IP:port is parsed using something like this: if index := strings.Index(e.endpoint, ":"); index != -1 { This will fail for IPv6 since V6 addresses contain colons. Also, the V6 address is expected to be surrounded by square brackets (i.e. [<ipv6-addr>]:<port>). Fix this by replacing call to Index with call to LastIndex() and stripping out square brackets. - The String() method for the localPort struct should put square brackets around IPv6 addresses. - The logging in the merge() method for proxyServiceMap should put brackets around IPv6 addresses. - There are several places where filterRules destination is hardcoded to <clusterIP>/32. This should be a /128 for IPv6 case. - Add IPv6 unit test cases Note: I've left out most of the UT test cases that I had included in my original version of this PR because the number of lines of code change were much too large for a single review. I'm including a minimum of UT with this current version of the PR. fixes #48550 **What this PR does / why we need it**: This PR addresses several issues in the iptables proxier for handling IPv6 addresses that were found via visual code inspection, including: - There are three places where a string specifying IP:port using something like the following: if index := strings.Index(e.endpoint, ":"); index != -1 { This will fail for IPv6 since V6 addresses contains many colons, and the V6 address is expected to be enclosed in square brackets when followed by :<port>. - The String() method for the localPort struct should put square brackets around IPv6 addresses. - The logging in the merge() method for proxyServiceMap should put brackets around IPv6 addresses. - There are several places where filterRules destination is hardcoded to /32. Should be a /128 for IPv6 case. - More IPv6 unit test cases are needed. **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #48550 **Special notes for your reviewer**: **Release note**: ```release-note NONE ```