mogenius / punq Goto Github PK
View Code? Open in Web Editor NEWA slim open-source workload manager for Kubernetes with team collaboration, WebApp, and CLI.
Home Page: https://punq.dev
License: Apache License 2.0
A slim open-source workload manager for Kubernetes with team collaboration, WebApp, and CLI.
Home Page: https://punq.dev
License: Apache License 2.0
Cluster connections are currently added by uploading a kubeconfig. For some providers, such as AWS, Azure, or GCP, this is not enough. They require additional authentication through service accounts. punq should support these providers by adding an authentication option (+ kubeconfig) when adding a cluster.
Most resources are related to other resources and it should be possible to easily navigate through these relations.
For example:
I have kubectl
installed at /usr/bin/kubectl
via dnf
$ punq install -i punq.minikube.local
Do you really want to install punq to 'minikube' context? [Y/n]: y
Creating punq namespace ...
Created punq namespace. ✅
Creating punq RBAC ...
Created punq RBAC. ✅
Creating punq deployment ...
Created punq deployment. ✅
Determining cluster provider ...
Determined cluster provider: 'MINIKUBE'. ✅
Creating new punq-context secret ...
Created new punq-context secret. ✅
Creating punq service ...
Created punq service. ✅
Creating TRAEFIK punq ingress (punq.minikube.local) ...
Created TRAEFIK punq ingress (punq.minikube.local). ✅
Creating TRAEFIK middleware (punq.minikube.local) ...
Error: failed to execute command (/bin/bash -c /usr/local/bin/kubectl apply -f /tmp/traefik-middleware.yaml3688081572): exit status 127
/bin/bash: line 1: /usr/local/bin/kubectl: No such file or directory
A code review revealed there are several places where kubectl
is called on ¬Windows using the full path /usr/local/bin/kubectl
.
This is fine and desirable, but only when the fully qualified command is resolved, stored and checked.
Using a hardcoded call to /usr/local/bin/kubectl
will fail, when the caller doesn't have kubectl
installed at /usr/local/bin
.
This can be the case if it is installed via a package manager, like dnf
in my case, or when a custom location is chosen, e.g. when developing on kubectl.
There are four solutions and a local quick fix:
/usr/local/bin/kubectl
should be resolved via path, instead of being hard-coded.punq
checks whether kubectl is available using PATH but only on CLI calls which use kubectl
. kubectl
is defined once, and referred afterwards.kubectl
, punq
should talk directly with the API server, e.g. by using https://github.com/kubernetes/client-go/. This is already a dependency.NOTE: 1, 2, 3 will create a mess, when the behaviour ofkubectl
is altered during execution, unlikely, but possible: e.g. kubectx
or kubens
changes.
Quick fix:
ln -s /usr/bin/kubectl /usr/local/bin/kubectl
At last, when one of the install
commands fails, I suggest punq
should do a clean up itself or reminds to do a clean install.
I wanted to test Punq, but it seems it is incompatible with Ubuntu 20.04.
Downloading the binary on Ubuntu 20.04 (in WSL) and running it results in the following errors:
punq
punq: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by punq)
punq: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by punq)
As per my version of Ubuntu 20.04, it has libc6 2.31 installed. Doing a kernel update is not viable.
This could be solved by building the executable on Ubuntu 20.04 instead of 22.04 - that should remove the dependency of libc6 2.32 and 2.34.
It should be possible to connect to containers via shell in the user interface. Something like xterm.js could be used to open a shell in a tab next to Log, Describe, YAML.
Adding and managing users is currently only available via CLI. The section to manage members in a punq instance already exists and we need options to add and edit users.
Since punq doesn't have support to integrate SMTP for transactional emails, invite links and double opt-in are not possible yet. Therefore, when adding a user, admins could set or generate a password that is changed by the user after login.
Apart from deleting services, it should be possible to perform quick actions on pods, deployments, etc., such as:
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.