headlamp-k8s / headlamp Goto Github PK
View Code? Open in Web Editor NEWA Kubernetes web UI that is fully-featured, user-friendly and extensible
Home Page: https://headlamp.dev
License: Apache License 2.0
A Kubernetes web UI that is fully-featured, user-friendly and extensible
Home Page: https://headlamp.dev
License: Apache License 2.0
We should add the charts for memory/CPU requested/actual/limit used by pods.
hi This is a great project,and I want to contribute code.
but as title I meet trouble
I don‘t konw what is it the url headlamp.mydeployment.io
.
Can you help me make a develop environment ?
Provide:
./Makefile
./Dockerfile
./deploy/*.yaml
: Kubernetes yaml files to deploy with kubectl apply -f deploy/
As much as it is possible, the URLs used in the dashboard should reflect what users see in the view.
i.e. if a table is sorted by some column, then the URL should reflect that.
The reason is that e.g. this way users can share URLs within a team, and everybody is expected to see exactly what the user was seeing without having to change some aspects in the view.
Acceptance Criteria:
More details TBD.
Description
I get an SSL error when trying to use on-prem Dex with a cert signed by our local cert authority. Is there a way to make this work?
Impact
Prevents me from using OIDC
Environment and steps to reproduce
2020/11/19 23:58:21 Error while fetching the provider from https://dex.tst-k8s.epic.com/callback error Get https://dex.tst-k8s.epic.com/callback/.well-known/openid-configuration: x509: certificate signed by unknown authority
2020/11/19 23:58:21 http: panic serving 10.96.77.112:41566: runtime error: invalid memory address or nil pointer dereference
This results in a pop up window that says 502 bad gateway.
Expected behavior
Be directed to dex to login
Additional information
I'm already passing -insecure-ssl and it did not help.
We should have a notifications area, with the most important events from the cluster.
It's still to be defined whether this area should show events for all clusters or just the current one (or to let it be defined by the settings).
Another possibility that can be part of this feature is to have an actual browser/app notification when an event happens.
Acceptance Criteria:
More details TBD.
Flatpak provides sandboxed and easy to manage Linux applications. We want to have Headlamp as a flatpak and on Flathub too, so let's track the work here.
Acceptance Criteria:
We need an apply button that allows users to apply changes to the cluster using a YAML file.
Acceptance Criteria:
When deploying Headlamp on a cluster, we may want to consider supporting auth using a service account.
Pros:
Cons:
The metrics server shouldn't be a requirement for running Headlamp, but currently the code just assumes we have metrics server installed.
We should make sure that if the metrics server is not installed then we simply don't show the charts/info we generate from the metrics, and instead we should display a message suggesting to install the metrics server. This message should be non-intrusive and small at the moment (later we can add a link to how to install it, etc.).
Currently we support plugins but there is yet no stable API for registering views/routes, etc. i.e. they can be done but they're subject to change.
We should evaluate whether the current functions/prototypes are good enough to announce that their "stable", meaning we will support them through minor versions.
Acceptance Criteria:
Like we have in lokomotive. You can add this for writing a clean go code. I think currently, only 2 linters are used and more should be enabled. For more information https://github.com/kinvolk/lokomotive/blob/master/.golangci.yml
What do you think @joaquimrocha @ashu8912?
Some users prefer to use a dashboard from their machines instead of having it running in a cluster or hosted somewhere else.
To support this use-case, we should have a desktop application (Electron) for the most used platforms: Linux, Mac, Windows.
Acceptance Criteria:
We have Edit and Delete buttons with the respective functionality, but they haven't been added and connected to all the views. So we should add those where needed.
Acceptance Criteria:
We should add a view for the Pod Security Policies, under the security tab, using the link
/apis/policy/v1beta1/podsecuritypolicies
.
Right now, even if plugins are self-contained in their own folder and not importing project's modules directly, they're still being built together with the project.
In order to make the plugins really powerful, we should have them built outside of the project (out-of-tree), and imported in a different way (likely sent from the backend according to how it is configured).
We should check out Mattermost's approach for inspiration: https://github.com/mattermost/mattermost-plugins
Acceptance Criteria:
In the Workloads view's charts, if a chart is empty (because there are no workloads running of that kind), it should still show a legend under it.
E.g.:
In the example above, under the CronJobs' chart it should say: 0 Running
.
Acceptance Criteria:
Even though having the dashboard on phone screens is not a priority, we want to make sure that the UI adapts well to smaller screens (at least for tablets).
Accetance Criteria:
We have severa workload types like DaemonSets, Deployments, Jobs, CronJobs, StatefulSets, ReplicaSets, but only the latter has a dedicated list view.
We should create the dedicated list views for each of them, showing extra data in the list (to be defined).
The overall design of the dashboard will be reviewed by a designer, so we make sure the UX and UI great for our users. We also need a nice logo.
Acceptance Criteria:
Many users prefer dark backgrounds in a screen, so we should offer this option.
Acceptance Criteria:
We should add a search view that searches for objects across clusters.
This search should have filters to specify e.g. kinds of objects, namespaces, clusters, etc.
Proposals:
One nice way to quickly identify clusters is to assign different icons to them. So we should allow that as an option.
Acceptance Criteria:
*
TBD: Whether this will be a choice from a set of predefined icons, or a user uploaded icon, or both.
In #66 the Dockerfile assumes that any plugins to be included in the image will be added to a folder plugins
in the project's root directory. It would be nicer to instead be able to pass the plugins dir as an arg to the docker's file. This sounds trivial but since we need to copy the dir only when it exists, things get a bit trickier.
Having keyboard shortcuts for the most common actions in Headlamp allows users to become very productive with the dashboard. So we should add them.
Initially we may just have them to select the search (#13), and switch clusters.
Acceptance Criteria:
Since we support multiple clusters, a nice way to quickly identify them (besides the name) is to assign them a different color. We shall call this the cluster's accent color as it will be reflected in a few parts of the dashboard.
We understand this is not an accessible option for color-blind users, but that should be covered by #14 .
This feature also requires having a settings view (#16).
Acceptance Criteria:
Steps to Reproduce the above issue in Roles View:
Steps to Reproduce the above issue in RoleBindings View
Helm is used by a large portion of the k8s community for managing workloads. We probably want to have an official chart for Headlamp.
using this file to deploy in my cluster but failed with flag provided but not defined: -plugin-dir
。
according to the logs, it should be -plugins-dir
。
There should be a settings view to allow the user to configre several aspects of the dashboard / clusters.
Acceptance Criteria:
Design:
TBD
Hi,
I'm trying to run Headlamp in my local minikube cluster. This is my first time doing so. However, I can't get the resources in the dashboard, eventhough I'm using the default serviceaccount token. I verify that I can use this token to access API, e.g.
kubectl --token=$TOKEN get pods
gives me the list of pods running on my minikube.
In the browser, I can see that I have the following 403 error when opening the cluster page, e.g. http://localhost:3000/c/minikube
apiProxy.ts:48 GET http://localhost:4654/clusters/minikube/apis/metrics.k8s.io/v1beta1/nodes 403 (Forbidden)
request @ apiProxy.ts:48
getMetrics @ api.ts:178
index.js:1 No metrics {err: Error: Api request error: Forbidden - nodes.metrics.k8s.io is forbidden: User "system:anonymous" ca…, url: "/apis/metrics.k8s.io/v1beta1/nodes"}
So my question is, is there any additional step that I should do to test Headlamp, either in minikube or other running k8 cluster?
Thank you :)
The dashboard should be able to support several clusters. The actual support for this should be a build flag so it's just simple to configure when hosted.
I tried to use the headlamp for my cluster. it was showing that I need to add the metrics to get the usage details of each node. But I didn't find any documentation regarding how to add the metics
If a cluster cannot be reached (either the cluster is down, or the user's network is down), the user should be informed about that.
Design for this is TDB.
In views which use tables (every list view), if the data is updated, then the list refreshes to show those changes. This represents a UX a problem if the user is beyond the first page of the table, as it will refresh and show the 1st page again.
Refreshing and keep showing the previous page the user was seeing is also not a good solution as there may be new entries before or in the current page, which would "displace" the results the user may be interested in checking out.
A better solution thus is to just not update the table when the data changes if the table is in a page > 1, but instead show a "Refresh" button on top of the table, so the user can be aware that there are new changes, and click the button.
Acceptance Criteria:
Refresh
, and the tooltip Click to display the new data in the table
.We should allow sorting by any column of the SimpleTable (maybe that requires a sorting function per column), and have the arrow up/down small icon next to the column title for ascending/descending orders.
When starting a Lokomotive cluster without gangway, I get a kubeconfig with a client certificate but without token. We should implement a way in the dashboard to authenticate with a kubeconfig, without a dashboard.
When creating a new resource, if the kind is not set up yet (or is the wrong kind), the documentation tab should show an error message instead of keeping the spinner showing forever.
Acceptance Criteria:
Cannot load documentation: CAUSE HERE
.Current situation
If the metrics server is not installed, then Headlamp shows that notice but there is no mention of it in the docs.
Impact
Users who are not very familiar with the metrics-server/k8s may end up thinking there is a bug.
Ideal future situation
Users will know what to do if they want to see metrics exposed in Headlamp.
Implementation options
We should highlight the JSON and YAML data in the several views that show it. E.g. https://www.prettifier.net/json/
Acceptance Criteria:
Description
MacOS app does not get beyond "Wait while fetching clusters..." state. Cannot connect to http://localhost:4466/config
.
Impact
App seems completely dysfunctional.
Environment and steps to reproduce
Expected behavior
Expected to see some clusters, kubectl context or similar.
Additional information
Screenshots
Description
When I try to access the following URL through the README.md file: (https://github.com/kinvolk/headlamp/blob/master/docs/installation/desktop/mac-installation) to install a desktop app, it gives me 404 page not gound error. Has this been moved somewhere and the links in the README file not updated?
When performing cluster actions such as edit/delete/create, apparently the exceptions aren't being handled.
I have fixed this locally but I'm filing this issue to track it as I cannot finish it now.
Hello,
I got an error and there was blank screen when i try to access the url that host name and path defined in the Ingress yaml.
But the url of Service ip and nodeport is working fine and there is only problem when using Ingress.
This is the message on Chrome developer mode. (The url is : "http://test.mycompany.com/monitor/ " but i got this)
my Ingress yaml is as follows: (I don't think it has its own problem because it works for other services)
kind: Ingress
apiVersion: networking.k8s.io/v1beta1
metadata:
name: headlamp
namespace: kube-system
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- host: test.mycompany.com
http:
paths:
- path: /monitor(/|$)(.*)
backend:
serviceName: headlamp
servicePort: 80
Could you give me some help to use ingress to access headlamp?
Thanks.
We should publish official Headlamp images on quay.io/kinvolk. We can set up a CI job to build and push images from master
as well as from Git tags when we start doing official releases.
Description
Two issues
-plugins-dir
instead of -plugin-dir
[ 1 sentence detailing the impact this bug is creating for you ]
Environment and steps to reproduce
Set-up: a managed k3s cluster on Civo (civo.com)
Task: first edit the deployment and change the plugin-dir to plugins-dir
Action(s): after opening the UI , providing the default SA token for authentication I am not able to view anything inside the cluster
Expected behavior
Should be able to see the cluster resources
We need a way to configure the dashboard to allow users to authenticate through OIDC.
Details TBD.
When we support multiple clusters, it'd be useful to have an overview with any interesting data from the clusters, like any failure events, and/or the load. So users can quickly be aware of any changes that require their attention.
Requirements TBD.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.