mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Changes according to the approved KEP. SCTP is supported for HostPort and LoadBalancer. Alpha feature flag SCTPSupport controls the support of SCTP. Kube-proxy config parameter is removed.
This commit is contained in:
		@@ -26,6 +26,8 @@ import (
 | 
			
		||||
	api "k8s.io/kubernetes/pkg/apis/core"
 | 
			
		||||
	apivalidation "k8s.io/kubernetes/pkg/apis/core/validation"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/networking"
 | 
			
		||||
	utilfeature "k8s.io/apiserver/pkg/util/feature"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/features"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ValidateNetworkPolicyName can be used to check whether the given networkpolicy
 | 
			
		||||
@@ -37,9 +39,12 @@ func ValidateNetworkPolicyName(name string, prefix bool) []string {
 | 
			
		||||
// ValidateNetworkPolicyPort validates a NetworkPolicyPort
 | 
			
		||||
func ValidateNetworkPolicyPort(port *networking.NetworkPolicyPort, portPath *field.Path) field.ErrorList {
 | 
			
		||||
	allErrs := field.ErrorList{}
 | 
			
		||||
 | 
			
		||||
	if port.Protocol != nil && *port.Protocol != api.ProtocolTCP && *port.Protocol != api.ProtocolUDP && *port.Protocol != api.ProtocolSCTP {
 | 
			
		||||
		allErrs = append(allErrs, field.NotSupported(portPath.Child("protocol"), *port.Protocol, []string{string(api.ProtocolTCP), string(api.ProtocolUDP), string(api.ProtocolSCTP)}))
 | 
			
		||||
	if utilfeature.DefaultFeatureGate.Enabled(features.SCTPSupport) {
 | 
			
		||||
		if port.Protocol != nil && *port.Protocol != api.ProtocolTCP && *port.Protocol != api.ProtocolUDP && *port.Protocol != api.ProtocolSCTP {
 | 
			
		||||
			allErrs = append(allErrs, field.NotSupported(portPath.Child("protocol"), *port.Protocol, []string{string(api.ProtocolTCP), string(api.ProtocolUDP), string(api.ProtocolSCTP)}))
 | 
			
		||||
		}
 | 
			
		||||
	} else if port.Protocol != nil && *port.Protocol != api.ProtocolTCP && *port.Protocol != api.ProtocolUDP {
 | 
			
		||||
        	allErrs = append(allErrs, field.NotSupported(portPath.Child("protocol"), *port.Protocol, []string{string(api.ProtocolTCP), string(api.ProtocolUDP)}))
 | 
			
		||||
	}
 | 
			
		||||
	if port.Port != nil {
 | 
			
		||||
		if port.Port.Type == intstr.Int {
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,9 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/intstr"
 | 
			
		||||
	api "k8s.io/kubernetes/pkg/apis/core"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/networking"
 | 
			
		||||
	utilfeature "k8s.io/apiserver/pkg/util/feature"
 | 
			
		||||
	utilfeaturetesting "k8s.io/apiserver/pkg/util/feature/testing"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/features"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestValidateNetworkPolicy(t *testing.T) {
 | 
			
		||||
@@ -30,6 +33,8 @@ func TestValidateNetworkPolicy(t *testing.T) {
 | 
			
		||||
	protocolUDP := api.ProtocolUDP
 | 
			
		||||
	protocolICMP := api.Protocol("ICMP")
 | 
			
		||||
	protocolSCTP := api.ProtocolSCTP
 | 
			
		||||
	
 | 
			
		||||
	defer utilfeaturetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.SCTPSupport, true)()
 | 
			
		||||
 | 
			
		||||
	successCases := []networking.NetworkPolicy{
 | 
			
		||||
		{
 | 
			
		||||
@@ -279,6 +284,7 @@ func TestValidateNetworkPolicy(t *testing.T) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Success cases are expected to pass validation.
 | 
			
		||||
	
 | 
			
		||||
	for k, v := range successCases {
 | 
			
		||||
		if errs := ValidateNetworkPolicy(&v); len(errs) != 0 {
 | 
			
		||||
			t.Errorf("Expected success for %d, got %v", k, errs)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user