You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ni...@apache.org on 2014/12/07 13:40:43 UTC

[10/16] stratos git commit: Porting container APIs with grouping changes.

Porting container APIs with grouping changes.


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/2e9edf45
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/2e9edf45
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/2e9edf45

Branch: refs/heads/master
Commit: 2e9edf4579418e831b3a6e0e8b28e62ca6265530
Parents: 1821ee0
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Sun Dec 7 12:50:24 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sun Dec 7 18:00:49 2014 +0530

----------------------------------------------------------------------
 .../client/CloudControllerClient.java           |   4 +-
 .../domain/KubernetesClusterContext.java        | 160 +++++++++----------
 .../impl/CloudControllerServiceImpl.java        |  81 +++++++---
 .../impl/CloudControllerServiceUtil.java        |   2 +
 .../controller/util/CloudControllerUtil.java    |  43 +++--
 .../common/constants/StratosConstants.java      |   2 +
 6 files changed, 171 insertions(+), 121 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/2e9edf45/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/CloudControllerClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/CloudControllerClient.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/CloudControllerClient.java
index bf68913..e902dfb 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/CloudControllerClient.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/CloudControllerClient.java
@@ -197,7 +197,7 @@ public class CloudControllerClient {
             isPrimaryProp.setValue(String.valueOf(isPrimary));
 
             Property minCountProp = new Property();
-            minCountProp.setName("MIN_COUNT");
+            minCountProp.setName(StratosConstants.MIN_COUNT);
             minCountProp.setValue(String.valueOf(minMemberCount));
 
             memberContextProps.addProperty(isPrimaryProp);
@@ -381,7 +381,7 @@ public class CloudControllerClient {
             isPrimaryProp.setValue(String.valueOf(isPrimary));
 
             Property minCountProp = new Property();
-            minCountProp.setName("MIN_COUNT");
+            minCountProp.setName(StratosConstants.MIN_COUNT);
             minCountProp.setValue(String.valueOf(minMemberCount));
 
             memberContextProps.addProperty(isPrimaryProp);

http://git-wip-us.apache.org/repos/asf/stratos/blob/2e9edf45/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/KubernetesClusterContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/KubernetesClusterContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/KubernetesClusterContext.java
index 1f19271..a92db26 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/KubernetesClusterContext.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/KubernetesClusterContext.java
@@ -38,26 +38,31 @@ public class KubernetesClusterContext implements Serializable {
 	
 	// id of the Kubernetes cluster
     private String kubernetesClusterId;
-    // available host port range, delimited by a hyphen
-    private String hostPortRange;
+    private int upperPort;
+    private int lowerPort;
     // kubernetes master ip
     private String masterIp;
+    private String masterPort;
     // available list of ports
     private List<Integer> availableHostPorts;
     // kubernetes client API instance
     private transient KubernetesApiClient kubApi;
     
-    public KubernetesClusterContext(String id, String portRange, String masterIp) {
+    public KubernetesClusterContext(String id, String masterIp, String masterPort, int upperPort, int lowerPort) {
     	availableHostPorts = new ArrayList<Integer>();
+    	this.upperPort = upperPort;
+    	this.lowerPort = lowerPort;
+    	// populate the ports
+        populatePorts(lowerPort, upperPort);
     	this.kubernetesClusterId = id;
-    	this.hostPortRange = portRange;
     	this.masterIp = masterIp;
-    	this.setKubApi(new KubernetesApiClient(getEndpoint(masterIp)));
+    	this.masterPort = masterPort;
+    	this.setKubApi(new KubernetesApiClient(getEndpoint(masterIp, masterPort)));
     	
 	}
     
-	private String getEndpoint(String ip) {
-		return "http://"+ip+":8080/api/v1beta1/";
+	private String getEndpoint(String ip, String port) {
+		return "http://"+ip+":"+port+"/api/v1beta1/";
 	}
 
 	public String getKubernetesClusterId() {
@@ -67,14 +72,6 @@ public class KubernetesClusterContext implements Serializable {
 		this.kubernetesClusterId = kubernetesClusterId;
 	}
 
-	public String getHostPortRange() {
-		return hostPortRange;
-	}
-
-	public void setHostPortRange(String hostPortRange) {
-		this.hostPortRange = hostPortRange;
-	}
-
 	public List<Integer> getAvailableHostPorts() {
 		return availableHostPorts;
 	}
@@ -83,30 +80,10 @@ public class KubernetesClusterContext implements Serializable {
 		this.availableHostPorts = availableHostPorts;
 	}
 	
-	private int[] portBoundaries() {
-		String[] portStrings = hostPortRange.split("-");
-		int[] portInts = new int[2];
-		portInts[0] = Integer.parseInt(portStrings[0]);
-		portInts[1] = Integer.parseInt(portStrings[1]);
-		return portInts;
-	}
-	
 	public int getAnAvailableHostPort() {
-		int[] ports = {4000, 5000};
-		if (availableHostPorts.isEmpty()) {
-			try {
-
-				ports = portBoundaries();
-			} catch (Exception ignore) {
-				// on an exception, we use the default range
-				log.warn("Unable to find a port range, hence using the default. [4000-5000]"
-						+ " Exception");
-			}
-
-			// populate the ports
-			populatePorts(ports[0], ports[1]);
-		}
-		
+	    if (availableHostPorts.isEmpty()) {
+	        return -1;
+	    }
 		return availableHostPorts.remove(0);
 	}
 	
@@ -133,7 +110,7 @@ public class KubernetesClusterContext implements Serializable {
 
 	public KubernetesApiClient getKubApi() {
 		if (kubApi == null) {
-			kubApi = new KubernetesApiClient(getEndpoint(masterIp));
+			kubApi = new KubernetesApiClient(getEndpoint(masterIp, masterPort));
 		}
 		return kubApi;
 	}
@@ -142,46 +119,69 @@ public class KubernetesClusterContext implements Serializable {
 		this.kubApi = kubApi;
 	}
 
-	@Override
-	public int hashCode() {
-		final int prime = 31;
-		int result = 1;
-		result = prime * result
-				+ ((hostPortRange == null) ? 0 : hostPortRange.hashCode());
-		result = prime
-				* result
-				+ ((kubernetesClusterId == null) ? 0 : kubernetesClusterId
-						.hashCode());
-		result = prime * result
-				+ ((masterIp == null) ? 0 : masterIp.hashCode());
-		return result;
-	}
-
-	@Override
-	public boolean equals(Object obj) {
-		if (this == obj)
-			return true;
-		if (obj == null)
-			return false;
-		if (getClass() != obj.getClass())
-			return false;
-		KubernetesClusterContext other = (KubernetesClusterContext) obj;
-		if (hostPortRange == null) {
-			if (other.hostPortRange != null)
-				return false;
-		} else if (!hostPortRange.equals(other.hostPortRange))
-			return false;
-		if (kubernetesClusterId == null) {
-			if (other.kubernetesClusterId != null)
-				return false;
-		} else if (!kubernetesClusterId.equals(other.kubernetesClusterId))
-			return false;
-		if (masterIp == null) {
-			if (other.masterIp != null)
-				return false;
-		} else if (!masterIp.equals(other.masterIp))
-			return false;
-		return true;
-	}
+	public int getUpperPort() {
+        return upperPort;
+    }
+
+    public void setUpperPort(int upperPort) {
+        this.upperPort = upperPort;
+    }
+
+    public int getLowerPort() {
+        return lowerPort;
+    }
+
+    public void setLowerPort(int lowerPort) {
+        this.lowerPort = lowerPort;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((availableHostPorts == null) ? 0 : availableHostPorts.hashCode());
+        result = prime * result + ((kubernetesClusterId == null) ? 0 : kubernetesClusterId.hashCode());
+        result = prime * result + lowerPort;
+        result = prime * result + ((masterIp == null) ? 0 : masterIp.hashCode());
+        result = prime * result + ((masterPort == null) ? 0 : masterPort.hashCode());
+        result = prime * result + upperPort;
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        KubernetesClusterContext other = (KubernetesClusterContext) obj;
+        if (availableHostPorts == null) {
+            if (other.availableHostPorts != null)
+                return false;
+        } else if (!availableHostPorts.equals(other.availableHostPorts))
+            return false;
+        if (kubernetesClusterId == null) {
+            if (other.kubernetesClusterId != null)
+                return false;
+        } else if (!kubernetesClusterId.equals(other.kubernetesClusterId))
+            return false;
+        if (lowerPort != other.lowerPort)
+            return false;
+        if (masterIp == null) {
+            if (other.masterIp != null)
+                return false;
+        } else if (!masterIp.equals(other.masterIp))
+            return false;
+        if (masterPort == null) {
+            if (other.masterPort != null)
+                return false;
+        } else if (!masterPort.equals(other.masterPort))
+            return false;
+        if (upperPort != other.upperPort)
+            return false;
+        return true;
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/2e9edf45/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
index b8fd6c5..1679e3f 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
@@ -51,6 +51,7 @@ import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.common.kubernetes.KubernetesGroup;
 import org.apache.stratos.common.kubernetes.KubernetesHost;
 import org.apache.stratos.common.kubernetes.KubernetesMaster;
+import org.apache.stratos.common.kubernetes.PortRange;
 import org.apache.stratos.kubernetes.client.KubernetesApiClient;
 import org.apache.stratos.kubernetes.client.exceptions.KubernetesClientException;
 import org.apache.stratos.kubernetes.client.model.Label;
@@ -1082,6 +1083,9 @@ public class CloudControllerServiceImpl implements CloudControllerService {
 
             String clusterId = containerClusterContext.getClusterId();
             handleNullObject(clusterId, "Container start-up failed. Cluster id is null.");
+            
+            Partition partition = containerClusterContext.getPartition();
+            handleNullObject(partition, "Container start-up failed. Null partition found in ContainerClusterContext.");
 
             if (log.isDebugEnabled()) {
                 log.debug("Received a container spawn request : " + containerClusterContext.toString());
@@ -1102,13 +1106,28 @@ public class CloudControllerServiceImpl implements CloudControllerService {
             }
 
             try {
-                String minReplicas = validateProperty(StratosConstants.KUBERNETES_MIN_REPLICAS, ctxt);
-                String kubernetesClusterId = validateProperty(StratosConstants.KUBERNETES_CLUSTER_ID, ctxt);
-                String kubernetesMasterIp = validateProperty(StratosConstants.KUBERNETES_MASTER_IP, containerClusterContext);
-                String kubernetesPortRange = validateProperty(StratosConstants.KUBERNETES_PORT_RANGE, containerClusterContext);
+                String minReplicas =
+                        validateProperty(StratosConstants.MIN_COUNT, containerClusterContext.getProperties(),
+                                containerClusterContext.toString());
+                String kubernetesClusterId =
+                        validateProperty(StratosConstants.KUBERNETES_CLUSTER_ID, partition.getProperties(),
+                                partition.toString());
+
+                KubernetesGroup kubernetesGroup =
+                        CloudControllerContext.getInstance().getKubernetesGroup(kubernetesClusterId);
+                handleNullObject(kubernetesGroup, "Container start-up failed. Kubernetes group not found for id: "
+                        + kubernetesClusterId);
+
+                String kubernetesMasterIp = kubernetesGroup.getKubernetesMaster().getHostIpAddress();
+                PortRange kubernetesPortRange = kubernetesGroup.getPortRange();
+                // optional
+                String kubernetesMasterPort =
+                        CloudControllerUtil.getProperty(kubernetesGroup.getKubernetesMaster().getProperties(),
+                                StratosConstants.KUBERNETES_MASTER_PORT,
+                                StratosConstants.KUBERNETES_MASTER_DEFAULT_PORT);
 
                 KubernetesClusterContext kubClusterContext = getKubernetesClusterContext(kubernetesClusterId,
-                        kubernetesMasterIp, kubernetesPortRange);
+                        kubernetesMasterIp, kubernetesMasterPort, kubernetesPortRange.getLower(), kubernetesPortRange.getUpper());
                 KubernetesApiClient kubApi = kubClusterContext.getKubApi();
 
                 // first let's create a replication controller.
@@ -1227,27 +1246,45 @@ public class CloudControllerServiceImpl implements CloudControllerService {
         }
     }
 
-    private String validateProperty(String property, ClusterContext ctxt) {
-
-        String propVal = CloudControllerUtil.getProperty(ctxt.getProperties(), property);
-        handleNullObject(propVal, "Property validation failed. Cannot find '" + property + "' in " + ctxt);
-        return propVal;
-    }
-
-    private String validateProperty(String property, ContainerClusterContext ctxt) {
+//    private String validateProperty(String property, ClusterContext ctxt) {
+//
+//        String propVal = CloudControllerUtil.getProperty(ctxt.getProperties(), property);
+//        handleNullObject(propVal, "Property validation failed. Cannot find '" + property + "' in " + ctxt);
+//        return propVal;
+//    }
+//
+//    private String validateProperty(String property, ContainerClusterContext ctxt) {
+//
+//        String propVal = CloudControllerUtil.getProperty(ctxt.getProperties(), property);
+//        handleNullObject(propVal, "Property validation failed. Cannot find '" + property + "' in " + ctxt);
+//        return propVal;
+//
+//    }
+//    
+//    private String validateProperty(String property, Partition partition) {
+//
+//        String propVal = CloudControllerUtil.getProperty(partition.getProperties(), property);
+//        handleNullObject(propVal, "Property validation failed. Cannot find property: '" + property);
+//        return propVal;
+//
+//    }
+    
+    private String validateProperty(String property, org.apache.stratos.common.Properties properties, String object) {
 
-        String propVal = CloudControllerUtil.getProperty(ctxt.getProperties(), property);
-        handleNullObject(propVal, "Property validation failed. '" + property + "' in " + ctxt);
+        String propVal = CloudControllerUtil.getProperty(properties, property);
+        handleNullObject(propVal, "Property validation failed. Cannot find property: '" + property+ " in "+object);
         return propVal;
 
     }
 
-    private KubernetesClusterContext getKubernetesClusterContext(
-            String kubernetesClusterId, String kubernetesMasterIp,
-            String kubernetesPortRange) {
+    private KubernetesClusterContext getKubernetesClusterContext(String kubernetesClusterId, String kubernetesMasterIp,
+            String kubernetesMasterPort, int upperPort, int lowerPort) {
 
-        KubernetesClusterContext origCtxt = CloudControllerContext.getInstance().getKubernetesClusterContext(kubernetesClusterId);
-        KubernetesClusterContext newCtxt = new KubernetesClusterContext(kubernetesClusterId, kubernetesPortRange, kubernetesMasterIp);
+        KubernetesClusterContext origCtxt =
+                CloudControllerContext.getInstance().getKubernetesClusterContext(kubernetesClusterId);
+        KubernetesClusterContext newCtxt =
+                new KubernetesClusterContext(kubernetesClusterId, kubernetesMasterIp,
+                        kubernetesMasterPort, upperPort, lowerPort);
 
         if (origCtxt == null) {
             CloudControllerContext.getInstance().addKubernetesClusterContext(newCtxt);
@@ -1385,7 +1422,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
             }
 
             try {
-                String kubernetesClusterId = validateProperty(StratosConstants.KUBERNETES_CLUSTER_ID, ctxt);
+                String kubernetesClusterId = validateProperty(StratosConstants.KUBERNETES_CLUSTER_ID, ctxt.getProperties(), ctxt.toString());
 
                 KubernetesClusterContext kubClusterContext = CloudControllerContext.getInstance().getKubernetesClusterContext(kubernetesClusterId);
 
@@ -1555,7 +1592,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
             }
         }
     }
-
+    
     private void handleNullObject(Object obj, String errorMsg) {
         if (obj == null) {
             log.error(errorMsg);

http://git-wip-us.apache.org/repos/asf/stratos/blob/2e9edf45/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java
index 4fbf294..b992643 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java
@@ -27,6 +27,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.cloud.controller.context.CloudControllerContext;
 import org.apache.stratos.cloud.controller.domain.ClusterContext;
+import org.apache.stratos.cloud.controller.domain.ContainerClusterContext;
 import org.apache.stratos.cloud.controller.domain.IaasProvider;
 import org.apache.stratos.cloud.controller.domain.MemberContext;
 import org.apache.stratos.cloud.controller.domain.Partition;
@@ -197,4 +198,5 @@ public class CloudControllerServiceUtil {
         validatePartitionAndGetIaasProvider(partition, iaasProvider);
         return true;
     }
+    
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/2e9edf45/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
index 2e4e505..82baef8 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
@@ -295,9 +295,15 @@ public class CloudControllerUtil {
     	
     }
 	
-	public static String getProperty(Properties properties, String key) {
-    	if (key != null && properties != null) {
-    	    for (Iterator<Entry<Object, Object>> iterator = properties.entrySet().iterator(); iterator.hasNext();) {
+    public static String getProperty(org.apache.stratos.common.Properties properties, String key, String defaultValue) {
+        Properties props = toJavaUtilProperties(properties);
+
+        return getProperty(props, key, defaultValue);
+    }
+
+    public static String getProperty(Properties properties, String key, String defaultValue) {
+        if (key != null && properties != null) {
+            for (Iterator<Entry<Object, Object>> iterator = properties.entrySet().iterator(); iterator.hasNext();) {
                 Entry<Object, Object> type = (Entry<Object, Object>) iterator.next();
                 String propName = type.getKey().toString();
                 String propValue = type.getValue().toString();
@@ -305,25 +311,28 @@ public class CloudControllerUtil {
                     return propValue;
                 }
             }
-    	}
-    	
-    	return null;
+        }
+
+        return defaultValue;
     }
-	
-	public static String getProperty(org.apache.stratos.common.Properties properties, String key) {
-		Properties props = toJavaUtilProperties(properties);
-		
-		return getProperty(props, key);
-	}
-	
-    public static org.apache.stratos.common.Properties addProperty(
-            org.apache.stratos.common.Properties properties, String key, String value) {
+
+    public static String getProperty(Properties properties, String key) {
+        return getProperty(properties, key, null);
+    }
+
+    public static String getProperty(org.apache.stratos.common.Properties properties, String key) {
+        Properties props = toJavaUtilProperties(properties);
+
+        return getProperty(props, key);
+    }
+
+    public static org.apache.stratos.common.Properties addProperty(org.apache.stratos.common.Properties properties,
+            String key, String value) {
         Property property = new Property();
         property.setName(key);
         property.setValue(value);
 
-        org.apache.stratos.common.Properties newProperties =
-                new org.apache.stratos.common.Properties();
+        org.apache.stratos.common.Properties newProperties = new org.apache.stratos.common.Properties();
         newProperties.setProperties(ArrayUtils.add(properties.getProperties(), property));
         return newProperties;
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/2e9edf45/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
index df9dec2..d6bf002 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
@@ -149,6 +149,8 @@ public class StratosConstants {
     public static final String KUBERNETES_CLUSTER_ID = "KUBERNETES_CLUSTER_ID";
     public static final String KUBERNETES_DEPLOYER_TYPE = "kubernetes";
     public static final String KUBERNETES_MASTER_IP = "KUBERNETES_MASTER_IP";
+    public static final String KUBERNETES_MASTER_PORT = "KUBERNETES_MASTER_PORT";
+    public static final String KUBERNETES_MASTER_DEFAULT_PORT = "8080";
     public static final String KUBERNETES_MIN_REPLICAS = "KUBERNETES_REPLICAS_MIN";
     public static final String KUBERNETES_MAX_REPLICAS = "KUBERNETES_REPLICAS_MAX";
     public static final String KUBERNETES_PORT_RANGE = "KUBERNETES_PORT_RANGE";