Repository navigation
Automated Sync from main to stable - #318
rhods-devops-app[bot] wants to merge 29 commits into
Conversation
* feat(ci): add Prometheus monitoring overlay Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> * feat(manifests): add Helm ServiceMonitor support Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> * fix(helm): correct ServiceMonitor boilerplate headers Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> * fix: align ServiceMonitor with metrics configuration Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> * test: cover metrics auth and document monitoring overlay Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> * fix: validate secure metrics authentication Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> * fix(helm): grant metrics authentication permissions Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> * fix: harden Prometheus ServiceMonitor configuration Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> * fix: require secret credentials for authenticated metrics Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> * fix: move ServiceMonitor templates under prometheus Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> * docs: clarify Prometheus monitoring deployment requirements Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> * fix: label Trainer Service as part of Kubeflow Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> * fix: address review feedback on monitoring docs and workflow Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> * fix: align monitoring overlay with Prometheus layout Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> --------- Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>
…al (kubeflow#4192) ExtractBestResult kept the first trial it saw when objective values were equal. The trial list comes from the cache and its order changes between reconciles, so status.result could point at a different trial each time, even after the job completed. On a tie, pick the trial with the earlier creationTimestamp, then the one with the smaller name. The result no longer depends on list order. Fixes kubeflow#4169 Signed-off-by: ISystemNoTool <btxu-db@outlook.com>
…kubeflow#4029) * fix(runtime): emit PRTE env vars so MPI plugin works with Open MPI 5 The MPI plugin configures OpenMPI runtimes exclusively through ORTE-era MCA environment variables (OMPI_MCA_orte_default_hostfile, OMPI_MCA_orte_keep_fqdn_hostnames, OMPI_MCA_orte_set_default_slots and OMPI_MCA_plm_rsh_args). Open MPI 5.0 removed ORTE and replaced it with PRTE, so those keys are no longer recognised. Open MPI ignores unknown OMPI_MCA_* variables silently, so on an Open MPI >= 5 image the generated hostfile is never read: mpirun falls back to localhost with one slot per core and runs every rank on the launcher. The TrainJob still reports Complete, which makes a multi-node job silently degrade to single-node instead of failing. Reproduced on Kubeflow Trainer v2.1.0 with mpioperator/mpi-pi:openmpi (Open MPI 5.0.7) and numNodes: 3 -- all 20 ranks landed on the launcher while both worker pods idled. Passing --hostfile explicitly restored the expected 3 ranks across 3 pods. mpiImplementation has no version axis and the image's MPI version is not knowable from the manifest, so rather than detect a version this emits both families. Open MPI 4 ignores the PRTE_MCA_* keys and Open MPI 5 ignores the OMPI_MCA_orte_* ones, so a single TrainingRuntime is correct on both. The PRTE names were verified against `prte_info --all` from Open MPI 5.0.7. PRTE's keep_fqdn_hostnames is deliberately left disabled, unlike its ORTE counterpart. The generated hostfile always uses JobSet's short-form Pod DNS name (<pod>.<service>), which never string-matches what PRTE resolves for itself; with that option on and runLauncherAsNode enabled, PRTE decided the launcher's own hostfile entry was a remote host and tried (and failed) to SSH to itself -- caught by re-running the fix on a live TrainJob before this branch was pushed anywhere. The new keys are added to MPIReservedEnvNames for consistency with the existing validation. Refs: kubeflow/mpi-operator#842 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WxVyKbz639wtfwRj6r18og Signed-off-by: Matteo Bunino <48362942+matbun@users.noreply.github.com> * bump ompi version from 4 to 5 for deepspeed and mlx Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Matteo Bunino <48362942+matbun@users.noreply.github.com> * test(mpi): expect PRTE env vars in the nil defaults case Signed-off-by: Matteo Bunino <48362942+matbun@users.noreply.github.com> --------- Signed-off-by: Matteo Bunino <48362942+matbun@users.noreply.github.com> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…e and ClusterTrainingRuntime (kubeflow#3892) * test(runtime): add test coverage for ValidateObjects methods Add comprehensive test coverage for TrainingRuntime.ValidateObjects() and ClusterTrainingRuntime.ValidateObjects() methods which previously had zero test coverage. Tests cover existing behavior only: - Runtime exists and is valid (success path) - Runtime does not exist (returns field error) - Runtime in different namespace (returns field error for TrainingRuntime) - Deprecated runtime (returns warning for ClusterTrainingRuntime) All tests verify the current implementation without proposing new validation rules. Signed-off-by: Prateek Rai <prateekrai903@gmail.com> * chore(test): address PR review comments for ValidateObjects tests - Move ValidateObjects tests to per-type test files (trainingruntime_test.go and clustertrainingruntime_test.go) instead of standalone validateobjects_test.go - Use cmp.Diff pattern for assertions instead of manual field error counting - Remove duplicate test case for runtime in different namespace - Simplify warnings handling by using []string type conversion This addresses review comments from @robert-bell to improve test organization and consistency with existing test patterns in the codebase. Signed-off-by: Prateek Rai <prateekrai903@gmail.com> * Update pkg/runtime/core/trainingruntime_test.go Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> Signed-off-by: Prateek Rai <prateekrai903@gmail.com> * Update pkg/runtime/core/trainingruntime_test.go Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> Signed-off-by: Prateek Rai <prateekrai903@gmail.com> * Update pkg/runtime/core/trainingruntime_test.go Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> Signed-off-by: Prateek Rai <prateekrai903@gmail.com> * Update pkg/runtime/core/trainingruntime_test.go Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> Signed-off-by: Prateek Rai <prateekrai903@gmail.com> * Update pkg/runtime/core/clustertrainingruntime_test.go Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> Signed-off-by: Prateek Rai <prateekrai903@gmail.com> * Update pkg/runtime/core/clustertrainingruntime_test.go Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> Signed-off-by: Prateek Rai <prateekrai903@gmail.com> * Update pkg/runtime/core/clustertrainingruntime_test.go Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> Signed-off-by: Prateek Rai <prateekrai903@gmail.com> * Update pkg/runtime/core/clustertrainingruntime_test.go Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> Signed-off-by: Prateek Rai <prateekrai903@gmail.com> * Update pkg/runtime/core/clustertrainingruntime_test.go Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> Signed-off-by: Prateek Rai <prateekrai903@gmail.com> * Update pkg/runtime/core/clustertrainingruntime_test.go Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> Signed-off-by: Prateek Rai <prateekrai903@gmail.com> * Update pkg/runtime/core/clustertrainingruntime_test.go Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> Signed-off-by: Prateek Rai <prateekrai903@gmail.com> * test(runtimes): update ClusterTrainingRuntime test for lowercase runtimeRef Update test expectations in TestClusterTrainingRuntimeValidateObjects to use lowercase 'runtimeRef' instead of 'RuntimeRef' (capital R) to match the fix in PR kubeflow#4194 which corrected the field path casing in error messages. Also add missing imports (ptr and admission) required by the test cases. This addresses the comment from contributor nikhil3495 in PR kubeflow#3892 which noted the case mismatch between ClusterTrainingRuntime and TrainingRuntime implementations. Signed-off-by: Prateek Rai <prateekmain2610@gmail.com> Signed-off-by: Prateek Rai <prateekrai903@gmail.com> * chore: trigger CI re-run for DCO and network flake Signed-off-by: Prateek Rai <prateekrai903@gmail.com> * chore: trigger CI re-run Signed-off-by: Prateek Rai <prateekrai903@gmail.com> --------- Signed-off-by: Prateek Rai <prateekrai903@gmail.com> Signed-off-by: Prateek Rai <prateekmain2610@gmail.com> Signed-off-by: Prateek Rai <prateek@devzero.io> Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
…#3219) * feat(kep): KEP-3015: Workload Aware Scheduling for TrainJob Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> * Disallow to set JobSet and Job scheduling API Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> * Clarify on k8s version and mutability Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> * Clarify on CPG support Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> * Remove ResourceClaims from Level 1 and 2 Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> * Fix API types for schedulingv1alpha3 Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> * Clarify the workload builder library usage Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> * Add Upstream API Dependency Risks Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> * Check minGroupCount instead of minCount Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> * Add patch RBAC Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> * Add validation for DependsOn Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> * Fix the TrainJob Resume policy Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> * Fix the ancestor label Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> * Add the index prefix for PodGroupTemplate names in Level 2 Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> * Set minCount to numNodes - 1 to avoid MPI deadlock Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> * Update proposals/3015-workload-aware-scheduling/kep.yaml Co-authored-by: Yuki Iwai <yuki.iwai.tz@gmail.com> Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> * Update proposals/3015-workload-aware-scheduling/kep.yaml Co-authored-by: Yuki Iwai <yuki.iwai.tz@gmail.com> Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> * Add validation rules for DRA Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> * Fix feature gates Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> --------- Signed-off-by: Andrey Velichkevich <andrey.velichkevich@gmail.com> Co-authored-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
…th JobSet (kubeflow#4244) Signed-off-by: Rob Bell <robell@redhat.com>
…age (kubeflow#4246) Signed-off-by: Matteo Bunino <48362942+matbun@users.noreply.github.com>
…ntime update validation (kubeflow#4165) Add table-driven unit tests for ValidateUpdate and ValidateDelete in trainingruntime_webhook_test.go and clustertrainingruntime_webhook_test.go. Compare exact field.ErrorList aggregate errors using cmp.Diff, drop wantError: false from valid cases, and verify that updating from an invalid old object succeeds. Signed-off-by: Divyansh Rawat <divyanshrawatofficial@gmail.com>
…lang group (kubeflow#4223) Bumps the golang group with 1 update: [golang.org/x/crypto](https://github.com/golang/crypto). Updates `golang.org/x/crypto` from 0.57.0 to 0.58.0 - [Commits](golang/crypto@v0.57.0...v0.58.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-version: 0.58.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: golang ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…flow#4249) Signed-off-by: Kevin Hannon <kehannon@redhat.com>
…ubeflow#4200) * test(statusserver): add unit tests for the token authorizer Signed-off-by: shreyaabaranwal <shreyabaranwal229@gmail.com> * test(statusserver): address review feedback on authorizer tests Signed-off-by: shreyaabaranwal <shreyabaranwal229@gmail.com> * test(statusserver): cover missing exp claim and key rotation overlap Signed-off-by: shreyaabaranwal <shreyabaranwal229@gmail.com> --------- Signed-off-by: shreyaabaranwal <shreyabaranwal229@gmail.com>
…d6b72 (#313) Signed-off-by: konflux-internal-p02 <170854209+konflux-internal-p02[bot]@users.noreply.github.com> Co-authored-by: konflux-internal-p02[bot] <170854209+konflux-internal-p02[bot]@users.noreply.github.com>
Signed-off-by: Rob Bell <robell@redhat.com> # Conflicts: # charts/kubeflow-trainer/templates/crd/trainer.kubeflow.org_clustertrainingruntimes.yaml # charts/kubeflow-trainer/templates/crd/trainer.kubeflow.org_trainingruntimes.yaml # manifests/base/crds/trainer.kubeflow.org_clustertrainingruntimes.yaml # manifests/base/crds/trainer.kubeflow.org_trainingruntimes.yaml
Signed-off-by: Rob Bell <robell@redhat.com>
chore: merge upstream/master into midstream/main
|
Important Review skippedBot user detected. To trigger a single review, invoke the
|
|
🎉 Welcome to the Kubeflow Trainer! 🎉 Thanks for opening your first PR! We're happy to have you as part of our community 🚀 Here's what happens next:
Join the community:
Feel free to ask questions in the comments if you need any help or clarification! |
Coverage Report for CI Build 40062914952Coverage increased (+2.0%) to 73.706%Details
Uncovered Changes
Coverage Regressions1 previously-covered line in 1 file lost coverage.
Coverage Stats
💛 - Coveralls |
Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>
The rhoai overlay pinned namespace: opendatahub, so the ServiceMonitor tlsConfig.serverName was rendered as kubeflow-trainer-controller-manager.opendatahub.svc. When the platform operator deploys Trainer into the redhat-ods-applications applications namespace, the controller's serving certificate is issued for kubeflow-trainer-controller-manager.redhat-ods-applications.svc and the Prometheus scrape fails TLS verification, leaving the target down. Render the overlay directly into redhat-ods-applications, matching the convention used by other RHOAI component overlays (e.g. data-science-pipelines-operator), so serverName matches the serving certificate. Also derive the trainer-tls-profile ClusterRoleBinding subject namespace from the kustomization namespace via a replacement instead of the hardcoded opendatahub value, so it follows the target namespace on render. Co-Authored-By: Claude Code <noreply@anthropic.com> Signed-off-by: Karel Suta <ksuta@redhat.com>
deploy-rhoai hardcoded the opendatahub namespace even though it applies the rhoai kustomization render directly (kubectl apply -k), which takes its namespace from the kustomization. After rendering into redhat-ods-applications, the target created and labeled the wrong namespace, placed the prometheus-k8s discovery Role/RoleBinding in the wrong namespace, and waited for the deployment in the wrong namespace. Use APPLICATIONS_NAMESPACE consistently in deploy-rhoai/undeploy-rhoai and default it to redhat-ods-applications to match the manifests. Co-Authored-By: Claude Code <noreply@anthropic.com> Signed-off-by: Karel Suta <ksuta@redhat.com>
feat: add Trainer control-plane metrics
…d25f2 (#321) Signed-off-by: konflux-internal-p02 <170854209+konflux-internal-p02[bot]@users.noreply.github.com> Co-authored-by: konflux-internal-p02[bot] <170854209+konflux-internal-p02[bot]@users.noreply.github.com>
* feat: add RHOAI Trainer recording prometheus rules Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> * test: add Promtool coverage for Trainer recording rules Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> * fix: bound Trainer telemetry rule cardinality Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> * fix: apply counter rates before aggregating Trainer telemetry Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> * feat: add bounded Trainer telemetry recording rules Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> * fix: align trainer metrics rule naming Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com> --------- Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>
…b9452 (#326) Signed-off-by: konflux-internal-p02 <170854209+konflux-internal-p02[bot]@users.noreply.github.com> Co-authored-by: konflux-internal-p02[bot] <170854209+konflux-internal-p02[bot]@users.noreply.github.com>
|
@rhods-devops-app[bot]: The following test has Succeeded: Test Results47 passed, 0 failed, 4 skipped View test details
OCI Artifact Browser URLInspecting Test Artifacts ManuallyTo inspect your test artifacts manually, follow these steps:
mkdir -p oras-artifacts
cd oras-artifacts
oras pull quay.io/opendatahub/odh-ci-artifacts:odh-pr-test-trainer-rnt9z |
…b1 (#327) Signed-off-by: konflux-internal-p02 <170854209+konflux-internal-p02[bot]@users.noreply.github.com> Co-authored-by: konflux-internal-p02[bot] <170854209+konflux-internal-p02[bot]@users.noreply.github.com>
Automated Sync from main to stable
This PR automatically syncs the
mainbranch to thestablebranch by opening a pull request frommainintostable.Sync Summary
Latest commit:
960c37e9Use latest release trainer image in param.envTotal commits to sync: 28
Source:
https://github.com/red-hat-data-services/trainer.git@mainTarget:
https://github.com/red-hat-data-services/trainer.git@stablePR head:
mainCommits to be synced
960c37e9Use latest release trainer image in param.env3a8cdb43Update registry.access.redhat.com/ubi9/go-toolset Docker digest to edb9452 (Update registry.access.redhat.com/ubi9/go-toolset Docker digest to edb9452 (main) #326)d2182df2Merge remote-tracking branch 'upstream/main'be9d7345feat: add RHOAI Trainer recording prometheus rules (Update registry.access.redhat.com/ubi9/go-toolset Docker digest to 60fd6fb (rhoai-3.4) #307)932a5dc2Update registry.access.redhat.com/ubi9/go-toolset Docker digest to d4d25f2 (Update registry.access.redhat.com/ubi9/go-toolset Docker digest to d4d25f2 (main) #321)eb414082Merge remote-tracking branch 'upstream/main'95f74116Merge pull request Update registry.access.redhat.com/ubi9/go-toolset Docker digest to 68d6b72 (rhoai-3.3) #306 from abhijeet-dhumal/cherrypick-trainer-metricsd921c42afix: align Makefile.rhai deploy namespace with rhoai manifests29de853dfix: render RHOAI Trainer manifests into redhat-ods-applications25d7656ffeat: add Trainer control-plane metricsd1e441c5Merge remote-tracking branch 'upstream/main'8ec7ae5fMerge pull request Update Dockerfile Digest Updates (rhoai-3.3) #298 from opendatahub-io/midstream-merge51a62409fix: generate5beacbd1Merge branch 'upstream-master' into midstream-merged5a71618Merge remote-tracking branch 'upstream/main'9f0fdcf1chore: sync security config files from security-config8171102fUpdate registry.access.redhat.com/ubi9/go-toolset Docker digest to 68d6b72 (Update registry.access.redhat.com/ubi9/go-toolset Docker digest to 68d6b72 (main) #313)18965b90chore(test): add unit tests for the status server token authorizer (chore(test): add unit tests for the status server token authorizer kubeflow/trainer#4200)c53a08e2chore: update controller tools to v0.23 and drop crdschema hack (chore: update controller tools to v0.23 and drop crdschema hack kubeflow/trainer#4249)d67877f8chore(deps): bump golang.org/x/crypto from 0.57.0 to 0.58.0 in the golang group (chore(deps): bump golang.org/x/crypto from 0.57.0 to 0.58.0 in the golang group kubeflow/trainer#4223)204404aachore(test): add unit tests for TrainingRuntime and ClusterTrainingRuntime update validation (chore(test): add unit tests for TrainingRuntime and ClusterTrainingRuntime update validation kubeflow/trainer#4165)d7855703fix(runtimes): install the CUDA 13 build of MLX in the MLX runtime image (fix(runtimes): install the CUDA 13 build of MLX in the MLX runtime image kubeflow/trainer#4246)25538c30fix(manifests): rename serviceMonitor value to prometheus to align with JobSet (fix(manifests): rename serviceMonitor value to prometheus to align with JobSet kubeflow/trainer#4244)74f96ca2feat(api): KEP-3015: Workload Aware Scheduling for TrainJob (feat(api): KEP-3015: Workload Aware Scheduling for TrainJob kubeflow/trainer#3219)1bbebb15chore(runtimes): add ValidateObjects test coverage for TrainingRuntime and ClusterTrainingRuntime (chore(runtimes): add ValidateObjects test coverage for TrainingRuntime and ClusterTrainingRuntime kubeflow/trainer#3892)0edd89bffix(runtimes): emit PRTE env vars so MPI plugin works with Open MPI 5 (fix(runtimes): emit PRTE env vars so MPI plugin works with Open MPI 5 kubeflow/trainer#4029)0af9dc16fix(controller): break ties when picking the best OptimizationJob trial (fix(controller): break ties when picking the best OptimizationJob trial kubeflow/trainer#4192)619d75c0feat(ci): add Prometheus monitoring overlay (feat(ci): add Prometheus monitoring overlay kubeflow/trainer#4102)Merging
GitHub automerge is enabled for this pull request once required checks pass.