diff --git a/pipelines/perf-eval/Automatic Benchmark/cluster-automatic-single-cluster.yml b/pipelines/perf-eval/Automatic Benchmark/cluster-automatic-single-cluster.yml index 2c425fee81..36a14eb1e4 100644 --- a/pipelines/perf-eval/Automatic Benchmark/cluster-automatic-single-cluster.yml +++ b/pipelines/perf-eval/Automatic Benchmark/cluster-automatic-single-cluster.yml @@ -10,6 +10,13 @@ schedules: include: - main always: true + # AKS Automatic MachineAPI On-Demand Schedule + - cron: "0 3 * * *" + displayName: "Every day at 3:00 AM with Machine API" + branches: + include: + - main + always: true variables: SCENARIO_TYPE: perf-eval @@ -17,6 +24,11 @@ variables: stages: - stage: azure_australiaeast_acn_off + condition: | + or( + eq(variables['Build.CronSchedule.DisplayName'], 'Every day at 3:00 PM'), + eq(variables['Build.Reason'], 'Manual') + ) dependsOn: [] jobs: - template: /jobs/competitive-test.yml @@ -62,6 +74,11 @@ stages: credential_type: service_connection ssh_key_enabled: false - stage: azure_australiaeast_acn_on + condition: | + or( + eq(variables['Build.CronSchedule.DisplayName'], 'Every day at 3:00 PM'), + eq(variables['Build.Reason'], 'Manual') + ) dependsOn: azure_australiaeast_acn_off jobs: - template: /jobs/competitive-test.yml @@ -108,3 +125,107 @@ stages: timeout_in_minutes: 90 credential_type: service_connection ssh_key_enabled: false + - stage: azure_australiaeast_acn_off_machineapi + condition: | + or( + eq(variables['Build.CronSchedule.DisplayName'], 'Every day at 3:00 AM with Machine API'), + eq(variables['Build.Reason'], 'Manual') + ) + dependsOn: [] + jobs: + - template: /jobs/competitive-test.yml + parameters: + cloud: azure + regions: + - australiaeast + terraform_input_file_mapping: + - australiaeast: "scenarios/perf-eval/cluster-automatic/terraform-inputs/azure-machineapi.tfvars" + engine: clusterloader2 + engine_input: + image: "ghcr.io/azure/clusterloader2:v20250912" + topology: cluster-automatic + matrix: + automatic-acn-off-1-node: + cpu_per_node: 4 + node_count: 1 + pod_count: 1 + scale_up_timeout: "30m" + scale_down_timeout: "30m" + node_label_selector: "karpenter.sh/nodepool = default" + node_selector: "{karpenter.sh/nodepool: default}" + loop_count: 1 + warmup_deployment: true + vm_size: Standard_D4ds_v5 + capacity_type: on-demand + warmup_deployment_template: automatic/warmup_deployment.yaml + deployment_template: automatic/deployment_template.yaml + automatic-acn-off-100-nodes: + cpu_per_node: 4 + node_count: 100 + pod_count: 100 + scale_up_timeout: "30m" + scale_down_timeout: "30m" + node_label_selector: "karpenter.sh/nodepool = default" + node_selector: "{karpenter.sh/nodepool: default}" + loop_count: 1 + warmup_deployment: true + vm_size: Standard_D4ds_v5 + capacity_type: on-demand + warmup_deployment_template: automatic/warmup_deployment.yaml + deployment_template: automatic/deployment_template.yaml + max_parallel: 1 + timeout_in_minutes: 90 + credential_type: service_connection + ssh_key_enabled: false + - stage: azure_australiaeast_acn_on_machineapi + condition: | + or( + eq(variables['Build.CronSchedule.DisplayName'], 'Every day at 3:00 AM with Machine API'), + eq(variables['Build.Reason'], 'Manual') + ) + dependsOn: azure_australiaeast_acn_off_machineapi + jobs: + - template: /jobs/competitive-test.yml + parameters: + cloud: azure + regions: + - australiaeast + terraform_input_file_mapping: + - australiaeast: "scenarios/perf-eval/cluster-automatic/terraform-inputs/azure-automatic-benchmark-acn-on-machineapi.tfvars" + engine: clusterloader2 + engine_input: + image: "ghcr.io/azure/clusterloader2:v20250912" + topology: cluster-automatic + matrix: + automatic-acn-on-1-node: + cpu_per_node: 4 + node_count: 1 + pod_count: 1 + scale_up_timeout: "30m" + scale_down_timeout: "30m" + node_label_selector: "karpenter.sh/nodepool = default" + node_selector: "{karpenter.sh/nodepool: default}" + loop_count: 1 + warmup_deployment: true + vm_size: Standard_D4ds_v5 + capacity_type: on-demand + warmup_deployment_template: automatic/warmup_deployment.yaml + deployment_template: automatic/deployment_template.yaml + automatic-acn-on-100-nodes: + cpu_per_node: 4 + node_count: 100 + pod_count: 100 + scale_up_timeout: "30m" + scale_down_timeout: "30m" + node_label_selector: "karpenter.sh/nodepool = default" + node_selector: "{karpenter.sh/nodepool: default}" + loop_count: 1 + warmup_deployment: true + vm_size: Standard_D4ds_v5 + capacity_type: on-demand + warmup_deployment_template: automatic/warmup_deployment.yaml + deployment_template: automatic/deployment_template.yaml + max_parallel: 1 + timeout_in_minutes: 90 + credential_type: service_connection + ssh_key_enabled: false diff --git a/scenarios/perf-eval/cluster-automatic/terraform-inputs/azure-automatic-benchmark-acn-on-machineapi.tfvars b/scenarios/perf-eval/cluster-automatic/terraform-inputs/azure-automatic-benchmark-acn-on-machineapi.tfvars new file mode 100644 index 0000000000..b5e70b9ffb --- /dev/null +++ b/scenarios/perf-eval/cluster-automatic/terraform-inputs/azure-automatic-benchmark-acn-on-machineapi.tfvars @@ -0,0 +1,31 @@ +scenario_type = "perf-eval" +scenario_name = "cluster-automatic" +deletion_delay = "2h" +owner = "aks" +aks_cli_config_list = [ + { + role = "automatic" + aks_name = "automatic" + sku_tier = "Standard" + use_aks_preview_cli_extension = true + grant_rbac_permissions = true + optional_parameters = [ + { + name = "sku" + value = "automatic" # Enable automatic + }, + { + name = "zones" + value = "1 2 3" # Must add all zones since: Managed cluster 'Automatic' SKU should enable 'AvailabilityZones' feature with recommended values + }, + { + name = "enable-acns" # enable ACNs + value = "" + }, + { + name = "aks-custom-headers" + value = "AKSHTTPCustomFeatures=Microsoft.ContainerService/AKSHTTPCustomFeatures,BootstrappingMethodTestOnly=aksmachineapiheaderbatch" + } + ] + } +] diff --git a/scenarios/perf-eval/cluster-automatic/terraform-inputs/azure-automatic-benchmark-acn-on.tfvars b/scenarios/perf-eval/cluster-automatic/terraform-inputs/azure-automatic-benchmark-acn-on.tfvars index 43f7f6ea91..8e4e89d451 100644 --- a/scenarios/perf-eval/cluster-automatic/terraform-inputs/azure-automatic-benchmark-acn-on.tfvars +++ b/scenarios/perf-eval/cluster-automatic/terraform-inputs/azure-automatic-benchmark-acn-on.tfvars @@ -18,10 +18,14 @@ aks_cli_config_list = [ name = "zones" value = "1 2 3" # Must add all zones since: Managed cluster 'Automatic' SKU should enable 'AvailabilityZones' feature with recommended values }, - { - name = "enable-acns" # enable ACNs - value = "" - } - ] - } -] \ No newline at end of file + { + name = "enable-acns" # enable ACNs + value = "" + }, + { + name = "aks-custom-headers" + value = "AKSHTTPCustomFeatures=Microsoft.ContainerService/AKSHTTPCustomFeatures,BootstrappingMethodTestOnly=bootstrappingclient" + } + ] + } +] diff --git a/scenarios/perf-eval/cluster-automatic/terraform-inputs/azure-machineapi.tfvars b/scenarios/perf-eval/cluster-automatic/terraform-inputs/azure-machineapi.tfvars new file mode 100644 index 0000000000..990fd04109 --- /dev/null +++ b/scenarios/perf-eval/cluster-automatic/terraform-inputs/azure-machineapi.tfvars @@ -0,0 +1,26 @@ +scenario_type = "perf-eval" +scenario_name = "cluster-automatic" +deletion_delay = "2h" +owner = "aks" +aks_cli_config_list = [ + { + role = "automatic" + aks_name = "automatic" + sku_tier = "Standard" + use_aks_preview_cli_extension = true + optional_parameters = [ + { + name = "sku" + value = "automatic" # Enable automatic + }, + { + name = "zones" + value = "1 2 3" # Must add all zones since: Managed cluster 'Automatic' SKU should enable 'AvailabilityZones' feature with recommended values + }, + { + name = "aks-custom-headers" + value = "AKSHTTPCustomFeatures=Microsoft.ContainerService/AKSHTTPCustomFeatures,BootstrappingMethodTestOnly=aksmachineapiheaderbatch" + } + ] + } +] diff --git a/scenarios/perf-eval/cluster-automatic/terraform-inputs/azure.tfvars b/scenarios/perf-eval/cluster-automatic/terraform-inputs/azure.tfvars index 353c51b013..82d3292dda 100644 --- a/scenarios/perf-eval/cluster-automatic/terraform-inputs/azure.tfvars +++ b/scenarios/perf-eval/cluster-automatic/terraform-inputs/azure.tfvars @@ -16,7 +16,11 @@ aks_cli_config_list = [ { name = "zones" value = "1 2 3" # Must add all zones since: Managed cluster 'Automatic' SKU should enable 'AvailabilityZones' feature with recommended values + }, + { + name = "aks-custom-headers" + value = "AKSHTTPCustomFeatures=Microsoft.ContainerService/AKSHTTPCustomFeatures,BootstrappingMethodTestOnly=bootstrappingclient" } ] } -] \ No newline at end of file +] diff --git a/scenarios/perf-eval/cluster-automatic/terraform-test-inputs/azure-automatic-benchmark-acn-on-machineapi.json b/scenarios/perf-eval/cluster-automatic/terraform-test-inputs/azure-automatic-benchmark-acn-on-machineapi.json new file mode 100644 index 0000000000..2229b1696b --- /dev/null +++ b/scenarios/perf-eval/cluster-automatic/terraform-test-inputs/azure-automatic-benchmark-acn-on-machineapi.json @@ -0,0 +1,4 @@ +{ + "run_id" : "123456789", + "region" : "eastus2" +} diff --git a/scenarios/perf-eval/cluster-automatic/terraform-test-inputs/azure-machineapi.json b/scenarios/perf-eval/cluster-automatic/terraform-test-inputs/azure-machineapi.json new file mode 100644 index 0000000000..2229b1696b --- /dev/null +++ b/scenarios/perf-eval/cluster-automatic/terraform-test-inputs/azure-machineapi.json @@ -0,0 +1,4 @@ +{ + "run_id" : "123456789", + "region" : "eastus2" +}