Ephemeral Cluster Controller: Add provisioning metrics and standard conditions - #5379
Conversation
|
Pipeline controller notification For optional jobs, comment This repository is configured in: automatic mode |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository YAML (base), Central YAML (inherited) Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (1)
🔗 Linked repositories identifiedCodeRabbit considers these linked repositories for cross-repo context during reviews:
🚧 Files skipped from review as they are similar to previous changes (1)
Included review availability: Your plan provides up to 12 included reviews per hour; 10 remain after this review. 📝 WalkthroughWalkthroughThe change standardizes EphemeralCluster conditions on ChangesEphemeralCluster controller
Estimated code review effort: 4 (Complex) | ~45 minutes Merge Risk: ⚪ Minimal · up to The PR adds provisioning metrics, standard conditions, event recording, and configurable reconciliation concurrency without any identified actionable merge-blocking risk at the current head. Suggested reviewers: 🚥 Pre-merge checks | ✅ 15 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (15 passed)
Full details: Go Error HandlingExplanation No Go error-handling failure was introduced. The diff adds no new ignored error returns and no panic calls. The changed EphemeralCluster GET path still wraps errors with Full details: Test Coverage For New FeaturesExplanation The pull request adds Resolution Add table-driven unit tests for Full details: Stable And Deterministic Test NamesExplanation PASS: The pull request does not add or change any Ginkgo test title. The changed Go tests use standard Full details: Test Structure And QualityExplanation PASS: The changed tests are standard Go table-driven tests using Full details: Microshift Test CompatibilityExplanation No new Ginkgo e2e tests were added. The pull request only modifies existing Go unit tests under Full details: Single Node Openshift (Sno) Test CompatibilityExplanation PASS: The pull request adds no new Ginkgo e2e tests. The only modified Go test files use standard Full details: Topology-Aware Scheduling CompatibilityExplanation PASS — the pull request does not introduce a topology-dependent pod scheduling constraint. The diff changes controller concurrency, event recording, conditions, metrics, and CRD schemas. The new concurrency flag only sets controller-runtime Full details: Ote Binary Stdout ContractExplanation PASS. The pull request adds no process-level stdout writes. The only changed main-process code adds a flag and passes its value to the controller. New Full details: Ipv6 And Disconnected Network Test CompatibilityExplanation PASS: The PR adds no Ginkgo e2e tests. The changed test files use standard Go Full details: No-Weak-CryptoExplanation No weak cryptography was introduced. The pull-request diff adds no crypto imports or uses of MD5, SHA1, DES, 3DES, RC4, Blowfish, or ECB. The added comparisons operate on condition metadata such as Full details: Container-PrivilegesExplanation No container privilege violation was introduced. The PR changes a CRD, status fixtures, and Go controller logic. The changed YAML contains a CustomResourceDefinition and status data, not a Pod or other container manifest. No added Full details: No-Sensitive-Data-In-LogsExplanation No sensitive data is introduced into logs or event messages. The new events contain fixed status text, ProwJob names/states, cluster identifiers, and validation errors containing cluster/tenant/profile identifiers. The credential bytes read from Secrets are only placed in Secret data and are never formatted into a log or event. Existing
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: danilo-gemoli, jmguzik The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
Scheduling tests matching the |
|
/override ci/prow/e2e |
|
@danilo-gemoli: Overrode contexts on behalf of danilo-gemoli: ci/prow/e2e DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
|
/override ci/prow/images |
|
@danilo-gemoli: Overrode contexts on behalf of danilo-gemoli: ci/prow/images DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
|
/override ci/prow/images |
|
@danilo-gemoli: Overrode contexts on behalf of danilo-gemoli: ci/prow/images DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
|
@danilo-gemoli: all tests passed! Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
This PR brings several improvements:
reconcilerandprowJobReconcilerMaxConcurrentReconcilesconfigurable as a command line parameterephemeralcluster_count,ephemeralcluster_provisioning_duration_seconds,ephemeralcluster_deprovisioning_duration_seconds/label tide/merge-method-squash
Summary
The Ephemeral Cluster Controller now uses standard Kubernetes
metav1.Conditionobjects with observed-generation tracking. Its CRD schema and printer columns reflect the updated status model.The controller now records Kubernetes events for validation, provisioning, ProwJob lifecycle changes, readiness, errors, and deprovisioning. CI operators receive clearer visibility into cluster lifecycle actions.
Operators can configure reconciliation parallelism with the
maxConcurrentReconcilescommand-line flag. The setting applies to both EphemeralCluster and ProwJob reconciliation.The controller adds metrics for cluster counts and provisioning and deprovisioning durations. It removes the obsolete
EphemeralClusterStatusCRD and updates tests and fixtures for the new conditions and events.