Feat(reports): CUE reports with dashboards, and feature gates read from the controller (19/21)

Merged
BR
15d ago
+5168-48

Stack 19/21 · after #970 · next #972 · uses KubeVela kubevela/kubevela#7422 at runtime, kubevela/kubevela#7423 to build

Targets main but builds on #970, so the earlier stack commits show here too: review the last commit only. Merge after #970.

Description of your changes

  • Reports are CUE, local to a project or global, run over one project with charts and headline tiles. VelaUX installs a set of built-in ones (environment drift, running images, restarting pods, quota usage, recent changes and more).
  • Feature gates: KubeVela code running inside VelaUX follows the gates the controller publishes, so a compare or dry-run here matches the controller.
// +title=Running images
// +chart=pie
// +chart:x=tag
import "vela/report"

template: {
	pods: report.#List & {$params: {apiVersion: "v1", kind: "Pod"}}
	// ...
	rows: [...{
		// +title=Repository
		repository: string
		// +title=Tag
		tag: string
	}]
}

19-reports

Fixes #

I have:

  • Read and followed KubeVela's contribution process.
  • Related Docs updated properly. In a new feature or configuration option, an update to the documentation is necessary.
  • Run yarn lint to ensure the frontend changes are ready for review.
  • Run make reviewableto ensure the server changes are ready for review.
  • Added backport release-x.y labels to auto-backport this PR if necessary.

Special notes for your reviewer

  • Reports read through VelaUX's own APIs as the signed-in user, so they see only what the user can.