move IPv6DualStack feature to stable. (#104691)
* kube-proxy * endpoints controller * app: kube-controller-manager * app: cloud-controller-manager * kubelet * app: api-server * node utils + registry/strategy * api: validation (comment removal) * api:pod strategy (util pkg) * api: docs * core: integration testing * kubeadm: change feature gate to GA * service registry and rest stack * move feature to GA * generated
This commit is contained in:

committed by
GitHub

parent
c74d799677
commit
a53e2eaeab
@@ -28,14 +28,11 @@ import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/intstr"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||
"k8s.io/client-go/informers"
|
||||
clientset "k8s.io/client-go/kubernetes"
|
||||
restclient "k8s.io/client-go/rest"
|
||||
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
||||
"k8s.io/kubernetes/pkg/controller/endpoint"
|
||||
"k8s.io/kubernetes/pkg/controller/endpointslice"
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
"k8s.io/kubernetes/test/integration/framework"
|
||||
netutils "k8s.io/utils/net"
|
||||
)
|
||||
@@ -48,9 +45,6 @@ func TestDualStackEndpoints(t *testing.T) {
|
||||
return map[string]string{"foo": "bar"}
|
||||
}
|
||||
|
||||
dualStack := true
|
||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IPv6DualStack, dualStack)()
|
||||
|
||||
cfg := framework.NewIntegrationTestControlPlaneConfig()
|
||||
_, cidr, err := netutils.ParseCIDRSloppy(serviceCIDR)
|
||||
if err != nil {
|
||||
|
@@ -39,10 +39,6 @@ import (
|
||||
clientset "k8s.io/client-go/kubernetes"
|
||||
restclient "k8s.io/client-go/rest"
|
||||
|
||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
||||
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
"k8s.io/kubernetes/test/integration/framework"
|
||||
netutils "k8s.io/utils/net"
|
||||
)
|
||||
@@ -51,7 +47,6 @@ import (
|
||||
func TestCreateServiceSingleStackIPv4(t *testing.T) {
|
||||
// Create an IPv4 single stack control-plane
|
||||
serviceCIDR := "10.0.0.0/16"
|
||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IPv6DualStack, true)()
|
||||
|
||||
cfg := framework.NewIntegrationTestControlPlaneConfig()
|
||||
_, cidr, err := netutils.ParseCIDRSloppy(serviceCIDR)
|
||||
@@ -268,7 +263,6 @@ func TestCreateServiceSingleStackIPv4(t *testing.T) {
|
||||
func TestCreateServiceDualStackIPv6(t *testing.T) {
|
||||
// Create an IPv6 only dual stack control-plane
|
||||
serviceCIDR := "2001:db8:1::/48"
|
||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IPv6DualStack, true)()
|
||||
|
||||
cfg := framework.NewIntegrationTestControlPlaneConfig()
|
||||
_, cidr, err := netutils.ParseCIDRSloppy(serviceCIDR)
|
||||
@@ -488,7 +482,6 @@ func TestCreateServiceDualStackIPv4IPv6(t *testing.T) {
|
||||
// Create an IPv4IPv6 dual stack control-plane
|
||||
serviceCIDR := "10.0.0.0/16"
|
||||
secondaryServiceCIDR := "2001:db8:1::/48"
|
||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IPv6DualStack, true)()
|
||||
|
||||
cfg := framework.NewIntegrationTestControlPlaneConfig()
|
||||
_, cidr, err := netutils.ParseCIDRSloppy(serviceCIDR)
|
||||
@@ -715,7 +708,6 @@ func TestCreateServiceDualStackIPv6IPv4(t *testing.T) {
|
||||
// Create an IPv6IPv4 dual stack control-plane
|
||||
serviceCIDR := "2001:db8:1::/48"
|
||||
secondaryServiceCIDR := "10.0.0.0/16"
|
||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IPv6DualStack, true)()
|
||||
|
||||
cfg := framework.NewIntegrationTestControlPlaneConfig()
|
||||
_, cidr, err := netutils.ParseCIDRSloppy(serviceCIDR)
|
||||
@@ -945,7 +937,6 @@ func TestUpgradeDowngrade(t *testing.T) {
|
||||
// Create an IPv4IPv6 dual stack control-plane
|
||||
serviceCIDR := "10.0.0.0/16"
|
||||
secondaryServiceCIDR := "2001:db8:1::/48"
|
||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IPv6DualStack, true)()
|
||||
|
||||
cfg := framework.NewIntegrationTestControlPlaneConfig()
|
||||
_, cidr, err := netutils.ParseCIDRSloppy(serviceCIDR)
|
||||
@@ -1060,7 +1051,6 @@ func TestConvertToFromExternalName(t *testing.T) {
|
||||
// Create an IPv4IPv6 dual stack control-plane
|
||||
serviceCIDR := "10.0.0.0/16"
|
||||
secondaryServiceCIDR := "2001:db8:1::/48"
|
||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IPv6DualStack, true)()
|
||||
|
||||
cfg := framework.NewIntegrationTestControlPlaneConfig()
|
||||
_, cidr, err := netutils.ParseCIDRSloppy(serviceCIDR)
|
||||
@@ -1148,92 +1138,11 @@ func TestConvertToFromExternalName(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestExistingServiceDefaulting tests that existing services are defaulted correctly after an upgrade
|
||||
func TestExistingServiceDefaulting(t *testing.T) {
|
||||
// Create an IPv4IPv6 dual stack control-plane
|
||||
serviceCIDR := "10.0.0.0/16"
|
||||
cfg := framework.NewIntegrationTestControlPlaneConfig()
|
||||
_, cidr, err := netutils.ParseCIDRSloppy(serviceCIDR)
|
||||
if err != nil {
|
||||
t.Fatalf("bad cidr: %v", err)
|
||||
}
|
||||
cfg.ExtraConfig.ServiceIPRange = *cidr
|
||||
|
||||
_, s, closeFn := framework.RunAnAPIServer(cfg)
|
||||
defer closeFn()
|
||||
|
||||
client := clientset.NewForConfigOrDie(&restclient.Config{Host: s.URL})
|
||||
|
||||
// Wait until the default "kubernetes" service is created.
|
||||
if err = wait.Poll(250*time.Millisecond, time.Minute, func() (bool, error) {
|
||||
_, err := client.CoreV1().Services(metav1.NamespaceDefault).Get(context.TODO(), "kubernetes", metav1.GetOptions{})
|
||||
if err != nil && !apierrors.IsNotFound(err) {
|
||||
return false, err
|
||||
}
|
||||
return !apierrors.IsNotFound(err), nil
|
||||
}); err != nil {
|
||||
t.Fatalf("creating kubernetes service timed out")
|
||||
}
|
||||
|
||||
serviceName := "svc-ext-name"
|
||||
svc := &v1.Service{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: serviceName,
|
||||
},
|
||||
Spec: v1.ServiceSpec{
|
||||
Type: v1.ServiceTypeClusterIP,
|
||||
Ports: []v1.ServicePort{
|
||||
{
|
||||
Port: 443,
|
||||
TargetPort: intstr.FromInt(443),
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
// make sure gate is off (cluster is not running as dual stack)
|
||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IPv6DualStack, false)()
|
||||
|
||||
// create a service
|
||||
_, err = client.CoreV1().Services(metav1.NamespaceDefault).Create(context.TODO(), svc, metav1.CreateOptions{})
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error while creating service:%v", err)
|
||||
}
|
||||
|
||||
// validate the service was created correctly if it was not expected to fail
|
||||
svc, err = client.CoreV1().Services(metav1.NamespaceDefault).Get(context.TODO(), svc.Name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error to get the service %s %v", svc.Name, err)
|
||||
}
|
||||
|
||||
// turn gate on
|
||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IPv6DualStack, true)()
|
||||
|
||||
// validate the service was created correctly if it was not expected to fail
|
||||
defaultedSvc, err := client.CoreV1().Services(metav1.NamespaceDefault).Get(context.TODO(), svc.Name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error to get the service %s %v", svc.Name, err)
|
||||
}
|
||||
|
||||
if defaultedSvc.Spec.IPFamilyPolicy == nil {
|
||||
t.Fatalf("service should have an IPFamily Policy")
|
||||
} else {
|
||||
// must be equal to single stack
|
||||
if *(defaultedSvc.Spec.IPFamilyPolicy) != v1.IPFamilyPolicySingleStack {
|
||||
t.Fatalf("service should have a SingleStack as IPFamilyPolicy instead we got:%v", defaultedSvc.Spec.IPFamilyPolicy)
|
||||
}
|
||||
}
|
||||
|
||||
if err := validateServiceAndClusterIPFamily(defaultedSvc, []v1.IPFamily{v1.IPv4Protocol}); err != nil {
|
||||
t.Fatalf("Unexpected error validating the service %s %v", svc.Name, err)
|
||||
}
|
||||
}
|
||||
|
||||
// TestPreferDualStack preferDualstack on create and update
|
||||
func TestPreferDualStack(t *testing.T) {
|
||||
// Create an IPv4IPv6 dual stack control-plane
|
||||
serviceCIDR := "10.0.0.0/16"
|
||||
secondaryServiceCIDR := "2001:db8:1::/48"
|
||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IPv6DualStack, true)()
|
||||
|
||||
cfg := framework.NewIntegrationTestControlPlaneConfig()
|
||||
_, cidr, err := netutils.ParseCIDRSloppy(serviceCIDR)
|
||||
@@ -1318,7 +1227,6 @@ type labelsForMergePatch struct {
|
||||
func TestServiceUpdate(t *testing.T) {
|
||||
// Create an IPv4 single stack control-plane
|
||||
serviceCIDR := "10.0.0.0/16"
|
||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IPv6DualStack, false)()
|
||||
|
||||
cfg := framework.NewIntegrationTestControlPlaneConfig()
|
||||
_, cidr, err := netutils.ParseCIDRSloppy(serviceCIDR)
|
||||
@@ -1483,7 +1391,6 @@ func validateServiceAndClusterIPFamily(svc *v1.Service, expectedIPFamilies []v1.
|
||||
func TestUpgradeServicePreferToDualStack(t *testing.T) {
|
||||
// Create an IPv4 only dual stack control-plane
|
||||
serviceCIDR := "192.168.0.0/24"
|
||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IPv6DualStack, true)()
|
||||
|
||||
cfg := framework.NewIntegrationTestControlPlaneConfig()
|
||||
_, cidr, err := netutils.ParseCIDRSloppy(serviceCIDR)
|
||||
@@ -1580,7 +1487,7 @@ func TestDowngradeServicePreferToDualStack(t *testing.T) {
|
||||
// Create a dual stack control-plane
|
||||
serviceCIDR := "192.168.0.0/24"
|
||||
secondaryServiceCIDR := "2001:db8:1::/48"
|
||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IPv6DualStack, true)()
|
||||
|
||||
dualStackCfg := framework.NewIntegrationTestControlPlaneConfig()
|
||||
_, cidr, err := netutils.ParseCIDRSloppy(serviceCIDR)
|
||||
if err != nil {
|
||||
|
Reference in New Issue
Block a user