Skip to content

Migrate perf-eval/cni-benchmark/cni-ab-testing pipeline to v2 KCL - #1292

Open
Lei Yao (wonderyl) wants to merge 1 commit into
v2from
perf-eval/cni-benchmark/cni-ab-testing
Open

Migrate perf-eval/cni-benchmark/cni-ab-testing pipeline to v2 KCL#1292
Lei Yao (wonderyl) wants to merge 1 commit into
v2from
perf-eval/cni-benchmark/cni-ab-testing

Conversation

@wonderyl

Copy link
Copy Markdown
Collaborator

Summary

Automated migration of pipelines/perf-eval/CNI Benchmark/cni-ab-testing.yml (and its full template + scenario closure) into the v2 KCL pipeline layout.

Contents

  • kcl/perf-eval/cni-benchmark/cni-ab-testing/pipeline.k — new KCL module.
  • kcl/perf-eval/cni-benchmark/cni-ab-testing/pipeline.yaml — generated by kcl run, in sync with pipeline.k.
  • kcl/perf-eval/cni-benchmark/cni-ab-testing/assets/python/clusterloader2/ — vendored upstream CL2 cri assets (marked with UPSTREAM).
  • Minor extension to kcl/lib/steps/azure/az_cli.k and a new modules/python/clients/docker_client.py used by the new pipeline.

Validated by automated V1↔V2 review

The AgentReviewer ran a rigorous 4-round review against the v1 reference bundle and mapped every AKS-facing v1 behavior onto a v2 mechanism:

  • Scenario identity (perf-eval / cni-ab-testing, owner/engine/topology metadata).
  • Trigger surface: AKS-Telescope-Airlock pool, 0 1-23/4 * * * schedule on main, Manual OR (Schedule AND main) condition, always: true.
  • 3-way matrix (n10-p{300,700,1100}-memory, max_pods={30,70,110}, operation_timeout={3m,7m,11m}, load_type=memory, scrape_kubelets=True, host_network=False, 120-min timeout).
  • A/B differentiator: azure_swedencentral_default binds Default-CNI variable group and forwards $(AKS_CLI_CUSTOM_HEADERS); azure_swedencentral_stateless runs the same cluster shape without them.
  • Cluster shape: AKS cri-resource-consume, k8s 1.33, --tier standard, azure CNI overlay, --pod-cidr 10.0.0.0/9, --service-cidr 192.168.0.0/16, --dns-service-ip 192.168.0.10, attached to cri-vnet (10.0.0.0/9) / cri-subnet-1 (10.0.0.0/16).
  • Node pools: default 3 × Standard_D16ds_v4 Ephemeral with CriticalAddonsOnly; prompool 1 × Standard_D16ds_v4 labeled prometheus=true; userpool0 10 × Standard_D16ds_v4 labeled cri-resource-consume=true and tainted NoSchedule+NoExecute.
  • 14-Ready-nodes assertion (within 10 min).
  • Workload: CL2 override+execute+collect with identical args, ghcr.io/azure/clusterloader2:v20241016, resource-consumer 1.13, pod_startup_latency_threshold=15s. cloud_info collected and threaded into every result row.
  • BYO mode gating (skip_resource_management + OWNER check).
  • Teardown: RG delete under always() with lifecycle tags (owner=aks, creation_date, deletion_due_time, SkipAKSCluster=1, SkipASB_Audit=true), plus EKS teardown via eksctl.
  • AWS baseline: eksctl config reproducing aws.tfvars (k8s 1.33, VPC 10.0.0.0/16, m5.4xlarge, 3/1/10 pools, same labels/taints, coredns/vpc-cni/kube-proxy addons).

Test plan

  • kcl run kcl/perf-eval/cni-benchmark/cni-ab-testing/pipeline.k -o /tmp/out.yaml and diff against the committed pipeline.yaml.
  • Dry-run the generated pipeline in ADO to confirm it validates.
  • One end-to-end pipeline run on swedencentral to verify AKS creation, CL2 execution, result upload, and teardown.

Automated migration of the v1 `pipelines/perf-eval/CNI Benchmark/cni-ab-testing.yml`
pipeline (plus its template + scenario closure) into the v2 KCL layout.

Contents:
- `kcl/perf-eval/cni-benchmark/cni-ab-testing/pipeline.k` — KCL module.
- `kcl/perf-eval/cni-benchmark/cni-ab-testing/pipeline.yaml` — generated YAML.
- Vendored clusterloader2 `cri` assets under `assets/python/clusterloader2/`
  (marked with `UPSTREAM`).
- Minor `kcl/lib/steps/azure/az_cli.k` extension and
  `modules/python/clients/docker_client.py` addition used by the new pipeline.

Validated by the automated V1↔V2 agent review (`AgentReviewer`) after 4 rounds:
scenario identity, trigger surface, 3-way matrix, A/B default vs stateless CNI
differentiator, cluster shape (Azure CNI overlay 10.0.0.0/9, /16 subnet,
D16ds_v4 nodes, prompool/userpool0 with correct labels+taints), 14-Ready-nodes
assertion, clusterloader2 workload with identical override/execute/collect
args + CL2 image pin, cloud_info collection, BYO mode gating, RG teardown
with lifecycle tags, and the AWS/EKS baseline via eksctl are all reproduced.
@github-actions

Copy link
Copy Markdown

For reviewers only: reply /run-tf-integration to trigger the terraform integration pipeline before approving the PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant