Comments (5)
Good point, I haven't coded against the Kubernetes UI server before but I think we've done it this way so we have power over matters such as the format of certain responses (making it noddy for our frontend code to parse) and control over return codes. We also get to do any additional error handling that we may like to do.
It also lets us do things a little more advanced (I like our TaskRun logs API and its response for example), but you're right, we're basically an indirection layer between the frontend and the Kube API server right now and perhaps we needn't be in all cases.
It's not much code for the get methods mind you, and it also does give us some power because we always know what our responses are going to look like (so in terms of returning lists for example, or arrays).
from dashboard.
Also see #35 (comment) (linking here so context isn't lost / conversation doesn't split)
from dashboard.
Hi @gorkem the best reason I can give for the REST API is that we want the dashboard to work against clusters that do not expose the kubernetes API, or keep it very locked down. We don't currently have a plan to run a single dashoard against multiple clusters, and expect to use in-cluster securtity (service accounts and role bindings) to restrict what the dashboard is able to do on that cluster. Thank you for asking - it's a very fair question. We could start looking at edging the REST API out in some circumstances but it would help to have a clear need to do so. I hope you won't mind if I close this issue.
from dashboard.
@mnuttall I think exposing the kube api server and defining REST APIs are different concerns. For instance the backend for OpenShift's dashboard proxies the API calls to API server without implementing new REST APIs, therefore uses an internal end point to eliminate the need for exposing kubernetes API server.
from dashboard.
For tracking purposes: this was implemented beginning with #267 and #290, completed over a number of subsequent issues / PRs. This started in ~June 2019 and the last remaining vestiges of the legacy websocket API were removed ~August 2021.
The Dashboard now maintains a single custom API for retrieving install metadata, but otherwise proxies API requests to the Kubernetes API server.
This allowed for deletion of a large amount of code, uncoupled the Dashboard from Triggers / Pipelines releases (no longer uses their golang SDKs), and had a number of other benefits including:
- improved performance
- improved websocket support
- log streaming support
- ability to run the Dashboard as a local client without a deployment in the cluster
- etc.
from dashboard.
Related Issues (20)
- Improve display of pipelines loaded via remote resolution HOT 8
- Unable to import pipeline and tasks while following the Minikube tutorial HOT 5
- Cert manager can't create pods for ingress deployed in tekton-pipelines namespace due to namespace restrictions HOT 1
- Dashboard hangs when pipelineruns are in 1000's HOT 1
- Pass timeframe to external-logs service HOT 1
- Have Pipelines and Tasks sections also display definitions from remote resolvers, such as git, etc HOT 2
- Google storage has not been updated with latest 0.36.1 release HOT 1
- The `apiVersion` displayed in the dashboard does not match the `apiVersion` used HOT 2
- ACTION REQUIRED: Changes to pulling Chainguard Images HOT 4
- Tekton windows localhost OAuth setup failed HOT 12
- [Translation] Support more languages HOT 4
- Namespace selector keeps jumping back to first alphabetically HOT 10
- Tekton Rebuild - 403 denied HOT 1
- Dashboard allows drop down of tasks/pipleines, can we have multi-select also to choose multi tasks/pipelines to trigger a Run. HOT 10
- Need to add an indication (tekton chains logo) when a task is signed by tekton chains for taskRuns HOT 1
- Add the ability to select a pipeline/task from a dropdown list and optionally make it mandatory HOT 3
- Admission Controller refuses PipelineRun created using Tekton Dashboard HOT 4
- Ability to select an initial namespace on GUI HOT 13
- Add more rendering options in pipelineRun generatedName HOT 3
- Improve layout on smaller screens HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dashboard.