mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 20:53:33 +00:00
Rename kubeproxy config pkg and group.
This commit is contained in:
parent
91ab8fe1e7
commit
ff36eefd17
@ -53,10 +53,10 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/kubelet/qos"
|
"k8s.io/kubernetes/pkg/kubelet/qos"
|
||||||
"k8s.io/kubernetes/pkg/master/ports"
|
"k8s.io/kubernetes/pkg/master/ports"
|
||||||
"k8s.io/kubernetes/pkg/proxy"
|
"k8s.io/kubernetes/pkg/proxy"
|
||||||
"k8s.io/kubernetes/pkg/proxy/apis/proxyconfig"
|
"k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig"
|
||||||
"k8s.io/kubernetes/pkg/proxy/apis/proxyconfig/scheme"
|
"k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/scheme"
|
||||||
"k8s.io/kubernetes/pkg/proxy/apis/proxyconfig/v1alpha1"
|
"k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1"
|
||||||
"k8s.io/kubernetes/pkg/proxy/apis/proxyconfig/validation"
|
"k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/validation"
|
||||||
"k8s.io/kubernetes/pkg/proxy/config"
|
"k8s.io/kubernetes/pkg/proxy/config"
|
||||||
"k8s.io/kubernetes/pkg/proxy/healthcheck"
|
"k8s.io/kubernetes/pkg/proxy/healthcheck"
|
||||||
"k8s.io/kubernetes/pkg/proxy/iptables"
|
"k8s.io/kubernetes/pkg/proxy/iptables"
|
||||||
@ -96,10 +96,10 @@ type Options struct {
|
|||||||
CleanupAndExit bool
|
CleanupAndExit bool
|
||||||
|
|
||||||
// config is the proxy server's configuration object.
|
// config is the proxy server's configuration object.
|
||||||
config *proxyconfig.KubeProxyConfiguration
|
config *kubeproxyconfig.KubeProxyConfiguration
|
||||||
|
|
||||||
// The fields below here are placeholders for flags that can't be directly mapped into
|
// The fields below here are placeholders for flags that can't be directly mapped into
|
||||||
// proxyconfig.KubeProxyConfiguration.
|
// kubeproxyconfig.KubeProxyConfiguration.
|
||||||
//
|
//
|
||||||
// TODO remove these fields once the deprecated flags are removed.
|
// TODO remove these fields once the deprecated flags are removed.
|
||||||
|
|
||||||
@ -165,7 +165,7 @@ func AddFlags(options *Options, fs *pflag.FlagSet) {
|
|||||||
|
|
||||||
func NewOptions() *Options {
|
func NewOptions() *Options {
|
||||||
return &Options{
|
return &Options{
|
||||||
config: new(proxyconfig.KubeProxyConfiguration),
|
config: new(kubeproxyconfig.KubeProxyConfiguration),
|
||||||
healthzPort: ports.ProxyHealthzPort,
|
healthzPort: ports.ProxyHealthzPort,
|
||||||
scheme: scheme.Scheme,
|
scheme: scheme.Scheme,
|
||||||
codecs: scheme.Codecs,
|
codecs: scheme.Codecs,
|
||||||
@ -272,7 +272,7 @@ func (o *Options) applyDeprecatedHealthzPortToConfig() {
|
|||||||
|
|
||||||
// loadConfigFromFile loads the contents of file and decodes it as a
|
// loadConfigFromFile loads the contents of file and decodes it as a
|
||||||
// KubeProxyConfiguration object.
|
// KubeProxyConfiguration object.
|
||||||
func (o *Options) loadConfigFromFile(file string) (*proxyconfig.KubeProxyConfiguration, error) {
|
func (o *Options) loadConfigFromFile(file string) (*kubeproxyconfig.KubeProxyConfiguration, error) {
|
||||||
data, err := ioutil.ReadFile(file)
|
data, err := ioutil.ReadFile(file)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -282,19 +282,19 @@ func (o *Options) loadConfigFromFile(file string) (*proxyconfig.KubeProxyConfigu
|
|||||||
}
|
}
|
||||||
|
|
||||||
// loadConfig decodes data as a KubeProxyConfiguration object.
|
// loadConfig decodes data as a KubeProxyConfiguration object.
|
||||||
func (o *Options) loadConfig(data []byte) (*proxyconfig.KubeProxyConfiguration, error) {
|
func (o *Options) loadConfig(data []byte) (*kubeproxyconfig.KubeProxyConfiguration, error) {
|
||||||
configObj, gvk, err := o.codecs.UniversalDecoder().Decode(data, nil, nil)
|
configObj, gvk, err := o.codecs.UniversalDecoder().Decode(data, nil, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
config, ok := configObj.(*proxyconfig.KubeProxyConfiguration)
|
config, ok := configObj.(*kubeproxyconfig.KubeProxyConfiguration)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("got unexpected config type: %v", gvk)
|
return nil, fmt.Errorf("got unexpected config type: %v", gvk)
|
||||||
}
|
}
|
||||||
return config, nil
|
return config, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *Options) ApplyDefaults(in *proxyconfig.KubeProxyConfiguration) (*proxyconfig.KubeProxyConfiguration, error) {
|
func (o *Options) ApplyDefaults(in *kubeproxyconfig.KubeProxyConfiguration) (*kubeproxyconfig.KubeProxyConfiguration, error) {
|
||||||
external, err := o.scheme.ConvertToVersion(in, v1alpha1.SchemeGroupVersion)
|
external, err := o.scheme.ConvertToVersion(in, v1alpha1.SchemeGroupVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -302,12 +302,12 @@ func (o *Options) ApplyDefaults(in *proxyconfig.KubeProxyConfiguration) (*proxyc
|
|||||||
|
|
||||||
o.scheme.Default(external)
|
o.scheme.Default(external)
|
||||||
|
|
||||||
internal, err := o.scheme.ConvertToVersion(external, proxyconfig.SchemeGroupVersion)
|
internal, err := o.scheme.ConvertToVersion(external, kubeproxyconfig.SchemeGroupVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
out := internal.(*proxyconfig.KubeProxyConfiguration)
|
out := internal.(*kubeproxyconfig.KubeProxyConfiguration)
|
||||||
|
|
||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
@ -358,7 +358,7 @@ type ProxyServer struct {
|
|||||||
Proxier proxy.ProxyProvider
|
Proxier proxy.ProxyProvider
|
||||||
Broadcaster record.EventBroadcaster
|
Broadcaster record.EventBroadcaster
|
||||||
Recorder record.EventRecorder
|
Recorder record.EventRecorder
|
||||||
ConntrackConfiguration proxyconfig.KubeProxyConntrackConfiguration
|
ConntrackConfiguration kubeproxyconfig.KubeProxyConntrackConfiguration
|
||||||
Conntracker Conntracker // if nil, ignored
|
Conntracker Conntracker // if nil, ignored
|
||||||
ProxyMode string
|
ProxyMode string
|
||||||
NodeRef *v1.ObjectReference
|
NodeRef *v1.ObjectReference
|
||||||
@ -375,7 +375,7 @@ type ProxyServer struct {
|
|||||||
|
|
||||||
// createClients creates a kube client and an event client from the given config and masterOverride.
|
// createClients creates a kube client and an event client from the given config and masterOverride.
|
||||||
// TODO remove masterOverride when CLI flags are removed.
|
// TODO remove masterOverride when CLI flags are removed.
|
||||||
func createClients(config proxyconfig.ClientConnectionConfiguration, masterOverride string) (clientset.Interface, v1core.EventsGetter, error) {
|
func createClients(config kubeproxyconfig.ClientConnectionConfiguration, masterOverride string) (clientset.Interface, v1core.EventsGetter, error) {
|
||||||
var kubeConfig *rest.Config
|
var kubeConfig *rest.Config
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
@ -547,7 +547,7 @@ func (s *ProxyServer) birthCry() {
|
|||||||
s.Recorder.Eventf(s.NodeRef, api.EventTypeNormal, "Starting", "Starting kube-proxy.")
|
s.Recorder.Eventf(s.NodeRef, api.EventTypeNormal, "Starting", "Starting kube-proxy.")
|
||||||
}
|
}
|
||||||
|
|
||||||
func getConntrackMax(config proxyconfig.KubeProxyConntrackConfiguration) (int, error) {
|
func getConntrackMax(config kubeproxyconfig.KubeProxyConntrackConfiguration) (int, error) {
|
||||||
if config.Max > 0 {
|
if config.Max > 0 {
|
||||||
if config.MaxPerCore > 0 {
|
if config.MaxPerCore > 0 {
|
||||||
return -1, fmt.Errorf("invalid config: Conntrack Max and Conntrack MaxPerCore are mutually exclusive")
|
return -1, fmt.Errorf("invalid config: Conntrack Max and Conntrack MaxPerCore are mutually exclusive")
|
||||||
|
@ -34,7 +34,7 @@ import (
|
|||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
"k8s.io/kubernetes/pkg/features"
|
"k8s.io/kubernetes/pkg/features"
|
||||||
"k8s.io/kubernetes/pkg/proxy"
|
"k8s.io/kubernetes/pkg/proxy"
|
||||||
proxyconfigapi "k8s.io/kubernetes/pkg/proxy/apis/proxyconfig"
|
proxyconfigapi "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig"
|
||||||
proxyconfig "k8s.io/kubernetes/pkg/proxy/config"
|
proxyconfig "k8s.io/kubernetes/pkg/proxy/config"
|
||||||
"k8s.io/kubernetes/pkg/proxy/healthcheck"
|
"k8s.io/kubernetes/pkg/proxy/healthcheck"
|
||||||
"k8s.io/kubernetes/pkg/proxy/iptables"
|
"k8s.io/kubernetes/pkg/proxy/iptables"
|
||||||
|
@ -29,7 +29,7 @@ import (
|
|||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/diff"
|
"k8s.io/apimachinery/pkg/util/diff"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/proxy/apis/proxyconfig"
|
"k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig"
|
||||||
"k8s.io/kubernetes/pkg/util/configz"
|
"k8s.io/kubernetes/pkg/util/configz"
|
||||||
"k8s.io/kubernetes/pkg/util/iptables"
|
"k8s.io/kubernetes/pkg/util/iptables"
|
||||||
utilpointer "k8s.io/kubernetes/pkg/util/pointer"
|
utilpointer "k8s.io/kubernetes/pkg/util/pointer"
|
||||||
@ -145,7 +145,7 @@ func TestProxyServerWithCleanupAndExit(t *testing.T) {
|
|||||||
for _, addr := range bindAddresses {
|
for _, addr := range bindAddresses {
|
||||||
options := NewOptions()
|
options := NewOptions()
|
||||||
|
|
||||||
options.config = &proxyconfig.KubeProxyConfiguration{
|
options.config = &kubeproxyconfig.KubeProxyConfiguration{
|
||||||
BindAddress: addr,
|
BindAddress: addr,
|
||||||
}
|
}
|
||||||
options.CleanupAndExit = true
|
options.CleanupAndExit = true
|
||||||
@ -158,7 +158,7 @@ func TestProxyServerWithCleanupAndExit(t *testing.T) {
|
|||||||
assert.True(t, proxyserver.CleanupAndExit, "false CleanupAndExit, addr: %s", addr)
|
assert.True(t, proxyserver.CleanupAndExit, "false CleanupAndExit, addr: %s", addr)
|
||||||
|
|
||||||
// Clean up config for next test case
|
// Clean up config for next test case
|
||||||
configz.Delete(proxyconfig.GroupName)
|
configz.Delete(kubeproxyconfig.GroupName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -202,7 +202,7 @@ func TestGetConntrackMax(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for i, tc := range testCases {
|
for i, tc := range testCases {
|
||||||
cfg := proxyconfig.KubeProxyConntrackConfiguration{
|
cfg := kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Min: tc.min,
|
Min: tc.min,
|
||||||
Max: tc.max,
|
Max: tc.max,
|
||||||
MaxPerCore: tc.maxPerCore,
|
MaxPerCore: tc.maxPerCore,
|
||||||
@ -223,7 +223,7 @@ func TestGetConntrackMax(t *testing.T) {
|
|||||||
// TestLoadConfig tests proper operation of loadConfig()
|
// TestLoadConfig tests proper operation of loadConfig()
|
||||||
func TestLoadConfig(t *testing.T) {
|
func TestLoadConfig(t *testing.T) {
|
||||||
|
|
||||||
yamlTemplate := `apiVersion: kubeproxy.k8s.io/v1alpha1
|
yamlTemplate := `apiVersion: kubeproxyconfig.k8s.io/v1alpha1
|
||||||
bindAddress: %s
|
bindAddress: %s
|
||||||
clientConnection:
|
clientConnection:
|
||||||
acceptContentTypes: "abc"
|
acceptContentTypes: "abc"
|
||||||
@ -332,9 +332,9 @@ udpTimeoutMilliseconds: 123ms
|
|||||||
// Surrounding double quotes will get stripped by the yaml parser.
|
// Surrounding double quotes will get stripped by the yaml parser.
|
||||||
expBindAddr = expBindAddr[1 : len(tc.bindAddress)-1]
|
expBindAddr = expBindAddr[1 : len(tc.bindAddress)-1]
|
||||||
}
|
}
|
||||||
expected := &proxyconfig.KubeProxyConfiguration{
|
expected := &kubeproxyconfig.KubeProxyConfiguration{
|
||||||
BindAddress: expBindAddr,
|
BindAddress: expBindAddr,
|
||||||
ClientConnection: proxyconfig.ClientConnectionConfiguration{
|
ClientConnection: kubeproxyconfig.ClientConnectionConfiguration{
|
||||||
AcceptContentTypes: "abc",
|
AcceptContentTypes: "abc",
|
||||||
Burst: 100,
|
Burst: 100,
|
||||||
ContentType: "content-type",
|
ContentType: "content-type",
|
||||||
@ -343,7 +343,7 @@ udpTimeoutMilliseconds: 123ms
|
|||||||
},
|
},
|
||||||
ClusterCIDR: tc.clusterCIDR,
|
ClusterCIDR: tc.clusterCIDR,
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 15 * time.Second},
|
ConfigSyncPeriod: metav1.Duration{Duration: 15 * time.Second},
|
||||||
Conntrack: proxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: 4,
|
Max: 4,
|
||||||
MaxPerCore: 2,
|
MaxPerCore: 2,
|
||||||
Min: 1,
|
Min: 1,
|
||||||
@ -353,18 +353,18 @@ udpTimeoutMilliseconds: 123ms
|
|||||||
FeatureGates: "all",
|
FeatureGates: "all",
|
||||||
HealthzBindAddress: tc.healthzBindAddress,
|
HealthzBindAddress: tc.healthzBindAddress,
|
||||||
HostnameOverride: "foo",
|
HostnameOverride: "foo",
|
||||||
IPTables: proxyconfig.KubeProxyIPTablesConfiguration{
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
MasqueradeBit: utilpointer.Int32Ptr(17),
|
MasqueradeBit: utilpointer.Int32Ptr(17),
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
||||||
SyncPeriod: metav1.Duration{Duration: 60 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 60 * time.Second},
|
||||||
},
|
},
|
||||||
IPVS: proxyconfig.KubeProxyIPVSConfiguration{
|
IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
||||||
SyncPeriod: metav1.Duration{Duration: 60 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 60 * time.Second},
|
||||||
},
|
},
|
||||||
MetricsBindAddress: tc.metricsBindAddress,
|
MetricsBindAddress: tc.metricsBindAddress,
|
||||||
Mode: proxyconfig.ProxyMode(tc.mode),
|
Mode: kubeproxyconfig.ProxyMode(tc.mode),
|
||||||
OOMScoreAdj: utilpointer.Int32Ptr(17),
|
OOMScoreAdj: utilpointer.Int32Ptr(17),
|
||||||
PortRange: "2-7",
|
PortRange: "2-7",
|
||||||
ResourceContainer: "/foo",
|
ResourceContainer: "/foo",
|
||||||
@ -407,7 +407,7 @@ func TestLoadConfigFailures(t *testing.T) {
|
|||||||
expErr: "mapping values are not allowed in this context",
|
expErr: "mapping values are not allowed in this context",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
version := "apiVersion: kubeproxy.k8s.io/v1alpha1"
|
version := "apiVersion: kubeproxyconfig.k8s.io/v1alpha1"
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
options := NewOptions()
|
options := NewOptions()
|
||||||
config := fmt.Sprintf("%s\n%s", version, tc.config)
|
config := fmt.Sprintf("%s\n%s", version, tc.config)
|
||||||
|
@ -32,7 +32,7 @@ import (
|
|||||||
utilnet "k8s.io/apimachinery/pkg/util/net"
|
utilnet "k8s.io/apimachinery/pkg/util/net"
|
||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
"k8s.io/kubernetes/pkg/proxy"
|
"k8s.io/kubernetes/pkg/proxy"
|
||||||
proxyconfigapi "k8s.io/kubernetes/pkg/proxy/apis/proxyconfig"
|
proxyconfigapi "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig"
|
||||||
proxyconfig "k8s.io/kubernetes/pkg/proxy/config"
|
proxyconfig "k8s.io/kubernetes/pkg/proxy/config"
|
||||||
"k8s.io/kubernetes/pkg/proxy/healthcheck"
|
"k8s.io/kubernetes/pkg/proxy/healthcheck"
|
||||||
"k8s.io/kubernetes/pkg/proxy/winkernel"
|
"k8s.io/kubernetes/pkg/proxy/winkernel"
|
||||||
|
@ -16,4 +16,4 @@ limitations under the License.
|
|||||||
|
|
||||||
// +k8s:deepcopy-gen=package,register
|
// +k8s:deepcopy-gen=package,register
|
||||||
|
|
||||||
package proxyconfig // import "k8s.io/kubernetes/pkg/proxy/apis/proxyconfig"
|
package kubeproxyconfig // import "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig"
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package proxyconfig
|
package kubeproxyconfig
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
@ -27,7 +27,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// GroupName is the group name use in this package
|
// GroupName is the group name use in this package
|
||||||
const GroupName = "kubeproxy.k8s.io"
|
const GroupName = "kubeproxyconfig.k8s.io"
|
||||||
|
|
||||||
// SchemeGroupVersion is group version used to register these objects
|
// SchemeGroupVersion is group version used to register these objects
|
||||||
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal}
|
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal}
|
@ -21,8 +21,8 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
"k8s.io/kubernetes/pkg/proxy/apis/proxyconfig"
|
"k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig"
|
||||||
"k8s.io/kubernetes/pkg/proxy/apis/proxyconfig/v1alpha1"
|
"k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -41,5 +41,5 @@ func init() {
|
|||||||
// AddToScheme adds the types of this group into the given scheme.
|
// AddToScheme adds the types of this group into the given scheme.
|
||||||
func AddToScheme(scheme *runtime.Scheme) {
|
func AddToScheme(scheme *runtime.Scheme) {
|
||||||
v1alpha1.AddToScheme(scheme)
|
v1alpha1.AddToScheme(scheme)
|
||||||
proxyconfig.AddToScheme(scheme)
|
kubeproxyconfig.AddToScheme(scheme)
|
||||||
}
|
}
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package proxyconfig
|
package kubeproxyconfig
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
@ -15,8 +15,8 @@ limitations under the License.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// +k8s:deepcopy-gen=package,register
|
// +k8s:deepcopy-gen=package,register
|
||||||
// +k8s:conversion-gen=k8s.io/kubernetes/pkg/proxy/apis/proxyconfig
|
// +k8s:conversion-gen=k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig
|
||||||
// +k8s:openapi-gen=true
|
// +k8s:openapi-gen=true
|
||||||
// +k8s:defaulter-gen=TypeMeta
|
// +k8s:defaulter-gen=TypeMeta
|
||||||
|
|
||||||
package v1alpha1 // import "k8s.io/kubernetes/pkg/proxy/apis/proxyconfig/v1alpha1"
|
package v1alpha1 // import "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1"
|
@ -22,7 +22,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// GroupName is the group name use in this package
|
// GroupName is the group name use in this package
|
||||||
const GroupName = "kubeproxy.k8s.io"
|
const GroupName = "kubeproxyconfig.k8s.io"
|
||||||
|
|
||||||
// SchemeGroupVersion is group version used to register these objects
|
// SchemeGroupVersion is group version used to register these objects
|
||||||
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}
|
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}
|
@ -25,11 +25,11 @@ import (
|
|||||||
utilnet "k8s.io/apimachinery/pkg/util/net"
|
utilnet "k8s.io/apimachinery/pkg/util/net"
|
||||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||||
apivalidation "k8s.io/kubernetes/pkg/api/validation"
|
apivalidation "k8s.io/kubernetes/pkg/api/validation"
|
||||||
"k8s.io/kubernetes/pkg/proxy/apis/proxyconfig"
|
"k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Validate validates the configuration of kube-proxy
|
// Validate validates the configuration of kube-proxy
|
||||||
func Validate(config *proxyconfig.KubeProxyConfiguration) field.ErrorList {
|
func Validate(config *kubeproxyconfig.KubeProxyConfiguration) field.ErrorList {
|
||||||
allErrs := field.ErrorList{}
|
allErrs := field.ErrorList{}
|
||||||
|
|
||||||
newPath := field.NewPath("KubeProxyConfiguration")
|
newPath := field.NewPath("KubeProxyConfiguration")
|
||||||
@ -38,7 +38,7 @@ func Validate(config *proxyconfig.KubeProxyConfiguration) field.ErrorList {
|
|||||||
allErrs = append(allErrs, validateKubeProxyConntrackConfiguration(config.Conntrack, newPath.Child("KubeProxyConntrackConfiguration"))...)
|
allErrs = append(allErrs, validateKubeProxyConntrackConfiguration(config.Conntrack, newPath.Child("KubeProxyConntrackConfiguration"))...)
|
||||||
allErrs = append(allErrs, validateProxyMode(config.Mode, newPath.Child("Mode"))...)
|
allErrs = append(allErrs, validateProxyMode(config.Mode, newPath.Child("Mode"))...)
|
||||||
allErrs = append(allErrs, validateClientConnectionConfiguration(config.ClientConnection, newPath.Child("ClientConnection"))...)
|
allErrs = append(allErrs, validateClientConnectionConfiguration(config.ClientConnection, newPath.Child("ClientConnection"))...)
|
||||||
allErrs = append(allErrs, validateIPVSSchedulerMethod(proxyconfig.IPVSSchedulerMethod(config.IPVS.Scheduler), newPath.Child("KubeProxyIPVSConfiguration").Child("Scheduler"))...)
|
allErrs = append(allErrs, validateIPVSSchedulerMethod(kubeproxyconfig.IPVSSchedulerMethod(config.IPVS.Scheduler), newPath.Child("KubeProxyIPVSConfiguration").Child("Scheduler"))...)
|
||||||
|
|
||||||
if config.OOMScoreAdj != nil && (*config.OOMScoreAdj < -1000 || *config.OOMScoreAdj > 1000) {
|
if config.OOMScoreAdj != nil && (*config.OOMScoreAdj < -1000 || *config.OOMScoreAdj > 1000) {
|
||||||
allErrs = append(allErrs, field.Invalid(newPath.Child("OOMScoreAdj"), *config.OOMScoreAdj, "must be within the range [-1000, 1000]"))
|
allErrs = append(allErrs, field.Invalid(newPath.Child("OOMScoreAdj"), *config.OOMScoreAdj, "must be within the range [-1000, 1000]"))
|
||||||
@ -72,7 +72,7 @@ func Validate(config *proxyconfig.KubeProxyConfiguration) field.ErrorList {
|
|||||||
return allErrs
|
return allErrs
|
||||||
}
|
}
|
||||||
|
|
||||||
func validateKubeProxyIPTablesConfiguration(config proxyconfig.KubeProxyIPTablesConfiguration, fldPath *field.Path) field.ErrorList {
|
func validateKubeProxyIPTablesConfiguration(config kubeproxyconfig.KubeProxyIPTablesConfiguration, fldPath *field.Path) field.ErrorList {
|
||||||
allErrs := field.ErrorList{}
|
allErrs := field.ErrorList{}
|
||||||
|
|
||||||
if config.MasqueradeBit != nil && (*config.MasqueradeBit < 0 || *config.MasqueradeBit > 31) {
|
if config.MasqueradeBit != nil && (*config.MasqueradeBit < 0 || *config.MasqueradeBit > 31) {
|
||||||
@ -90,7 +90,7 @@ func validateKubeProxyIPTablesConfiguration(config proxyconfig.KubeProxyIPTables
|
|||||||
return allErrs
|
return allErrs
|
||||||
}
|
}
|
||||||
|
|
||||||
func validateKubeProxyConntrackConfiguration(config proxyconfig.KubeProxyConntrackConfiguration, fldPath *field.Path) field.ErrorList {
|
func validateKubeProxyConntrackConfiguration(config kubeproxyconfig.KubeProxyConntrackConfiguration, fldPath *field.Path) field.ErrorList {
|
||||||
allErrs := field.ErrorList{}
|
allErrs := field.ErrorList{}
|
||||||
|
|
||||||
if config.Max < 0 {
|
if config.Max < 0 {
|
||||||
@ -116,22 +116,22 @@ func validateKubeProxyConntrackConfiguration(config proxyconfig.KubeProxyConntra
|
|||||||
return allErrs
|
return allErrs
|
||||||
}
|
}
|
||||||
|
|
||||||
func validateProxyMode(mode proxyconfig.ProxyMode, fldPath *field.Path) field.ErrorList {
|
func validateProxyMode(mode kubeproxyconfig.ProxyMode, fldPath *field.Path) field.ErrorList {
|
||||||
allErrs := field.ErrorList{}
|
allErrs := field.ErrorList{}
|
||||||
switch mode {
|
switch mode {
|
||||||
case proxyconfig.ProxyModeUserspace:
|
case kubeproxyconfig.ProxyModeUserspace:
|
||||||
case proxyconfig.ProxyModeIPTables:
|
case kubeproxyconfig.ProxyModeIPTables:
|
||||||
case proxyconfig.ProxyModeIPVS:
|
case kubeproxyconfig.ProxyModeIPVS:
|
||||||
case "":
|
case "":
|
||||||
default:
|
default:
|
||||||
modes := []string{string(proxyconfig.ProxyModeUserspace), string(proxyconfig.ProxyModeIPTables), string(proxyconfig.ProxyModeIPVS)}
|
modes := []string{string(kubeproxyconfig.ProxyModeUserspace), string(kubeproxyconfig.ProxyModeIPTables), string(kubeproxyconfig.ProxyModeIPVS)}
|
||||||
errMsg := fmt.Sprintf("must be %s or blank (blank means the best-available proxy (currently iptables)", strings.Join(modes, ","))
|
errMsg := fmt.Sprintf("must be %s or blank (blank means the best-available proxy (currently iptables)", strings.Join(modes, ","))
|
||||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("ProxyMode"), string(mode), errMsg))
|
allErrs = append(allErrs, field.Invalid(fldPath.Child("ProxyMode"), string(mode), errMsg))
|
||||||
}
|
}
|
||||||
return allErrs
|
return allErrs
|
||||||
}
|
}
|
||||||
|
|
||||||
func validateClientConnectionConfiguration(config proxyconfig.ClientConnectionConfiguration, fldPath *field.Path) field.ErrorList {
|
func validateClientConnectionConfiguration(config kubeproxyconfig.ClientConnectionConfiguration, fldPath *field.Path) field.ErrorList {
|
||||||
allErrs := field.ErrorList{}
|
allErrs := field.ErrorList{}
|
||||||
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(config.Burst), fldPath.Child("Burst"))...)
|
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(config.Burst), fldPath.Child("Burst"))...)
|
||||||
return allErrs
|
return allErrs
|
||||||
@ -159,18 +159,18 @@ func validateHostPort(input string, fldPath *field.Path) field.ErrorList {
|
|||||||
return allErrs
|
return allErrs
|
||||||
}
|
}
|
||||||
|
|
||||||
func validateIPVSSchedulerMethod(scheduler proxyconfig.IPVSSchedulerMethod, fldPath *field.Path) field.ErrorList {
|
func validateIPVSSchedulerMethod(scheduler kubeproxyconfig.IPVSSchedulerMethod, fldPath *field.Path) field.ErrorList {
|
||||||
supportedMethod := []proxyconfig.IPVSSchedulerMethod{
|
supportedMethod := []kubeproxyconfig.IPVSSchedulerMethod{
|
||||||
proxyconfig.RoundRobin,
|
kubeproxyconfig.RoundRobin,
|
||||||
proxyconfig.WeightedRoundRobin,
|
kubeproxyconfig.WeightedRoundRobin,
|
||||||
proxyconfig.LeastConnection,
|
kubeproxyconfig.LeastConnection,
|
||||||
proxyconfig.WeightedLeastConnection,
|
kubeproxyconfig.WeightedLeastConnection,
|
||||||
proxyconfig.LocalityBasedLeastConnection,
|
kubeproxyconfig.LocalityBasedLeastConnection,
|
||||||
proxyconfig.LocalityBasedLeastConnectionWithReplication,
|
kubeproxyconfig.LocalityBasedLeastConnectionWithReplication,
|
||||||
proxyconfig.SourceHashing,
|
kubeproxyconfig.SourceHashing,
|
||||||
proxyconfig.DestinationHashing,
|
kubeproxyconfig.DestinationHashing,
|
||||||
proxyconfig.ShortestExpectedDelay,
|
kubeproxyconfig.ShortestExpectedDelay,
|
||||||
proxyconfig.NeverQueue,
|
kubeproxyconfig.NeverQueue,
|
||||||
"",
|
"",
|
||||||
}
|
}
|
||||||
allErrs := field.ErrorList{}
|
allErrs := field.ErrorList{}
|
@ -23,11 +23,11 @@ import (
|
|||||||
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||||
"k8s.io/kubernetes/pkg/proxy/apis/proxyconfig"
|
"k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestValidateKubeProxyConfiguration(t *testing.T) {
|
func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
successCases := []proxyconfig.KubeProxyConfiguration{
|
successCases := []kubeproxyconfig.KubeProxyConfiguration{
|
||||||
{
|
{
|
||||||
BindAddress: "192.168.59.103",
|
BindAddress: "192.168.59.103",
|
||||||
HealthzBindAddress: "0.0.0.0:10256",
|
HealthzBindAddress: "0.0.0.0:10256",
|
||||||
@ -35,12 +35,12 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
ClusterCIDR: "192.168.59.0/24",
|
ClusterCIDR: "192.168.59.0/24",
|
||||||
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
IPTables: proxyconfig.KubeProxyIPTablesConfiguration{
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: proxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: int32(2),
|
Max: int32(2),
|
||||||
MaxPerCore: int32(1),
|
MaxPerCore: int32(1),
|
||||||
Min: int32(1),
|
Min: int32(1),
|
||||||
@ -57,11 +57,11 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
errorCases := []struct {
|
errorCases := []struct {
|
||||||
config proxyconfig.KubeProxyConfiguration
|
config kubeproxyconfig.KubeProxyConfiguration
|
||||||
msg string
|
msg string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
config: proxyconfig.KubeProxyConfiguration{
|
config: kubeproxyconfig.KubeProxyConfiguration{
|
||||||
// only BindAddress is invalid
|
// only BindAddress is invalid
|
||||||
BindAddress: "10.10.12.11:2000",
|
BindAddress: "10.10.12.11:2000",
|
||||||
HealthzBindAddress: "0.0.0.0:10256",
|
HealthzBindAddress: "0.0.0.0:10256",
|
||||||
@ -69,12 +69,12 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
ClusterCIDR: "192.168.59.0/24",
|
ClusterCIDR: "192.168.59.0/24",
|
||||||
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
IPTables: proxyconfig.KubeProxyIPTablesConfiguration{
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: proxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: int32(2),
|
Max: int32(2),
|
||||||
MaxPerCore: int32(1),
|
MaxPerCore: int32(1),
|
||||||
Min: int32(1),
|
Min: int32(1),
|
||||||
@ -85,7 +85,7 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
msg: "not a valid textual representation of an IP address",
|
msg: "not a valid textual representation of an IP address",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
config: proxyconfig.KubeProxyConfiguration{
|
config: kubeproxyconfig.KubeProxyConfiguration{
|
||||||
BindAddress: "10.10.12.11",
|
BindAddress: "10.10.12.11",
|
||||||
// only HealthzBindAddress is invalid
|
// only HealthzBindAddress is invalid
|
||||||
HealthzBindAddress: "0.0.0.0",
|
HealthzBindAddress: "0.0.0.0",
|
||||||
@ -93,12 +93,12 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
ClusterCIDR: "192.168.59.0/24",
|
ClusterCIDR: "192.168.59.0/24",
|
||||||
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
IPTables: proxyconfig.KubeProxyIPTablesConfiguration{
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: proxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: int32(2),
|
Max: int32(2),
|
||||||
MaxPerCore: int32(1),
|
MaxPerCore: int32(1),
|
||||||
Min: int32(1),
|
Min: int32(1),
|
||||||
@ -109,7 +109,7 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
msg: "must be IP:port",
|
msg: "must be IP:port",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
config: proxyconfig.KubeProxyConfiguration{
|
config: kubeproxyconfig.KubeProxyConfiguration{
|
||||||
BindAddress: "10.10.12.11",
|
BindAddress: "10.10.12.11",
|
||||||
HealthzBindAddress: "0.0.0.0:12345",
|
HealthzBindAddress: "0.0.0.0:12345",
|
||||||
// only MetricsBindAddress is invalid
|
// only MetricsBindAddress is invalid
|
||||||
@ -117,12 +117,12 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
ClusterCIDR: "192.168.59.0/24",
|
ClusterCIDR: "192.168.59.0/24",
|
||||||
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
IPTables: proxyconfig.KubeProxyIPTablesConfiguration{
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: proxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: int32(2),
|
Max: int32(2),
|
||||||
MaxPerCore: int32(1),
|
MaxPerCore: int32(1),
|
||||||
Min: int32(1),
|
Min: int32(1),
|
||||||
@ -133,7 +133,7 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
msg: "must be IP:port",
|
msg: "must be IP:port",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
config: proxyconfig.KubeProxyConfiguration{
|
config: kubeproxyconfig.KubeProxyConfiguration{
|
||||||
BindAddress: "10.10.12.11",
|
BindAddress: "10.10.12.11",
|
||||||
HealthzBindAddress: "0.0.0.0:12345",
|
HealthzBindAddress: "0.0.0.0:12345",
|
||||||
MetricsBindAddress: "127.0.0.1:10249",
|
MetricsBindAddress: "127.0.0.1:10249",
|
||||||
@ -141,12 +141,12 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
ClusterCIDR: "192.168.59.0",
|
ClusterCIDR: "192.168.59.0",
|
||||||
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
IPTables: proxyconfig.KubeProxyIPTablesConfiguration{
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: proxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: int32(2),
|
Max: int32(2),
|
||||||
MaxPerCore: int32(1),
|
MaxPerCore: int32(1),
|
||||||
Min: int32(1),
|
Min: int32(1),
|
||||||
@ -157,7 +157,7 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
msg: "must be a valid CIDR block (e.g. 10.100.0.0/16)",
|
msg: "must be a valid CIDR block (e.g. 10.100.0.0/16)",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
config: proxyconfig.KubeProxyConfiguration{
|
config: kubeproxyconfig.KubeProxyConfiguration{
|
||||||
BindAddress: "10.10.12.11",
|
BindAddress: "10.10.12.11",
|
||||||
HealthzBindAddress: "0.0.0.0:12345",
|
HealthzBindAddress: "0.0.0.0:12345",
|
||||||
MetricsBindAddress: "127.0.0.1:10249",
|
MetricsBindAddress: "127.0.0.1:10249",
|
||||||
@ -165,12 +165,12 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
// only UDPIdleTimeout is invalid
|
// only UDPIdleTimeout is invalid
|
||||||
UDPIdleTimeout: metav1.Duration{Duration: -1 * time.Second},
|
UDPIdleTimeout: metav1.Duration{Duration: -1 * time.Second},
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
IPTables: proxyconfig.KubeProxyIPTablesConfiguration{
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: proxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: int32(2),
|
Max: int32(2),
|
||||||
MaxPerCore: int32(1),
|
MaxPerCore: int32(1),
|
||||||
Min: int32(1),
|
Min: int32(1),
|
||||||
@ -181,7 +181,7 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
msg: "must be greater than 0",
|
msg: "must be greater than 0",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
config: proxyconfig.KubeProxyConfiguration{
|
config: kubeproxyconfig.KubeProxyConfiguration{
|
||||||
BindAddress: "10.10.12.11",
|
BindAddress: "10.10.12.11",
|
||||||
HealthzBindAddress: "0.0.0.0:12345",
|
HealthzBindAddress: "0.0.0.0:12345",
|
||||||
MetricsBindAddress: "127.0.0.1:10249",
|
MetricsBindAddress: "127.0.0.1:10249",
|
||||||
@ -189,12 +189,12 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
||||||
// only ConfigSyncPeriod is invalid
|
// only ConfigSyncPeriod is invalid
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: -1 * time.Second},
|
ConfigSyncPeriod: metav1.Duration{Duration: -1 * time.Second},
|
||||||
IPTables: proxyconfig.KubeProxyIPTablesConfiguration{
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: proxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: int32(2),
|
Max: int32(2),
|
||||||
MaxPerCore: int32(1),
|
MaxPerCore: int32(1),
|
||||||
Min: int32(1),
|
Min: int32(1),
|
||||||
@ -217,7 +217,7 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
|
|
||||||
func TestValidateKubeProxyIPTablesConfiguration(t *testing.T) {
|
func TestValidateKubeProxyIPTablesConfiguration(t *testing.T) {
|
||||||
valid := int32(5)
|
valid := int32(5)
|
||||||
successCases := []proxyconfig.KubeProxyIPTablesConfiguration{
|
successCases := []kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
{
|
{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
@ -239,11 +239,11 @@ func TestValidateKubeProxyIPTablesConfiguration(t *testing.T) {
|
|||||||
|
|
||||||
invalid := int32(-10)
|
invalid := int32(-10)
|
||||||
errorCases := []struct {
|
errorCases := []struct {
|
||||||
config proxyconfig.KubeProxyIPTablesConfiguration
|
config kubeproxyconfig.KubeProxyIPTablesConfiguration
|
||||||
msg string
|
msg string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
config: proxyconfig.KubeProxyIPTablesConfiguration{
|
config: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: -5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: -5 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
@ -251,7 +251,7 @@ func TestValidateKubeProxyIPTablesConfiguration(t *testing.T) {
|
|||||||
msg: "must be greater than 0",
|
msg: "must be greater than 0",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
config: proxyconfig.KubeProxyIPTablesConfiguration{
|
config: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeBit: &valid,
|
MasqueradeBit: &valid,
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
@ -260,7 +260,7 @@ func TestValidateKubeProxyIPTablesConfiguration(t *testing.T) {
|
|||||||
msg: "must be greater than or equal to 0",
|
msg: "must be greater than or equal to 0",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
config: proxyconfig.KubeProxyIPTablesConfiguration{
|
config: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeBit: &invalid,
|
MasqueradeBit: &invalid,
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
@ -280,7 +280,7 @@ func TestValidateKubeProxyIPTablesConfiguration(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestValidateKubeProxyConntrackConfiguration(t *testing.T) {
|
func TestValidateKubeProxyConntrackConfiguration(t *testing.T) {
|
||||||
successCases := []proxyconfig.KubeProxyConntrackConfiguration{
|
successCases := []kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
{
|
{
|
||||||
Max: int32(2),
|
Max: int32(2),
|
||||||
MaxPerCore: int32(1),
|
MaxPerCore: int32(1),
|
||||||
@ -304,11 +304,11 @@ func TestValidateKubeProxyConntrackConfiguration(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
errorCases := []struct {
|
errorCases := []struct {
|
||||||
config proxyconfig.KubeProxyConntrackConfiguration
|
config kubeproxyconfig.KubeProxyConntrackConfiguration
|
||||||
msg string
|
msg string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
config: proxyconfig.KubeProxyConntrackConfiguration{
|
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: int32(-1),
|
Max: int32(-1),
|
||||||
MaxPerCore: int32(1),
|
MaxPerCore: int32(1),
|
||||||
Min: int32(1),
|
Min: int32(1),
|
||||||
@ -318,7 +318,7 @@ func TestValidateKubeProxyConntrackConfiguration(t *testing.T) {
|
|||||||
msg: "must be greater than or equal to 0",
|
msg: "must be greater than or equal to 0",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
config: proxyconfig.KubeProxyConntrackConfiguration{
|
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: int32(2),
|
Max: int32(2),
|
||||||
MaxPerCore: int32(-1),
|
MaxPerCore: int32(-1),
|
||||||
Min: int32(1),
|
Min: int32(1),
|
||||||
@ -328,7 +328,7 @@ func TestValidateKubeProxyConntrackConfiguration(t *testing.T) {
|
|||||||
msg: "must be greater than or equal to 0",
|
msg: "must be greater than or equal to 0",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
config: proxyconfig.KubeProxyConntrackConfiguration{
|
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: int32(2),
|
Max: int32(2),
|
||||||
MaxPerCore: int32(1),
|
MaxPerCore: int32(1),
|
||||||
Min: int32(-1),
|
Min: int32(-1),
|
||||||
@ -338,7 +338,7 @@ func TestValidateKubeProxyConntrackConfiguration(t *testing.T) {
|
|||||||
msg: "must be greater than or equal to 0",
|
msg: "must be greater than or equal to 0",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
config: proxyconfig.KubeProxyConntrackConfiguration{
|
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: int32(4),
|
Max: int32(4),
|
||||||
MaxPerCore: int32(1),
|
MaxPerCore: int32(1),
|
||||||
Min: int32(3),
|
Min: int32(3),
|
||||||
@ -348,7 +348,7 @@ func TestValidateKubeProxyConntrackConfiguration(t *testing.T) {
|
|||||||
msg: "must be greater than 0",
|
msg: "must be greater than 0",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
config: proxyconfig.KubeProxyConntrackConfiguration{
|
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: int32(4),
|
Max: int32(4),
|
||||||
MaxPerCore: int32(1),
|
MaxPerCore: int32(1),
|
||||||
Min: int32(3),
|
Min: int32(3),
|
||||||
@ -371,11 +371,11 @@ func TestValidateKubeProxyConntrackConfiguration(t *testing.T) {
|
|||||||
func TestValidateProxyMode(t *testing.T) {
|
func TestValidateProxyMode(t *testing.T) {
|
||||||
newPath := field.NewPath("KubeProxyConfiguration")
|
newPath := field.NewPath("KubeProxyConfiguration")
|
||||||
|
|
||||||
successCases := []proxyconfig.ProxyMode{
|
successCases := []kubeproxyconfig.ProxyMode{
|
||||||
proxyconfig.ProxyModeUserspace,
|
kubeproxyconfig.ProxyModeUserspace,
|
||||||
proxyconfig.ProxyModeIPTables,
|
kubeproxyconfig.ProxyModeIPTables,
|
||||||
proxyconfig.ProxyModeIPVS,
|
kubeproxyconfig.ProxyModeIPVS,
|
||||||
proxyconfig.ProxyMode(""),
|
kubeproxyconfig.ProxyMode(""),
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, successCase := range successCases {
|
for _, successCase := range successCases {
|
||||||
@ -385,11 +385,11 @@ func TestValidateProxyMode(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
errorCases := []struct {
|
errorCases := []struct {
|
||||||
mode proxyconfig.ProxyMode
|
mode kubeproxyconfig.ProxyMode
|
||||||
msg string
|
msg string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
mode: proxyconfig.ProxyMode("non-existing"),
|
mode: kubeproxyconfig.ProxyMode("non-existing"),
|
||||||
msg: "or blank (blank means the best-available proxy (currently iptables)",
|
msg: "or blank (blank means the best-available proxy (currently iptables)",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -406,7 +406,7 @@ func TestValidateProxyMode(t *testing.T) {
|
|||||||
func TestValidateClientConnectionConfiguration(t *testing.T) {
|
func TestValidateClientConnectionConfiguration(t *testing.T) {
|
||||||
newPath := field.NewPath("KubeProxyConfiguration")
|
newPath := field.NewPath("KubeProxyConfiguration")
|
||||||
|
|
||||||
successCases := []proxyconfig.ClientConnectionConfiguration{
|
successCases := []kubeproxyconfig.ClientConnectionConfiguration{
|
||||||
{
|
{
|
||||||
Burst: 0,
|
Burst: 0,
|
||||||
},
|
},
|
||||||
@ -422,11 +422,11 @@ func TestValidateClientConnectionConfiguration(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
errorCases := []struct {
|
errorCases := []struct {
|
||||||
ccc proxyconfig.ClientConnectionConfiguration
|
ccc kubeproxyconfig.ClientConnectionConfiguration
|
||||||
msg string
|
msg string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
ccc: proxyconfig.ClientConnectionConfiguration{Burst: -5},
|
ccc: kubeproxyconfig.ClientConnectionConfiguration{Burst: -5},
|
||||||
msg: "must be greater than or equal to 0",
|
msg: "must be greater than or equal to 0",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -493,17 +493,17 @@ func TestValidateHostPort(t *testing.T) {
|
|||||||
func TestValidateIPVSSchedulerMethod(t *testing.T) {
|
func TestValidateIPVSSchedulerMethod(t *testing.T) {
|
||||||
newPath := field.NewPath("KubeProxyConfiguration")
|
newPath := field.NewPath("KubeProxyConfiguration")
|
||||||
|
|
||||||
successCases := []proxyconfig.IPVSSchedulerMethod{
|
successCases := []kubeproxyconfig.IPVSSchedulerMethod{
|
||||||
proxyconfig.RoundRobin,
|
kubeproxyconfig.RoundRobin,
|
||||||
proxyconfig.WeightedRoundRobin,
|
kubeproxyconfig.WeightedRoundRobin,
|
||||||
proxyconfig.LeastConnection,
|
kubeproxyconfig.LeastConnection,
|
||||||
proxyconfig.WeightedLeastConnection,
|
kubeproxyconfig.WeightedLeastConnection,
|
||||||
proxyconfig.LocalityBasedLeastConnection,
|
kubeproxyconfig.LocalityBasedLeastConnection,
|
||||||
proxyconfig.LocalityBasedLeastConnectionWithReplication,
|
kubeproxyconfig.LocalityBasedLeastConnectionWithReplication,
|
||||||
proxyconfig.SourceHashing,
|
kubeproxyconfig.SourceHashing,
|
||||||
proxyconfig.DestinationHashing,
|
kubeproxyconfig.DestinationHashing,
|
||||||
proxyconfig.ShortestExpectedDelay,
|
kubeproxyconfig.ShortestExpectedDelay,
|
||||||
proxyconfig.NeverQueue,
|
kubeproxyconfig.NeverQueue,
|
||||||
"",
|
"",
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -514,11 +514,11 @@ func TestValidateIPVSSchedulerMethod(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
errorCases := []struct {
|
errorCases := []struct {
|
||||||
mode proxyconfig.IPVSSchedulerMethod
|
mode kubeproxyconfig.IPVSSchedulerMethod
|
||||||
msg string
|
msg string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
mode: proxyconfig.IPVSSchedulerMethod("non-existing"),
|
mode: kubeproxyconfig.IPVSSchedulerMethod("non-existing"),
|
||||||
msg: "blank means the default algorithm method (currently rr)",
|
msg: "blank means the default algorithm method (currently rr)",
|
||||||
},
|
},
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user