Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[integrations] Tekton Dashboard #82

Open
wlynch opened this issue Feb 4, 2021 · 32 comments
Open

[integrations] Tekton Dashboard #82

wlynch opened this issue Feb 4, 2021 · 32 comments
Labels
area/roadmap Issues that are part of the project (or organization) roadmap (usually an epic) help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. lifecycle/frozen

Comments

@wlynch
Copy link
Member

wlynch commented Feb 4, 2021

Tracking issue for integrating with the Tekton Dashboard.

We'd like to surface Results/Records in the Tekton UI so that users can visualize the logic groupings / extra data Results can store. A really rough version of this can be found here: https://github.com/tektoncd/results/tree/main/tools/simpleui

I am not sure how we can do this in a minimally invasive way. Open to ideas!

@wlynch wlynch added the help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. label Feb 4, 2021
@Fabian-K
Copy link
Contributor

Fabian-K commented Feb 5, 2021

Unfortunately not an idea of how to go forward but want to say that this is really exciting. Due to relying on the Kubernetes APIs the dashboard really struggles when there are lots of resources. Implementing proper pagination is difficult and also filtering possibilities are limited. As a workaround, we try to keep the number of resources low (e.g. using https://github.com/tektoncd/experimental/tree/master/pipeline/cleanup#cleanup-old-taskruns-and-pipelineruns) but ideally we should be able to keep as much history for e.g. all executions of a pipeline as we want and not as technically limited ;)

Would be awesome if results is the solution!

@wlynch
Copy link
Member Author

wlynch commented Feb 23, 2021

@Fabian-K Sorry I missed this! But yes, that's the goal for this project. :)

This issue is scoped purely for integrating with the Tekton Dashboard, but you'll probably find #59 useful to your use case!

@wlynch
Copy link
Member Author

wlynch commented Feb 23, 2021

https://github.com/tektoncd/dashboard/blob/master/docs/extensions.md looks like a promising way to hook into the Dashboard.

@AlanGreene
Copy link
Member

@wlynch I'd love to talk more about the desired user experience for viewing / interacting with the Results data. There are plenty of options to explore depending on the desired outcome.

At a high level I see 2 main options for the user:

  • add new pages to the Dashboard to surface data from the Results API using the existing extensions mechanism
    • Note: Dashboard extensions were originally intended to allow for both adding new pages and customisation of existing pages. Unfortunately this plan was never fully realised and extensions have remained pretty basic, only supporting the addition of new pages to the app (either simple auto-generated pages for Kubernetes resources, or custom UI similar to the deprecated webhooks-extension).
  • alternatively/additionally, provide better integration into the existing UI, so for example we might populate the existing PipelineRun details page with data from the Results API if the resources are no longer available on the cluster

There are some planned changes to the Dashboard's API / data layer that may make integration / customisation easier in future, and some other challenges such as auth that we'll need to address too.

@ghost
Copy link

ghost commented Feb 26, 2021

  • alternatively/additionally, provide better integration into the existing UI, so for example we might populate the existing PipelineRun details page with data from the Results API if the resources are no longer available on the cluster

This seems like the ideal route to me. Results providing the historical record / source of truth for anything that's reached a Completed ( / deleted) state.

@wlynch do you think that's fair assessment?

Are the dashboard's data layer plans related to the redux removal issue or documented elsewhere?

@AlanGreene
Copy link
Member

Are the dashboard's data layer plans related to the redux removal issue or documented elsewhere?

Yes that's the first part of it, a major simplification of the data layer (and corresponding reduction in boilerplate) so we can more easily plugin additional / alternative sources while solving some of the performance and caching issues we have today. I need to flesh out the plan a bit more and document it so we can start to make progress. I have my hands full for the next 1 - 2 weeks but will try to get something on paper asap for others to review.

@wlynch
Copy link
Member Author

wlynch commented Mar 1, 2021

  • alternatively/additionally, provide better integration into the existing UI, so for example we might populate the existing PipelineRun details page with data from the Results API if the resources are no longer available on the cluster

This seems like the ideal route to me. Results providing the historical record / source of truth for anything that's reached a Completed ( / deleted) state.

@wlynch do you think that's fair assessment?

Yup! The Result API also captures data for unique instances of Runs with the same name (e.g. if you create->delete->create) which would probably also be useful for the dashboard.

Modeling the dashboard on the Result API would also let us display related data (e.g. PipelineRun + TaskRuns) in groups.

@AlanGreene I added a discussion item for the March 8th Dashboard WG so we can talk about questions/ideas!

@tekton-robot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale with a justification.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close with a justification.
If this issue should be exempted, mark the issue as frozen with /lifecycle frozen with a justification.

/lifecycle stale

Send feedback to tektoncd/plumbing.

@pietervincken
Copy link

Is this issue still actively being worked on?
(I came here from the Dashboard project due to the slowness of the dashboard)

@wlynch
Copy link
Member Author

wlynch commented Jun 7, 2021

@AlanGreene it's been awhile since we've touched base on this. Any updates on the dashboard side for how to get started experimenting?

@tekton-robot
Copy link

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten with a justification.
Rotten issues close after an additional 30d of inactivity.
If this issue is safe to close now please do so with /close with a justification.
If this issue should be exempted, mark the issue as frozen with /lifecycle frozen with a justification.

/lifecycle rotten

Send feedback to tektoncd/plumbing.

@tekton-robot
Copy link

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen with a justification.
Mark the issue as fresh with /remove-lifecycle rotten with a justification.
If this issue should be exempted, mark the issue as frozen with /lifecycle frozen with a justification.

/close

Send feedback to tektoncd/plumbing.

@tekton-robot
Copy link

@tekton-robot: Closing this issue.

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen with a justification.
Mark the issue as fresh with /remove-lifecycle rotten with a justification.
If this issue should be exempted, mark the issue as frozen with /lifecycle frozen with a justification.

/close

Send feedback to tektoncd/plumbing.

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/test-infra repository.

@tekton-robot
Copy link

@pietervincken: You can't reopen an issue/PR unless you authored it or you are a collaborator.

In response to this:

/reopen

This feature is still missing. IIRC this was the endgoal of this subproject?

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/test-infra repository.

@pietervincken
Copy link

Can we re-open this issue? We're running Tekton on a larger scale (2k+ pipelineruns, 20k+ taskruns active in the cluster) so we'd be very interested in having the ability to not rely on the Kubernetes API for looking into results of a pipeline. Currently we need to very aggressively clean the runs in order for the dashboard to stay performant.

@wlynch wlynch reopened this Oct 18, 2021
@wlynch
Copy link
Member Author

wlynch commented Oct 18, 2021

/lifecycle frozen

This is something we still want to get to, but need help from the dashboard team 🙏

@drriguz
Copy link

drriguz commented Jan 19, 2022

Hi, guys, any progress on the integration?

Currently it's not possible to view the build status of a project via dashboard like jenkins, and it's also not directly supported through the pipeline metrics(use grafana + prometheus). So I'm wondering if this could be achived by tekton results?

@jb-2020
Copy link

jb-2020 commented Jun 21, 2022

alternatively/additionally, provide better integration into the existing UI, so for example we might populate the existing PipelineRun details page with data from the Results API if the resources are no longer available on the cluster

+1 to the second approach recommended by @AlanGreene - It would be great to leverage results api to make the PipelineRun link (e.g. namespaces/tekton-pipelines/pipelineruns/foo-123 permanent with minimal overhead in etcd as well as persist the logs as mentioned in: #198

These features would greatly improve the out of the box experience of Tekton IMO.

@vdemeester
Copy link
Member

/area roadmap

@tekton-robot tekton-robot added the area/roadmap Issues that are part of the project (or organization) roadmap (usually an epic) label Feb 15, 2023
@xinnjie
Copy link
Contributor

xinnjie commented Jul 23, 2023

/assign

@xinnjie
Copy link
Contributor

xinnjie commented Jul 24, 2023

@AlanGreene @adambkaplan
I'd like to propose a TEP about Results visualization in Dashboard in a few day.

The general idea is:
In PipelineRun/TaskRun list and detail view, first query Results API, if PipelineRun/TaskRun is not finished, fall back to Kubernetes API.

Benifits:

  1. Resource URL in deashboard will match Results API perfectly.
  2. If first query Kubernetes API and then query Results API, there will be be some pagination problems, because we need to take care of both API pagination.
  3. Compactbility: During development, we could set up 2 new tabs: PipelineRun results and TaskRun results for test. Modification to oringal PipelineRun/TaskRun tab would be as less as possible(Although there would be some refactors to make 2 sides use same impletation). When this feature is stable and Results API is enabled, replace original view with results view. If Results API is not enabled, all things go like noew.

@sayan-biswas
Copy link
Contributor

  1. We need to modify Results Watcher reconsilation. Currently watcher not produce result until PipelineRuns/TaskRuns ended.

@xinnjie I guess watcher does create the PipelineRuns/TaskRuns entries in the database as soon as it's reconciled, irrespective of the status. If that is what you meant.

@khrm
Copy link
Contributor

khrm commented Jul 25, 2023

I created a basic dashboard based on results using Flutter.
https://github.com/khrm/bowspirit Lot of things still need to be done on it. Atm, it has a list for Pipelinerun, also view Pipelinerun's Yaml and Log

@xinnjie
Copy link
Contributor

xinnjie commented Jul 25, 2023

  1. We need to modify Results Watcher reconsilation. Currently watcher not produce result until PipelineRuns/TaskRuns ended.

@xinnjie I guess watcher does create the PipelineRuns/TaskRuns entries in the database as soon as it's reconciled, irrespective of the status. If that is what you meant.

Yes, it is. It's my mistake here.

@cmorinupgrade
Copy link
Contributor

Any progress on enabling the dashboard to fallback to Results API database?

@xinnjie did you end up implementing that TEP you were referring to? Thank you! 🙇

@AlanGreene
Copy link
Member

@xinnjie Is this something you're still planning to work on or do you have some progress update you can share? If you're not planning to work on it that's fine, please unassign yourself so someone else can pick it up. Thanks.

@avinal
Copy link
Member

avinal commented Feb 13, 2024

It seems Xinnjie is not active on GitHub since October. it should be okay to unassign this issue.

@GijsvanDulmen
Copy link

This is really a missing feature in the complete Tekton ecosystem. Would easy up resources on the cluster as well.

@xinnjie
Copy link
Contributor

xinnjie commented Feb 24, 2024

Sorry guys, I'm not available for now.

@xinnjie xinnjie removed their assignment Feb 24, 2024
@Stringls
Copy link

Any updates on that?
It would be really helpful to save logs of PipelineRuns in a Tekton Dashboard

@AlanGreene
Copy link
Member

@Stringls Can you elaborate on what you're looking to do? If it's just persisting logs and loading those in the Dashboard see https://github.com/tektoncd/dashboard/blob/main/docs/walkthrough/walkthrough-logs.md. It describes a way to achieve this today, using minio for storage as an example, but can be achieved using any storage provider you wish as long as you can provide the required API for the Dashboard to consume.

If you're looking to persist the Tekton resources too, and load both those and the logs in the Dashboard from Tekton Results, that is not yet supported. There are a number of blockers on the Results side that need to resolved first before the Dashboard could add this support, including #535

@Stringls
Copy link

Stringls commented Aug 21, 2024

@AlanGreene Sure.
So as a user of Tekton I expect to:

  • Run Tasks/Pipelines
  • have UI (Tekton Dashboard)
  • have persistent Logs of the executed Tasks/Pipelines

As we know, we lose logs when pods of the TaskRun/PipelineRun are deleted, but I would like them to be persistent and not be deleted as Logs is a crucial part of any CI.

Setting up minio as a storage of the logs sounds useful, but not ideal. IMHO there should be a native solution in Tekton Results without any further configuration of other tools (e.g. minio). For example, if a user wants to have a local storage, Tekton Results monitors every TaskRun/PipelineRun and saves logs (stdout, stderr) in PVC/s and once Tekton Pruner deletes TaskRuns/PipelineRun Tekton Results deleted the logs associated with that Tekton resources in its storage.

We don't really look to persist the Tekton resources, currently.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/roadmap Issues that are part of the project (or organization) roadmap (usually an epic) help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. lifecycle/frozen
Projects
Status: Todo
Status: Todo
Development

No branches or pull requests