mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 09:22:44 +00:00
Add names to all KubeProxyConfiguration validation test cases
This commit is contained in:
parent
7320e54e0e
commit
c7f3caf498
@ -37,203 +37,234 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
} else {
|
} else {
|
||||||
proxyMode = kubeproxyconfig.ProxyModeIPVS
|
proxyMode = kubeproxyconfig.ProxyModeIPVS
|
||||||
}
|
}
|
||||||
successCases := []kubeproxyconfig.KubeProxyConfiguration{{
|
|
||||||
BindAddress: "192.168.59.103",
|
successCases := map[string]struct {
|
||||||
HealthzBindAddress: "0.0.0.0:10256",
|
config kubeproxyconfig.KubeProxyConfiguration
|
||||||
MetricsBindAddress: "127.0.0.1:10249",
|
}{
|
||||||
ClusterCIDR: "192.168.59.0/24",
|
"Mode specified, extra mode-specific configs": {
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
config: kubeproxyconfig.KubeProxyConfiguration{
|
||||||
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
BindAddress: "192.168.59.103",
|
||||||
MasqueradeAll: true,
|
HealthzBindAddress: "0.0.0.0:10256",
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MetricsBindAddress: "127.0.0.1:10249",
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
ClusterCIDR: "192.168.59.0/24",
|
||||||
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
|
MasqueradeAll: true,
|
||||||
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
|
},
|
||||||
|
Mode: proxyMode,
|
||||||
|
IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
|
||||||
|
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
||||||
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
},
|
||||||
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
|
MaxPerCore: ptr.To[int32](1),
|
||||||
|
Min: ptr.To[int32](1),
|
||||||
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
},
|
||||||
|
Logging: logsapi.LoggingConfiguration{
|
||||||
|
Format: "text",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Mode: proxyMode,
|
"basic config, unspecified Mode": {
|
||||||
IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
|
config: kubeproxyconfig.KubeProxyConfiguration{
|
||||||
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
BindAddress: "192.168.59.103",
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
HealthzBindAddress: "0.0.0.0:10256",
|
||||||
|
MetricsBindAddress: "127.0.0.1:10249",
|
||||||
|
ClusterCIDR: "192.168.59.0/24",
|
||||||
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
|
MasqueradeAll: true,
|
||||||
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
|
},
|
||||||
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
|
MaxPerCore: ptr.To[int32](1),
|
||||||
|
Min: ptr.To[int32](1),
|
||||||
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
},
|
||||||
|
Logging: logsapi.LoggingConfiguration{
|
||||||
|
Format: "text",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
"empty HealthzBindAddress": {
|
||||||
MaxPerCore: ptr.To[int32](1),
|
config: kubeproxyconfig.KubeProxyConfiguration{
|
||||||
Min: ptr.To[int32](1),
|
BindAddress: "192.168.59.103",
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
HealthzBindAddress: "",
|
||||||
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
MetricsBindAddress: "127.0.0.1:10249",
|
||||||
|
ClusterCIDR: "192.168.59.0/24",
|
||||||
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
|
MasqueradeAll: true,
|
||||||
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
|
},
|
||||||
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
|
MaxPerCore: ptr.To[int32](1),
|
||||||
|
Min: ptr.To[int32](1),
|
||||||
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
},
|
||||||
|
Logging: logsapi.LoggingConfiguration{
|
||||||
|
Format: "text",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Logging: logsapi.LoggingConfiguration{
|
"IPv6": {
|
||||||
Format: "text",
|
config: kubeproxyconfig.KubeProxyConfiguration{
|
||||||
|
BindAddress: "fd00:192:168:59::103",
|
||||||
|
HealthzBindAddress: "",
|
||||||
|
MetricsBindAddress: "[::1]:10249",
|
||||||
|
ClusterCIDR: "fd00:192:168:59::/64",
|
||||||
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
|
MasqueradeAll: true,
|
||||||
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
|
},
|
||||||
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
|
MaxPerCore: ptr.To[int32](1),
|
||||||
|
Min: ptr.To[int32](1),
|
||||||
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
},
|
||||||
|
Logging: logsapi.LoggingConfiguration{
|
||||||
|
Format: "text",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}, {
|
"alternate healthz port": {
|
||||||
BindAddress: "192.168.59.103",
|
config: kubeproxyconfig.KubeProxyConfiguration{
|
||||||
HealthzBindAddress: "0.0.0.0:10256",
|
BindAddress: "10.10.12.11",
|
||||||
MetricsBindAddress: "127.0.0.1:10249",
|
HealthzBindAddress: "0.0.0.0:12345",
|
||||||
ClusterCIDR: "192.168.59.0/24",
|
MetricsBindAddress: "127.0.0.1:10249",
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
ClusterCIDR: "192.168.59.0/24",
|
||||||
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
MasqueradeAll: true,
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MasqueradeAll: true,
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
|
},
|
||||||
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
|
MaxPerCore: ptr.To[int32](1),
|
||||||
|
Min: ptr.To[int32](1),
|
||||||
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
},
|
||||||
|
Logging: logsapi.LoggingConfiguration{
|
||||||
|
Format: "text",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
"ClusterCIDR is wrong IP family": {
|
||||||
MaxPerCore: ptr.To[int32](1),
|
config: kubeproxyconfig.KubeProxyConfiguration{
|
||||||
Min: ptr.To[int32](1),
|
BindAddress: "10.10.12.11",
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
HealthzBindAddress: "0.0.0.0:12345",
|
||||||
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
MetricsBindAddress: "127.0.0.1:10249",
|
||||||
|
ClusterCIDR: "fd00:192:168::/64",
|
||||||
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
|
MasqueradeAll: true,
|
||||||
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
|
},
|
||||||
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
|
MaxPerCore: ptr.To[int32](1),
|
||||||
|
Min: ptr.To[int32](1),
|
||||||
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
},
|
||||||
|
Logging: logsapi.LoggingConfiguration{
|
||||||
|
Format: "text",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Logging: logsapi.LoggingConfiguration{
|
"ClusterCIDR is dual-stack": {
|
||||||
Format: "text",
|
config: kubeproxyconfig.KubeProxyConfiguration{
|
||||||
|
BindAddress: "10.10.12.11",
|
||||||
|
HealthzBindAddress: "0.0.0.0:12345",
|
||||||
|
MetricsBindAddress: "127.0.0.1:10249",
|
||||||
|
ClusterCIDR: "192.168.59.0/24,fd00:192:168::/64",
|
||||||
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
|
MasqueradeAll: true,
|
||||||
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
|
},
|
||||||
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
|
MaxPerCore: ptr.To[int32](1),
|
||||||
|
Min: ptr.To[int32](1),
|
||||||
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
},
|
||||||
|
Logging: logsapi.LoggingConfiguration{
|
||||||
|
Format: "text",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}, {
|
"LocalModeInterfaceNamePrefix": {
|
||||||
BindAddress: "192.168.59.103",
|
config: kubeproxyconfig.KubeProxyConfiguration{
|
||||||
HealthzBindAddress: "",
|
BindAddress: "10.10.12.11",
|
||||||
MetricsBindAddress: "127.0.0.1:10249",
|
HealthzBindAddress: "0.0.0.0:12345",
|
||||||
ClusterCIDR: "192.168.59.0/24",
|
MetricsBindAddress: "127.0.0.1:10249",
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
ClusterCIDR: "192.168.59.0/24",
|
||||||
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
MasqueradeAll: true,
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MasqueradeAll: true,
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
|
},
|
||||||
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
|
MaxPerCore: ptr.To[int32](1),
|
||||||
|
Min: ptr.To[int32](1),
|
||||||
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
},
|
||||||
|
DetectLocalMode: kubeproxyconfig.LocalModeInterfaceNamePrefix,
|
||||||
|
DetectLocal: kubeproxyconfig.DetectLocalConfiguration{
|
||||||
|
InterfaceNamePrefix: "vethabcde",
|
||||||
|
},
|
||||||
|
Logging: logsapi.LoggingConfiguration{
|
||||||
|
Format: "text",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
"LocalModeBridgeInterface": {
|
||||||
MaxPerCore: ptr.To[int32](1),
|
config: kubeproxyconfig.KubeProxyConfiguration{
|
||||||
Min: ptr.To[int32](1),
|
BindAddress: "10.10.12.11",
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
HealthzBindAddress: "0.0.0.0:12345",
|
||||||
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
MetricsBindAddress: "127.0.0.1:10249",
|
||||||
|
ClusterCIDR: "192.168.59.0/24",
|
||||||
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
|
MasqueradeAll: true,
|
||||||
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
|
},
|
||||||
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
|
MaxPerCore: ptr.To[int32](1),
|
||||||
|
Min: ptr.To[int32](1),
|
||||||
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
},
|
||||||
|
DetectLocalMode: kubeproxyconfig.LocalModeBridgeInterface,
|
||||||
|
DetectLocal: kubeproxyconfig.DetectLocalConfiguration{
|
||||||
|
BridgeInterface: "avz",
|
||||||
|
},
|
||||||
|
Logging: logsapi.LoggingConfiguration{
|
||||||
|
Format: "text",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Logging: logsapi.LoggingConfiguration{
|
}
|
||||||
Format: "text",
|
|
||||||
},
|
|
||||||
}, {
|
|
||||||
BindAddress: "fd00:192:168:59::103",
|
|
||||||
HealthzBindAddress: "",
|
|
||||||
MetricsBindAddress: "[::1]:10249",
|
|
||||||
ClusterCIDR: "fd00:192:168:59::/64",
|
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
|
||||||
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
|
||||||
MasqueradeAll: true,
|
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
|
||||||
},
|
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
|
||||||
MaxPerCore: ptr.To[int32](1),
|
|
||||||
Min: ptr.To[int32](1),
|
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
},
|
|
||||||
Logging: logsapi.LoggingConfiguration{
|
|
||||||
Format: "text",
|
|
||||||
},
|
|
||||||
}, {
|
|
||||||
BindAddress: "10.10.12.11",
|
|
||||||
HealthzBindAddress: "0.0.0.0:12345",
|
|
||||||
MetricsBindAddress: "127.0.0.1:10249",
|
|
||||||
ClusterCIDR: "192.168.59.0/24",
|
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
|
||||||
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
|
||||||
MasqueradeAll: true,
|
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
|
||||||
},
|
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
|
||||||
MaxPerCore: ptr.To[int32](1),
|
|
||||||
Min: ptr.To[int32](1),
|
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
},
|
|
||||||
Logging: logsapi.LoggingConfiguration{
|
|
||||||
Format: "text",
|
|
||||||
},
|
|
||||||
}, {
|
|
||||||
BindAddress: "10.10.12.11",
|
|
||||||
HealthzBindAddress: "0.0.0.0:12345",
|
|
||||||
MetricsBindAddress: "127.0.0.1:10249",
|
|
||||||
ClusterCIDR: "fd00:192:168::/64",
|
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
|
||||||
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
|
||||||
MasqueradeAll: true,
|
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
|
||||||
},
|
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
|
||||||
MaxPerCore: ptr.To[int32](1),
|
|
||||||
Min: ptr.To[int32](1),
|
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
},
|
|
||||||
Logging: logsapi.LoggingConfiguration{
|
|
||||||
Format: "text",
|
|
||||||
},
|
|
||||||
}, {
|
|
||||||
BindAddress: "10.10.12.11",
|
|
||||||
HealthzBindAddress: "0.0.0.0:12345",
|
|
||||||
MetricsBindAddress: "127.0.0.1:10249",
|
|
||||||
ClusterCIDR: "192.168.59.0/24,fd00:192:168::/64",
|
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
|
||||||
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
|
||||||
MasqueradeAll: true,
|
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
|
||||||
},
|
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
|
||||||
MaxPerCore: ptr.To[int32](1),
|
|
||||||
Min: ptr.To[int32](1),
|
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
},
|
|
||||||
Logging: logsapi.LoggingConfiguration{
|
|
||||||
Format: "text",
|
|
||||||
},
|
|
||||||
}, {
|
|
||||||
BindAddress: "10.10.12.11",
|
|
||||||
HealthzBindAddress: "0.0.0.0:12345",
|
|
||||||
MetricsBindAddress: "127.0.0.1:10249",
|
|
||||||
ClusterCIDR: "192.168.59.0/24",
|
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
|
||||||
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
|
||||||
MasqueradeAll: true,
|
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
|
||||||
},
|
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
|
||||||
MaxPerCore: ptr.To[int32](1),
|
|
||||||
Min: ptr.To[int32](1),
|
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
},
|
|
||||||
DetectLocalMode: kubeproxyconfig.LocalModeInterfaceNamePrefix,
|
|
||||||
DetectLocal: kubeproxyconfig.DetectLocalConfiguration{
|
|
||||||
InterfaceNamePrefix: "vethabcde",
|
|
||||||
},
|
|
||||||
Logging: logsapi.LoggingConfiguration{
|
|
||||||
Format: "text",
|
|
||||||
},
|
|
||||||
}, {
|
|
||||||
BindAddress: "10.10.12.11",
|
|
||||||
HealthzBindAddress: "0.0.0.0:12345",
|
|
||||||
MetricsBindAddress: "127.0.0.1:10249",
|
|
||||||
ClusterCIDR: "192.168.59.0/24",
|
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
|
||||||
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
|
||||||
MasqueradeAll: true,
|
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
|
||||||
},
|
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
|
||||||
MaxPerCore: ptr.To[int32](1),
|
|
||||||
Min: ptr.To[int32](1),
|
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
},
|
|
||||||
DetectLocalMode: kubeproxyconfig.LocalModeBridgeInterface,
|
|
||||||
DetectLocal: kubeproxyconfig.DetectLocalConfiguration{
|
|
||||||
BridgeInterface: "avz",
|
|
||||||
},
|
|
||||||
Logging: logsapi.LoggingConfiguration{
|
|
||||||
Format: "text",
|
|
||||||
},
|
|
||||||
}}
|
|
||||||
|
|
||||||
for _, successCase := range successCases {
|
for _, successCase := range successCases {
|
||||||
if errs := Validate(&successCase); len(errs) != 0 {
|
if errs := Validate(&successCase.config); len(errs) != 0 {
|
||||||
t.Errorf("expected success: %v", errs)
|
t.Errorf("expected success: %v", errs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -951,14 +982,22 @@ func TestValidateClientConnectionConfiguration(t *testing.T) {
|
|||||||
func TestValidateHostPort(t *testing.T) {
|
func TestValidateHostPort(t *testing.T) {
|
||||||
newPath := field.NewPath("KubeProxyConfiguration")
|
newPath := field.NewPath("KubeProxyConfiguration")
|
||||||
|
|
||||||
successCases := []string{
|
successCases := map[string]struct {
|
||||||
"0.0.0.0:10256",
|
ip string
|
||||||
"127.0.0.1:10256",
|
}{
|
||||||
"10.10.10.10:10256",
|
"all IPs": {
|
||||||
|
ip: "0.0.0.0:10256",
|
||||||
|
},
|
||||||
|
"localhost": {
|
||||||
|
ip: "127.0.0.1:10256",
|
||||||
|
},
|
||||||
|
"specific IP": {
|
||||||
|
ip: "10.10.10.10:10256",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, successCase := range successCases {
|
for _, successCase := range successCases {
|
||||||
if errs := validateHostPort(successCase, newPath.Child("HealthzBindAddress")); len(errs) != 0 {
|
if errs := validateHostPort(successCase.ip, newPath.Child("HealthzBindAddress")); len(errs) != 0 {
|
||||||
t.Errorf("expected success: %v", errs)
|
t.Errorf("expected success: %v", errs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1005,23 +1044,48 @@ func TestValidateHostPort(t *testing.T) {
|
|||||||
func TestValidateKubeProxyNodePortAddress(t *testing.T) {
|
func TestValidateKubeProxyNodePortAddress(t *testing.T) {
|
||||||
newPath := field.NewPath("KubeProxyConfiguration")
|
newPath := field.NewPath("KubeProxyConfiguration")
|
||||||
|
|
||||||
successCases := []struct {
|
successCases := map[string]struct {
|
||||||
addresses []string
|
addresses []string
|
||||||
}{
|
}{
|
||||||
{[]string{}},
|
"no addresses": {
|
||||||
{[]string{"127.0.0.0/8"}},
|
addresses: []string{},
|
||||||
{[]string{"0.0.0.0/0"}},
|
},
|
||||||
{[]string{"::/0"}},
|
"valid 1": {
|
||||||
{[]string{"127.0.0.1/32", "1.2.3.0/24"}},
|
addresses: []string{"127.0.0.0/8"},
|
||||||
{[]string{"127.0.0.0/8"}},
|
},
|
||||||
{[]string{"127.0.0.1/32"}},
|
"valid 2": {
|
||||||
{[]string{"::1/128"}},
|
addresses: []string{"0.0.0.0/0"},
|
||||||
{[]string{"1.2.3.4/32"}},
|
},
|
||||||
{[]string{"10.20.30.0/24"}},
|
"valid 3": {
|
||||||
{[]string{"10.20.0.0/16", "100.200.0.0/16"}},
|
addresses: []string{"::/0"},
|
||||||
{[]string{"10.0.0.0/8"}},
|
},
|
||||||
{[]string{"2001:db8::/32"}},
|
"valid 4": {
|
||||||
{[]string{kubeproxyconfig.NodePortAddressesPrimary}},
|
addresses: []string{"127.0.0.1/32", "1.2.3.0/24"},
|
||||||
|
},
|
||||||
|
"valid 5": {
|
||||||
|
addresses: []string{"127.0.0.1/32"},
|
||||||
|
},
|
||||||
|
"valid 6": {
|
||||||
|
addresses: []string{"::1/128"},
|
||||||
|
},
|
||||||
|
"valid 7": {
|
||||||
|
addresses: []string{"1.2.3.4/32"},
|
||||||
|
},
|
||||||
|
"valid 8": {
|
||||||
|
addresses: []string{"10.20.30.0/24"},
|
||||||
|
},
|
||||||
|
"valid 9": {
|
||||||
|
addresses: []string{"10.20.0.0/16", "100.200.0.0/16"},
|
||||||
|
},
|
||||||
|
"valid 10": {
|
||||||
|
addresses: []string{"10.0.0.0/8"},
|
||||||
|
},
|
||||||
|
"valid 11": {
|
||||||
|
addresses: []string{"2001:db8::/32"},
|
||||||
|
},
|
||||||
|
"primary": {
|
||||||
|
addresses: []string{kubeproxyconfig.NodePortAddressesPrimary},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, successCase := range successCases {
|
for _, successCase := range successCases {
|
||||||
@ -1085,22 +1149,45 @@ func TestValidateKubeProxyNodePortAddress(t *testing.T) {
|
|||||||
func TestValidateKubeProxyExcludeCIDRs(t *testing.T) {
|
func TestValidateKubeProxyExcludeCIDRs(t *testing.T) {
|
||||||
newPath := field.NewPath("KubeProxyConfiguration")
|
newPath := field.NewPath("KubeProxyConfiguration")
|
||||||
|
|
||||||
successCases := []struct {
|
successCases := map[string]struct {
|
||||||
addresses []string
|
addresses []string
|
||||||
}{
|
}{
|
||||||
{[]string{}},
|
"no cidrs": {
|
||||||
{[]string{"127.0.0.0/8"}},
|
addresses: []string{},
|
||||||
{[]string{"0.0.0.0/0"}},
|
},
|
||||||
{[]string{"::/0"}},
|
"valid 1": {
|
||||||
{[]string{"127.0.0.1/32", "1.2.3.0/24"}},
|
addresses: []string{"127.0.0.0/8"},
|
||||||
{[]string{"127.0.0.0/8"}},
|
},
|
||||||
{[]string{"127.0.0.1/32"}},
|
"valid 2": {
|
||||||
{[]string{"::1/128"}},
|
addresses: []string{"0.0.0.0/0"},
|
||||||
{[]string{"1.2.3.4/32"}},
|
},
|
||||||
{[]string{"10.20.30.0/24"}},
|
"valid 3": {
|
||||||
{[]string{"10.20.0.0/16", "100.200.0.0/16"}},
|
addresses: []string{"::/0"},
|
||||||
{[]string{"10.0.0.0/8"}},
|
},
|
||||||
{[]string{"2001:db8::/32"}},
|
"valid 4": {
|
||||||
|
addresses: []string{"127.0.0.1/32", "1.2.3.0/24"},
|
||||||
|
},
|
||||||
|
"valid 5": {
|
||||||
|
addresses: []string{"127.0.0.1/32"},
|
||||||
|
},
|
||||||
|
"valid 6": {
|
||||||
|
addresses: []string{"::1/128"},
|
||||||
|
},
|
||||||
|
"valid 7": {
|
||||||
|
addresses: []string{"1.2.3.4/32"},
|
||||||
|
},
|
||||||
|
"valid 8": {
|
||||||
|
addresses: []string{"10.20.30.0/24"},
|
||||||
|
},
|
||||||
|
"valid 9": {
|
||||||
|
addresses: []string{"10.20.0.0/16", "100.200.0.0/16"},
|
||||||
|
},
|
||||||
|
"valid 10": {
|
||||||
|
addresses: []string{"10.0.0.0/8"},
|
||||||
|
},
|
||||||
|
"valid 11": {
|
||||||
|
addresses: []string{"2001:db8::/32"},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, successCase := range successCases {
|
for _, successCase := range successCases {
|
||||||
|
Loading…
Reference in New Issue
Block a user