mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-13 13:55:41 +00:00
Merge pull request #118338 from aroradaman/mv-ipset
move pkg/util/ipset inside pkg/proxy/ipvs
This commit is contained in:
commit
b2042d6ce4
@ -47,11 +47,11 @@ import (
|
|||||||
proxyconfigapi "k8s.io/kubernetes/pkg/proxy/apis/config"
|
proxyconfigapi "k8s.io/kubernetes/pkg/proxy/apis/config"
|
||||||
"k8s.io/kubernetes/pkg/proxy/iptables"
|
"k8s.io/kubernetes/pkg/proxy/iptables"
|
||||||
"k8s.io/kubernetes/pkg/proxy/ipvs"
|
"k8s.io/kubernetes/pkg/proxy/ipvs"
|
||||||
|
utilipset "k8s.io/kubernetes/pkg/proxy/ipvs/ipset"
|
||||||
utilipvs "k8s.io/kubernetes/pkg/proxy/ipvs/util"
|
utilipvs "k8s.io/kubernetes/pkg/proxy/ipvs/util"
|
||||||
proxymetrics "k8s.io/kubernetes/pkg/proxy/metrics"
|
proxymetrics "k8s.io/kubernetes/pkg/proxy/metrics"
|
||||||
proxyutil "k8s.io/kubernetes/pkg/proxy/util"
|
proxyutil "k8s.io/kubernetes/pkg/proxy/util"
|
||||||
proxyutiliptables "k8s.io/kubernetes/pkg/proxy/util/iptables"
|
proxyutiliptables "k8s.io/kubernetes/pkg/proxy/util/iptables"
|
||||||
utilipset "k8s.io/kubernetes/pkg/util/ipset"
|
|
||||||
utiliptables "k8s.io/kubernetes/pkg/util/iptables"
|
utiliptables "k8s.io/kubernetes/pkg/util/iptables"
|
||||||
"k8s.io/utils/exec"
|
"k8s.io/utils/exec"
|
||||||
netutils "k8s.io/utils/net"
|
netutils "k8s.io/utils/net"
|
||||||
|
@ -19,7 +19,7 @@ package ipvs
|
|||||||
import (
|
import (
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
utilversion "k8s.io/apimachinery/pkg/util/version"
|
utilversion "k8s.io/apimachinery/pkg/util/version"
|
||||||
utilipset "k8s.io/kubernetes/pkg/util/ipset"
|
utilipset "k8s.io/kubernetes/pkg/proxy/ipvs/ipset"
|
||||||
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -28,6 +28,8 @@ import (
|
|||||||
netutils "k8s.io/utils/net"
|
netutils "k8s.io/utils/net"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var validationError = fmt.Errorf("failed to validate entry for ipset")
|
||||||
|
|
||||||
// Interface is an injectable interface for running ipset commands. Implementations must be goroutine-safe.
|
// Interface is an injectable interface for running ipset commands. Implementations must be goroutine-safe.
|
||||||
type Interface interface {
|
type Interface interface {
|
||||||
// FlushSet deletes all entries from a named set.
|
// FlushSet deletes all entries from a named set.
|
||||||
@ -165,7 +167,7 @@ type Entry struct {
|
|||||||
// Validate checks if a given ipset entry is valid or not. The set parameter is the ipset that entry belongs to.
|
// Validate checks if a given ipset entry is valid or not. The set parameter is the ipset that entry belongs to.
|
||||||
func (e *Entry) Validate(set *IPSet) bool {
|
func (e *Entry) Validate(set *IPSet) bool {
|
||||||
if e.Port < 0 {
|
if e.Port < 0 {
|
||||||
klog.Errorf("Entry %v port number %d should be >=0 for ipset %v", e, e.Port, set)
|
klog.ErrorS(validationError, "port number should be >=0", "entry", e, "port", e.Port, "ipset", set)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
switch e.SetType {
|
switch e.SetType {
|
||||||
@ -187,7 +189,7 @@ func (e *Entry) Validate(set *IPSet) bool {
|
|||||||
|
|
||||||
// IP2 can not be empty for `hash:ip,port,ip` type ip set
|
// IP2 can not be empty for `hash:ip,port,ip` type ip set
|
||||||
if netutils.ParseIPSloppy(e.IP2) == nil {
|
if netutils.ParseIPSloppy(e.IP2) == nil {
|
||||||
klog.Errorf("Error parsing entry %v second ip address %v for ipset %v", e, e.IP2, set)
|
klog.ErrorS(validationError, "error parsing second ip address", "entry", e, "ip", e.IP2, "ipset", set)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
case HashIPPortNet:
|
case HashIPPortNet:
|
||||||
@ -198,22 +200,22 @@ func (e *Entry) Validate(set *IPSet) bool {
|
|||||||
|
|
||||||
// Net can not be empty for `hash:ip,port,net` type ip set
|
// Net can not be empty for `hash:ip,port,net` type ip set
|
||||||
if _, ipNet, err := netutils.ParseCIDRSloppy(e.Net); ipNet == nil {
|
if _, ipNet, err := netutils.ParseCIDRSloppy(e.Net); ipNet == nil {
|
||||||
klog.Errorf("Error parsing entry %v ip net %v for ipset %v, error: %v", e, e.Net, set, err)
|
klog.ErrorS(err, "error parsing ip net", "entry", e, "net", e.Net, "set", set)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
case BitmapPort:
|
case BitmapPort:
|
||||||
// check if port number satisfies its ipset's requirement of port range
|
// check if port number satisfies its ipset's requirement of port range
|
||||||
if set == nil {
|
if set == nil {
|
||||||
klog.Errorf("Unable to reference ip set where the entry %v exists", e)
|
klog.ErrorS(validationError, "unable to reference ip set where the entry exists", "entry", e)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
begin, end, err := parsePortRange(set.PortRange)
|
begin, end, err := parsePortRange(set.PortRange)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Failed to parse set %v port range %s for ipset %v, error: %v", set, set.PortRange, set, err)
|
klog.ErrorS(err, "failed to parse set port range", "ipset", set, "portRange", set.PortRange)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if e.Port < begin || e.Port > end {
|
if e.Port < begin || e.Port > end {
|
||||||
klog.Errorf("Entry %v port number %d is not in the port range %s of its ipset %v", e, e.Port, set.PortRange, set)
|
klog.ErrorS(validationError, "port number is not in the port range of its ipset", "entry", e, "port", e.Port, "portRange", set.PortRange, "ipset", set)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -261,7 +263,7 @@ func (e *Entry) checkIPandProtocol(set *IPSet) bool {
|
|||||||
// checkIP checks if IP of Entry is valid.
|
// checkIP checks if IP of Entry is valid.
|
||||||
func (e *Entry) checkIP(set *IPSet) bool {
|
func (e *Entry) checkIP(set *IPSet) bool {
|
||||||
if netutils.ParseIPSloppy(e.IP) == nil {
|
if netutils.ParseIPSloppy(e.IP) == nil {
|
||||||
klog.Errorf("Error parsing entry %v ip address %v for ipset %v", e, e.IP, set)
|
klog.ErrorS(validationError, "error parsing ip address", "entry", e, "ip", e.IP, "ipset", set)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -489,7 +491,7 @@ func validateProtocol(protocol string) bool {
|
|||||||
if protocol == ProtocolTCP || protocol == ProtocolUDP || protocol == ProtocolSCTP {
|
if protocol == ProtocolTCP || protocol == ProtocolUDP || protocol == ProtocolSCTP {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
klog.Errorf("Invalid entry's protocol: %s, supported protocols are [%s, %s, %s]", protocol, ProtocolTCP, ProtocolUDP, ProtocolSCTP)
|
klog.ErrorS(validationError, "invalid protocol", "protocol", protocol, "supportedProtocols", []string{ProtocolTCP, ProtocolUDP, ProtocolSCTP})
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
@ -20,7 +20,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/kubernetes/pkg/util/ipset"
|
"k8s.io/kubernetes/pkg/proxy/ipvs/ipset"
|
||||||
)
|
)
|
||||||
|
|
||||||
// FakeIPSet is a no-op implementation of ipset Interface
|
// FakeIPSet is a no-op implementation of ipset Interface
|
@ -20,7 +20,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/kubernetes/pkg/util/ipset"
|
"k8s.io/kubernetes/pkg/proxy/ipvs/ipset"
|
||||||
)
|
)
|
||||||
|
|
||||||
const testVersion = "v6.19"
|
const testVersion = "v6.19"
|
@ -22,8 +22,8 @@ package ipvs
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
utilipset "k8s.io/kubernetes/pkg/util/ipset"
|
utilipset "k8s.io/kubernetes/pkg/proxy/ipvs/ipset"
|
||||||
fakeipset "k8s.io/kubernetes/pkg/util/ipset/testing"
|
fakeipset "k8s.io/kubernetes/pkg/proxy/ipvs/ipset/testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCheckIPSetVersion(t *testing.T) {
|
func TestCheckIPSetVersion(t *testing.T) {
|
||||||
|
@ -45,13 +45,13 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/proxy"
|
"k8s.io/kubernetes/pkg/proxy"
|
||||||
"k8s.io/kubernetes/pkg/proxy/conntrack"
|
"k8s.io/kubernetes/pkg/proxy/conntrack"
|
||||||
"k8s.io/kubernetes/pkg/proxy/healthcheck"
|
"k8s.io/kubernetes/pkg/proxy/healthcheck"
|
||||||
|
utilipset "k8s.io/kubernetes/pkg/proxy/ipvs/ipset"
|
||||||
utilipvs "k8s.io/kubernetes/pkg/proxy/ipvs/util"
|
utilipvs "k8s.io/kubernetes/pkg/proxy/ipvs/util"
|
||||||
"k8s.io/kubernetes/pkg/proxy/metaproxier"
|
"k8s.io/kubernetes/pkg/proxy/metaproxier"
|
||||||
"k8s.io/kubernetes/pkg/proxy/metrics"
|
"k8s.io/kubernetes/pkg/proxy/metrics"
|
||||||
proxyutil "k8s.io/kubernetes/pkg/proxy/util"
|
proxyutil "k8s.io/kubernetes/pkg/proxy/util"
|
||||||
proxyutiliptables "k8s.io/kubernetes/pkg/proxy/util/iptables"
|
proxyutiliptables "k8s.io/kubernetes/pkg/proxy/util/iptables"
|
||||||
"k8s.io/kubernetes/pkg/util/async"
|
"k8s.io/kubernetes/pkg/util/async"
|
||||||
utilipset "k8s.io/kubernetes/pkg/util/ipset"
|
|
||||||
utiliptables "k8s.io/kubernetes/pkg/util/iptables"
|
utiliptables "k8s.io/kubernetes/pkg/util/iptables"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -39,6 +39,8 @@ import (
|
|||||||
"k8s.io/component-base/metrics/testutil"
|
"k8s.io/component-base/metrics/testutil"
|
||||||
"k8s.io/kubernetes/pkg/proxy"
|
"k8s.io/kubernetes/pkg/proxy"
|
||||||
"k8s.io/kubernetes/pkg/proxy/healthcheck"
|
"k8s.io/kubernetes/pkg/proxy/healthcheck"
|
||||||
|
utilipset "k8s.io/kubernetes/pkg/proxy/ipvs/ipset"
|
||||||
|
ipsettest "k8s.io/kubernetes/pkg/proxy/ipvs/ipset/testing"
|
||||||
netlinktest "k8s.io/kubernetes/pkg/proxy/ipvs/testing"
|
netlinktest "k8s.io/kubernetes/pkg/proxy/ipvs/testing"
|
||||||
utilipvs "k8s.io/kubernetes/pkg/proxy/ipvs/util"
|
utilipvs "k8s.io/kubernetes/pkg/proxy/ipvs/util"
|
||||||
ipvstest "k8s.io/kubernetes/pkg/proxy/ipvs/util/testing"
|
ipvstest "k8s.io/kubernetes/pkg/proxy/ipvs/util/testing"
|
||||||
@ -47,8 +49,6 @@ import (
|
|||||||
proxyutiliptables "k8s.io/kubernetes/pkg/proxy/util/iptables"
|
proxyutiliptables "k8s.io/kubernetes/pkg/proxy/util/iptables"
|
||||||
proxyutiltest "k8s.io/kubernetes/pkg/proxy/util/testing"
|
proxyutiltest "k8s.io/kubernetes/pkg/proxy/util/testing"
|
||||||
"k8s.io/kubernetes/pkg/util/async"
|
"k8s.io/kubernetes/pkg/util/async"
|
||||||
utilipset "k8s.io/kubernetes/pkg/util/ipset"
|
|
||||||
ipsettest "k8s.io/kubernetes/pkg/util/ipset/testing"
|
|
||||||
utiliptables "k8s.io/kubernetes/pkg/util/iptables"
|
utiliptables "k8s.io/kubernetes/pkg/util/iptables"
|
||||||
iptablestest "k8s.io/kubernetes/pkg/util/iptables/testing"
|
iptablestest "k8s.io/kubernetes/pkg/util/iptables/testing"
|
||||||
"k8s.io/utils/exec"
|
"k8s.io/utils/exec"
|
||||||
|
@ -19,7 +19,7 @@ package ipvs
|
|||||||
import (
|
import (
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/util/ipset"
|
"k8s.io/kubernetes/pkg/proxy/ipvs/ipset"
|
||||||
)
|
)
|
||||||
|
|
||||||
type safeIpset struct {
|
type safeIpset struct {
|
||||||
|
@ -17,7 +17,7 @@ limitations under the License.
|
|||||||
package testing
|
package testing
|
||||||
|
|
||||||
import (
|
import (
|
||||||
utilipset "k8s.io/kubernetes/pkg/util/ipset"
|
utilipset "k8s.io/kubernetes/pkg/proxy/ipvs/ipset"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ExpectedVirtualServer is the expected ipvs rules with VirtualServer and RealServer
|
// ExpectedVirtualServer is the expected ipvs rules with VirtualServer and RealServer
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
# See the OWNERS docs at https://go.k8s.io/owners
|
|
||||||
|
|
||||||
reviewers:
|
|
||||||
- sig-network-reviewers
|
|
||||||
approvers:
|
|
||||||
- sig-network-approvers
|
|
||||||
labels:
|
|
||||||
- sig/network
|
|
||||||
emeritus_approvers:
|
|
||||||
- brendandburns
|
|
||||||
- m1093782566
|
|
Loading…
Reference in New Issue
Block a user