From 68970462c0f629d950d7212e5ca7bb2eecf502a8 Mon Sep 17 00:00:00 2001 From: Kumar Vivek Date: Fri, 20 Sep 2024 06:02:30 +0000 Subject: [PATCH] [PLAT-15397]Add a check for software version when configuring Namespaced services Summary: We were blindly trying to make override changes even for charts that do not support Namespaced services. Added a software version check. Test Plan: Manually tested a flow where software version does not support Namespaced services. In this case, the AZ services are brought up like the old flow. Reviewers: anijhawan Reviewed By: anijhawan Subscribers: yugaware Differential Revision: https://phorge.dev.yugabyte.com/D38255 --- .../yugabyte/yw/common/KubernetesUtil.java | 17 +++++++++++-- .../yw/common/KubernetesUtilTest.java | 10 ++++---- .../UniverseCreateControllerTestBase.java | 24 +++++++++---------- 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/managed/src/main/java/com/yugabyte/yw/common/KubernetesUtil.java b/managed/src/main/java/com/yugabyte/yw/common/KubernetesUtil.java index c09b34ca2a8..d2d8f1dff05 100644 --- a/managed/src/main/java/com/yugabyte/yw/common/KubernetesUtil.java +++ b/managed/src/main/java/com/yugabyte/yw/common/KubernetesUtil.java @@ -61,7 +61,9 @@ public class KubernetesUtil { public static String MIN_VERSION_NON_RESTART_GFLAGS_UPGRADE_SUPPORT_PREVIEW = "2.23.0.0-b539"; - public static String MIN_VERSION_NON_RESTART_GFLAGS_UPGRADE_SUPPORT_STABLE = "2024.2.0.0-b999"; + public static String MIN_VERSION_NON_RESTART_GFLAGS_UPGRADE_SUPPORT_STABLE = "2024.2.0.0-b1"; + public static String MIN_VERSION_NAMESPACED_SERVICE_SUPPORT_PREVIEW = "2.23.1.0-b168"; + public static String MIN_VERSION_NAMESPACED_SERVICE_SUPPORT_STABLE = "2024.2.0.0-b1"; // Kubelet secret sync time + k8s_parent template sync time. public static final int WAIT_FOR_GFLAG_SYNC_SECS = 90; @@ -74,6 +76,15 @@ public static boolean isNonRestartGflagsUpgradeSupported(String universeSoftware > 0; } + public static boolean isNamespacedServiceSupported(String universeSoftwareVersion) { + return Util.compareYBVersions( + universeSoftwareVersion, + MIN_VERSION_NAMESPACED_SERVICE_SUPPORT_STABLE, + MIN_VERSION_NAMESPACED_SERVICE_SUPPORT_PREVIEW, + true) + > 0; + } + // ToDo: Old k8s provider needs to be fixed, so that we can get // rid of the old merging logic, & start treating them same as the // new providers. @@ -784,7 +795,9 @@ public static NodeDetails getKubernetesNodeName( public static boolean shouldConfigureNamespacedService( UniverseDefinitionTaskParams universeDetails, Map universeConfig) { if (!universeDetails.useNewHelmNamingStyle - || universeConfig.getOrDefault(Universe.LABEL_K8S_RESOURCES, "false").equals("false")) { + || universeConfig.getOrDefault(Universe.LABEL_K8S_RESOURCES, "false").equals("false") + || !isNamespacedServiceSupported( + universeDetails.getPrimaryCluster().userIntent.ybSoftwareVersion)) { return false; } return true; diff --git a/managed/src/test/java/com/yugabyte/yw/common/KubernetesUtilTest.java b/managed/src/test/java/com/yugabyte/yw/common/KubernetesUtilTest.java index ba154099f50..bbba7ff5242 100644 --- a/managed/src/test/java/com/yugabyte/yw/common/KubernetesUtilTest.java +++ b/managed/src/test/java/com/yugabyte/yw/common/KubernetesUtilTest.java @@ -63,7 +63,7 @@ private Map universeConfig() { @Test public void testExtraNSScopedServiceToRemoveRRDeleteDifferentNS() throws IOException { Pair> pair = - addClusterAndNodeDetailsK8s("2024.2.0.0", true /* createRR */); + addClusterAndNodeDetailsK8s("2024.2.0.0-b2", true /* createRR */); Map universeConfig = universeConfig(); String serviceEndpoint = TestUtils.readResource("kubernetes/service_endpoint_overrides.yaml"); Map azConfig = new HashMap<>(); @@ -101,7 +101,7 @@ public void testExtraNSScopedServiceToRemoveRRDeleteDifferentNS() throws IOExcep @Test public void testExtraNSScopedServiceToRemoveRRDeleteSameNS() throws IOException { Pair> pair = - addClusterAndNodeDetailsK8s("2024.2.0.0", true /* createRR */); + addClusterAndNodeDetailsK8s("2024.2.0.0-b2", true /* createRR */); Map universeConfig = universeConfig(); String serviceEndpoint = TestUtils.readResource("kubernetes/service_endpoint_overrides.yaml"); Map azConfig = new HashMap<>(); @@ -134,7 +134,7 @@ public void testExtraNSScopedServiceToRemoveRRDeleteSameNS() throws IOException @Test public void testExtraNSScopedServiceToRemoveOverridesChange() throws IOException { Pair> pair = - addClusterAndNodeDetailsK8s("2024.2.0.0", false /* createRR */); + addClusterAndNodeDetailsK8s("2024.2.0.0-b2", false /* createRR */); Map universeConfig = universeConfig(); String serviceEndpoint = TestUtils.readResource("kubernetes/service_endpoint_overrides.yaml"); String serviceEndpointsOverriden = @@ -162,7 +162,7 @@ public void testExtraNSScopedServiceToRemoveOverridesChange() throws IOException @Test public void testExtraNSScopedServiceToRemoveDeleteAZMultiNS() throws IOException { Pair> pair = - addClusterAndNodeDetailsK8s("2024.2.0.0", false /* createRR */); + addClusterAndNodeDetailsK8s("2024.2.0.0-b2", false /* createRR */); Map universeConfig = universeConfig(); String serviceEndpoint = TestUtils.readResource("kubernetes/service_endpoint_overrides.yaml"); Map azConfig = new HashMap<>(); @@ -232,7 +232,7 @@ public void testExtraNSScopedServiceToRemoveDeleteAZMultiNS() throws IOException @Test public void testExtraNSScopedServiceToRemoveDeleteAZSingleNS() throws IOException { Pair> pair = - addClusterAndNodeDetailsK8s("2024.2.0.0", false /* createRR */); + addClusterAndNodeDetailsK8s("2024.2.0.0-b2", false /* createRR */); Map universeConfig = universeConfig(); String serviceEndpoint = TestUtils.readResource("kubernetes/service_endpoint_overrides.yaml"); Map azConfig = new HashMap<>(); diff --git a/managed/src/test/java/com/yugabyte/yw/controllers/UniverseCreateControllerTestBase.java b/managed/src/test/java/com/yugabyte/yw/controllers/UniverseCreateControllerTestBase.java index 435c3a603c8..49156f81141 100644 --- a/managed/src/test/java/com/yugabyte/yw/controllers/UniverseCreateControllerTestBase.java +++ b/managed/src/test/java/com/yugabyte/yw/controllers/UniverseCreateControllerTestBase.java @@ -1607,7 +1607,7 @@ protected Result createUniverseWithoutYsqlPasswordAndYsqlEnabled() { // SEO: ServiceEndpointOverrides @Test public void testCreateK8sUniverseMatchingSEOSingleNSMultiAZSuccess() { - String ybVersion = "2024.2.0.0-b1"; + String ybVersion = "2024.2.0.0-b2"; when(mockRuntimeConfig.getBoolean("yb.use_new_helm_naming")).thenReturn(true); when(mockRuntimeConfig.getString("yb.universe.default_service_scope_for_k8s")) .thenReturn("Namespaced"); @@ -1645,7 +1645,7 @@ public void testCreateK8sUniverseMatchingSEOSingleNSMultiAZSuccess() { @Test public void testCreateK8sUniverseEmptyArraySEOSingleNSMultiAZSuccess() { - String ybVersion = "2024.2.0.0-b1"; + String ybVersion = "2024.2.0.0-b2"; when(mockRuntimeConfig.getBoolean("yb.use_new_helm_naming")).thenReturn(true); when(mockRuntimeConfig.getString("yb.universe.default_service_scope_for_k8s")) .thenReturn("Namespaced"); @@ -1683,7 +1683,7 @@ public void testCreateK8sUniverseEmptyArraySEOSingleNSMultiAZSuccess() { @Test public void testCreateK8sUniverseNoSEOSingleNSMultiAZSuccess() { - String ybVersion = "2024.2.0.0-b1"; + String ybVersion = "2024.2.0.0-b2"; when(mockRuntimeConfig.getBoolean("yb.use_new_helm_naming")).thenReturn(true); when(mockRuntimeConfig.getString("yb.universe.default_service_scope_for_k8s")) .thenReturn("Namespaced"); @@ -1712,7 +1712,7 @@ public void testCreateK8sUniverseNoSEOSingleNSMultiAZSuccess() { @Test public void testCreateK8sUniverseMatchingSEOMultiNSMultiAZSuccess() { - String ybVersion = "2024.2.0.0-b1"; + String ybVersion = "2024.2.0.0-b2"; when(mockRuntimeConfig.getBoolean("yb.use_new_helm_naming")).thenReturn(true); when(mockRuntimeConfig.getString("yb.universe.default_service_scope_for_k8s")) .thenReturn("Namespaced"); @@ -1758,7 +1758,7 @@ public void testCreateK8sUniverseMatchingSEOMultiNSMultiAZSuccess() { @Test public void testCreateK8sUniverseWithRRMatchingSEOSameNSMultiAZSuccess() { - String ybVersion = "2024.2.0.0-b1"; + String ybVersion = "2024.2.0.0-b2"; when(mockRuntimeConfig.getBoolean("yb.use_new_helm_naming")).thenReturn(true); when(mockRuntimeConfig.getString("yb.universe.default_service_scope_for_k8s")) .thenReturn("Namespaced"); @@ -1796,7 +1796,7 @@ public void testCreateK8sUniverseWithRRMatchingSEOSameNSMultiAZSuccess() { @Test public void testCreateK8sUniverseWithRRMatchingSEOMultiNSMultiAZSuccess() { - String ybVersion = "2024.2.0.0-b1"; + String ybVersion = "2024.2.0.0-b2"; when(mockRuntimeConfig.getBoolean("yb.use_new_helm_naming")).thenReturn(true); when(mockRuntimeConfig.getString("yb.universe.default_service_scope_for_k8s")) .thenReturn("Namespaced"); @@ -1845,7 +1845,7 @@ public void testCreateK8sUniverseWithRRMatchingSEOMultiNSMultiAZSuccess() { @Test public void testCreateK8sUniverseMCSMatchingSEOSameNSMultiAZSuccess() { - String ybVersion = "2024.2.0.0-b1"; + String ybVersion = "2024.2.0.0-b2"; when(mockRuntimeConfig.getBoolean("yb.use_new_helm_naming")).thenReturn(true); when(mockRuntimeConfig.getString("yb.universe.default_service_scope_for_k8s")) .thenReturn("Namespaced"); @@ -1900,7 +1900,7 @@ public void testCreateK8sUniverseMCSMatchingSEOSameNSMultiAZSuccess() { @Test public void testCreateK8sUniverseMismatchSEOMultiNSMultiAZFail() { - String ybVersion = "2024.2.0.0-b1"; + String ybVersion = "2024.2.0.0-b2"; when(mockRuntimeConfig.getBoolean("yb.use_new_helm_naming")).thenReturn(true); when(mockRuntimeConfig.getString("yb.universe.default_service_scope_for_k8s")) .thenReturn("Namespaced"); @@ -1948,7 +1948,7 @@ public void testCreateK8sUniverseMismatchSEOMultiNSMultiAZFail() { @Test public void testCreateK8sUniverseMCSMismatchSEOSingleNSMultiAZFail() { - String ybVersion = "2024.2.0.0-b1"; + String ybVersion = "2024.2.0.0-b2"; when(mockRuntimeConfig.getBoolean("yb.use_new_helm_naming")).thenReturn(true); when(mockRuntimeConfig.getString("yb.universe.default_service_scope_for_k8s")) .thenReturn("Namespaced"); @@ -2010,7 +2010,7 @@ public void testCreateK8sUniverseMCSMismatchSEOSingleNSMultiAZFail() { @Test public void testCreateK8sUniverseWithRRMismatchSEOSingleNSMultiAZFail() { - String ybVersion = "2024.2.0.0-b1"; + String ybVersion = "2024.2.0.0-b2"; when(mockRuntimeConfig.getBoolean("yb.use_new_helm_naming")).thenReturn(true); when(mockRuntimeConfig.getString("yb.universe.default_service_scope_for_k8s")) .thenReturn("Namespaced"); @@ -2060,7 +2060,7 @@ public void testCreateK8sUniverseWithRRMismatchSEOSingleNSMultiAZFail() { @Test public void testCreateK8sUniverseMismatchSEOSingleNSMultiAZFail() { - String ybVersion = "2024.2.0.0-b1"; + String ybVersion = "2024.2.0.0-b2"; when(mockRuntimeConfig.getBoolean("yb.use_new_helm_naming")).thenReturn(true); when(mockRuntimeConfig.getString("yb.universe.default_service_scope_for_k8s")) .thenReturn("Namespaced"); @@ -2114,7 +2114,7 @@ public void testCreateK8sUniverseMismatchSEOSingleNSMultiAZFail() { @Test public void testCreateK8sUniverseConflictingSameNameSEOFail() { - String ybVersion = "2024.2.0.0-b1"; + String ybVersion = "2024.2.0.0-b2"; when(mockRuntimeConfig.getBoolean("yb.use_new_helm_naming")).thenReturn(true); when(mockRuntimeConfig.getString("yb.universe.default_service_scope_for_k8s")) .thenReturn("Namespaced");