headlamp-k8s / headlamp

A Kubernetes web UI that is fully-featured, user-friendly and extensible
https://headlamp.dev
Apache License 2.0
2.32k stars 166 forks source link

Terminal randomly pops up on Windows #2346

Open absmith82 opened 1 month ago

absmith82 commented 1 month ago

After installing the Desktop version of Headlamp 0.25.1, I am finally able to login to my EKS cluster with AWS IAM Identity Center (AWS SSO). However, there seems to be an odd issue where the system pops up a terminal anytime it is checking with authentication or something of the sort.

If I am not authenticated in AWS CLI for the SSO session, I get spammed with Windows terminal windows till the system times out.

If I do have an authentication session, it does briefly open a terminal window, then authenticates. Randomly throughout using the UI I will get a terminal window that pops up and redirects the computers focus to that window. It is generally blank and exits almost immediately. Once the window closes my computer is no longer focused on Headlamp and I have to click back into headlamp to keep working.

joaquimrocha commented 1 month ago

Thanks @absmith82 . @illume , This seems to be related to https://github.com/headlamp-k8s/headlamp/issues/1889 We should probably reduce the frequency of these checks + eventually turn off the checks automatically for any cluster unless the user sets it up to do so.

NordengenT commented 1 month ago

This issue should be prioritized. This bug renders the application useless on Windows. For a 4 cluster setup I get around 30 dialogs spawning each time the application refreshes. One failed attempt triggers a whole refresh of login attempts on the other clusters and the loop continues.

illume commented 3 weeks ago

@skoeva these are the two related PRs we spoke about.

The key to reproducing it is to test a windows console binary. It doesn't necessarily need to have Azure/GKE etc setup.

illume commented 3 weeks ago

On windows you can use the CREATE_NO_WINDOW flag to prevent these windows popping up.

Note, the CreateProcess is done within golang inside the kubernetes libraries which exec the plugin binaries. Golang does allow passing this flag through.

So... probably the path to take is to submit a patch to k8s to do this always (or make it optional/configurable). If they don't accept the patch soon, then we can also potentially fork that code and use the fork.


(ps. It's not 100% clear to me if there's some windows API magic hack to allow it to also stop all child processes doing this. This is why we can't just do it from node when starting headlamp-server. It might be worth exploring this more... but this path be dragons.)