ci(k3d): backport per-job k3d review/QA pipeline to 9-11-stable
What does this MR do?
Backports the per-job k3d review/QA CI pipeline to 9-11-stable, bringing this branch's CI toward master's final k3d state (consolidating master MRs !4967 (merged), !4984 (merged), !4982 (merged), !4983 (merged), !4985 (merged) into one change rather than cherry-picking each):
- Adds the k3d per-job scripts (
k3d.sh,k3d_deploy.sh), thek3d-templates+k3d-version-pipeline[-arm64]child pipelines, and thek3d.gatewayapi/k3d.ingressCI values. - Wires
parallel:matrixbridge jobs into.gitlab-ci.yml:k3d— v1.33 / v1.34 / v1.35 (v1.35K3D_PRIMARYauto-runs on MR/default; v1.33/v1.34 manual)k3d_arm64— v1.35 ARM64 (manual on MR/default, auto on nightly/stable)
- Removes the vcluster/EKS trigger jobs, scripts, and environment configs; keeps a single GKE nightly (
gke.135.amd64→gke.amd64). autodevops.sh: adds theis_k3d_deploymentnetworking branch indeploy(), theset_contextk3d guard, andcreate_admin_pat()(used byk3d_deploy.sh);helpers.sh: addsis_k3d_deployment().
Networking: NGINX ingress (not Gateway API) on 18.11
Unlike master/19.0, 9-11's k3d jobs use the NGINX ingress path, not Envoy Gateway. The 18.11 chart bundles envoy-gateway 1.7.1, on which the Gateway API review environment returns HTTP 308 on every API call and fails the review specs (master/19.0 use envoy-gateway 1.8.0, where it works). Bumping a bundled dependency on a stable branch is out of scope for this CI backport, so k3d and k3d_arm64 set K3D_USE_NGINX_INGRESS=true and there is no separate k3d_nginx job. This deploys the chart's bundled nginx-ingress controller over HTTP — no Gateway API/Envoy resources.
CI-only — no chart/product code changes
This MR contains no charts/ or templates/ changes. All changes are CI tooling (.gitlab/ci/, scripts/ci/, spec/). Pipeline iteration uncovered and fixed three CI issues:
- CNPG operator/CRDs for k3d (
scripts/ci/lib/cloudnativepg.sh): the CloudNativePG operator was only installed for vcluster deployments; gated it onis_k3d_deploymenttoo and added a CRD-Establishedwait, so a fresh per-job k3d cluster has thepostgresql.cnpg.ioCRDs before theClusterCR is applied. - HTTP-aware spec helper (
spec/api_helper.rb): honor thePROTOCOLenv var (defaulthttps) for the base-URL scheme and SSL verification, so specs work against the HTTP-only k3d instance. Backward compatible — vcluster/GKE keephttps+verify_ssl. RUBY_IMAGE_DEBIAN: defined the variable the arm64 k3d jobs use for their image (the.specsbuilder image has no ARM variant).
k3s version matrix: matches master (v1.33 / v1.34 / v1.35); no per-branch divergence.
Note: this differs from the original backport plan, which anticipated a 2-file webservice
ClientTrafficPolicychart change for this branch. That fix targets the Gateway API path; since 9-11 uses NGINX ingress for k3d (its bundled envoy-gateway 1.7.1 is unusable for this), the chart change is not applicable and the backport stays CI-only.
Related issues
Related to #6421 (closed)
Author checklist
For general guidance, please follow our Contributing guide.
Required
For anything in this list which will not be completed, please provide a reason in the MR discussion.
- Merge Request Title and Description are up to date, accurate, and descriptive.
- MR targeting the appropriate branch (
9-11-stable). - MR has a green pipeline.
- Documentation created/updated.
- Tests added/updated, and test plan for scenarios not covered by automated tests.
- Equivalent MR/issue for omnibus-gitlab opened.
Test plan
-
k3dv1.35 (primary)review_specs_k3ddeploys viahelm upgrade --install --waitand specs pass against the nip.io URL over NGINX ingress (HTTP). -
qa_k3d(parallel:5) green. - Manually trigger
k3dv1.33 / v1.34 andk3d_arm64; confirm green. - No vcluster/EKS jobs remain in the rendered pipeline.
Reviewers checklist
- MR has a green pipeline on https://gitlab.com/gitlab-org/charts/gitlab.
- Consider downstream impact to the Operator, as per evaluating impact from changes to GitLab chart.