diff --git a/machmeter/src/main/java/com/google/cloud/machmeter/model/GKEConfig.java b/machmeter/src/main/java/com/google/cloud/machmeter/model/GKEConfig.java index 4759deb..14d8c43 100644 --- a/machmeter/src/main/java/com/google/cloud/machmeter/model/GKEConfig.java +++ b/machmeter/src/main/java/com/google/cloud/machmeter/model/GKEConfig.java @@ -21,6 +21,11 @@ public class GKEConfig { + private static final String DEFAULT_JVM_ARGS = "-Xms1g -Xmx1g"; + private static final int DEFAULT_SLAVE_REPLICA_COUNT = 2; + private static final String DEFAULT_CPU_REQUEST = "1000m"; + private static final String DEFAULT_MEMORY_REQUEST = "1Gi"; + @SerializedName(value = "cluster_name", alternate = "clusterName") @Expose private String clusterName; @@ -61,6 +66,34 @@ public class GKEConfig { @Expose private String nodeLocations; + @SerializedName(value = "master_jvm_args", alternate = "masterJvmArgs") + @Expose + private String masterJvmArgs; + + @SerializedName(value = "slave_jvm_args", alternate = "slaveJvmArgs") + @Expose + private String slaveJvmArgs; + + @SerializedName(value = "master_cpu_request", alternate = "masterCPURequest") + @Expose + private String masterCPURequest; + + @SerializedName(value = "master_memory_request", alternate = "masterMemoryRequest") + @Expose + private String masterMemoryRequest; + + @SerializedName(value = "slave_cpu_request", alternate = "slaveCPURequest") + @Expose + private String slaveCPURequest; + + @SerializedName(value = "slave_memory_request", alternate = "slaveMemoryRequest") + @Expose + private String slaveMemoryRequest; + + @SerializedName(value = "slave_replica_count", alternate = "slaveReplicaCount") + @Expose + private int slaveReplicaCount; + @SerializedName(value = "min_count", alternate = "minCount") @Expose private int minCount; @@ -153,6 +186,109 @@ public void setNodeLocations(String nodeLocations) { this.nodeLocations = nodeLocations; } + public String getMasterJvmArgs() { + if (masterJvmArgs == null) masterJvmArgs = DEFAULT_JVM_ARGS; + ; + return masterJvmArgs; + } + + public void setMasterJvmArgs(String masterJvmArgs) { + if (masterJvmArgs == null) { + this.masterJvmArgs = DEFAULT_JVM_ARGS; + return; + } + this.masterJvmArgs = masterJvmArgs; + } + + public String getSlaveJvmArgs() { + if (slaveJvmArgs == null) slaveJvmArgs = DEFAULT_JVM_ARGS; + ; + return slaveJvmArgs; + } + + public void setSlaveJvmArgs(String slaveJvmArgs) { + if (slaveJvmArgs == null) { + this.slaveJvmArgs = DEFAULT_JVM_ARGS; + return; + } + this.slaveJvmArgs = slaveJvmArgs; + } + + public String getMasterCPURequest() { + if (masterCPURequest == null) masterCPURequest = DEFAULT_CPU_REQUEST; + ; + return masterCPURequest; + } + + public void setMasterCPURequest(String masterCPURequest) { + if (masterCPURequest == null) { + this.masterCPURequest = DEFAULT_CPU_REQUEST; + return; + } + ; + this.masterCPURequest = masterCPURequest; + } + + public String getMasterMemoryRequest() { + if (masterMemoryRequest == null) masterMemoryRequest = DEFAULT_MEMORY_REQUEST; + ; + return masterMemoryRequest; + } + + public void setMasterMemoryRequest(String masterMemoryRequest) { + if (masterMemoryRequest == null) { + this.masterMemoryRequest = DEFAULT_MEMORY_REQUEST; + return; + } + ; + this.masterMemoryRequest = masterMemoryRequest; + } + + public String getSlaveCPURequest() { + if (slaveCPURequest == null) slaveCPURequest = DEFAULT_MEMORY_REQUEST; + ; + return slaveCPURequest; + } + + public void setSlaveCPURequest(String slaveCPURequest) { + if (slaveCPURequest == null) { + this.slaveCPURequest = DEFAULT_CPU_REQUEST; + return; + } + ; + this.slaveCPURequest = slaveCPURequest; + } + + public String getSlaveMemoryRequest() { + if (slaveMemoryRequest == null) slaveMemoryRequest = DEFAULT_MEMORY_REQUEST; + ; + return slaveMemoryRequest; + } + + public void setSlaveMemoryRequest(String slaveMemoryRequest) { + if (slaveMemoryRequest == null) { + this.slaveMemoryRequest = DEFAULT_MEMORY_REQUEST; + return; + } + ; + this.slaveMemoryRequest = slaveMemoryRequest; + } + + public int getSlaveReplicaCount() { + if (slaveReplicaCount <= 0) slaveReplicaCount = DEFAULT_SLAVE_REPLICA_COUNT; + ; + return slaveReplicaCount; + } + + public void setSlaveReplicaCount(int slaveReplicaCount) { + if (slaveReplicaCount <= 0) { + this.slaveReplicaCount = DEFAULT_SLAVE_REPLICA_COUNT; + return; + } + ; + this.slaveReplicaCount = slaveReplicaCount; + } + public int getMinCount() { return minCount; } diff --git a/machmeter/src/main/resources/terraform/main.tf b/machmeter/src/main/resources/terraform/main.tf index a31ef37..8c00396 100644 --- a/machmeter/src/main/resources/terraform/main.tf +++ b/machmeter/src/main/resources/terraform/main.tf @@ -28,6 +28,13 @@ variable "gke_config" { service_account_json = string machine_type = string node_locations = string + master_jvm_args = string + slave_jvm_args = string + master_cpu_request = string + master_memory_request = string + slave_cpu_request = string + slave_memory_request = string + slave_replica_count = number min_count = number max_count = number initial_node_count = number @@ -118,7 +125,7 @@ module "gke" { ip_range_pods = var.gke_config.ip_range_pods_name ip_range_services = var.gke_config.ip_range_services_name grant_registry_access = true - remove_default_node_pool = false + remove_default_node_pool = true create_service_account = false node_pools = [ { @@ -299,10 +306,20 @@ resource "kubernetes_deployment" "jmeter-master" { port { container_port = 60000 } + resources { + requests = { + cpu = var.gke_config.master_cpu_request + memory = var.gke_config.master_memory_request + } + } env { name = "GOOGLE_APPLICATION_CREDENTIALS" value = "/var/secrets/google/key.json" } + env { + name = "JVM_ARGS" + value: var.gke_config.master_jvm_args + } } volume { name = "loadtest" @@ -336,7 +353,7 @@ resource "kubernetes_stateful_set" "jmeter-slave" { } spec { service_name = "jmeter-slaves" - replicas = 2 + replicas = var.gke_config.slave_replica_count selector { match_labels = { jmeter_mode = "slave" @@ -368,18 +385,19 @@ resource "kubernetes_stateful_set" "jmeter-slave" { container_port = 50000 } resources { - limits = { - cpu = "1000m" - memory = "2Gi" - } requests = { - cpu = "1000m" - memory = "2Gi" + cpu = var.gke_config.slave_cpu_request + memory = var.gke_config.slave_memory_request } } env { name = "GOOGLE_APPLICATION_CREDENTIALS" value = "/var/secrets/google/key.json" + + } + env { + name = "JVM_ARGS" + value: var.gke_config.slave_jvm_args } } volume {