https://github.com/carv-ics-forth/knot
Knot provides a complete environment for unleashing your productivity on Kubernetes
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.1%) to scientific vocabulary
Keywords
Repository
Knot provides a complete environment for unleashing your productivity on Kubernetes
Basic Info
- Host: GitHub
- Owner: CARV-ICS-FORTH
- License: apache-2.0
- Language: Python
- Default Branch: master
- Homepage: https://carv-ics-forth.github.io/knot/
- Size: 16.8 MB
Statistics
- Stars: 38
- Watchers: 8
- Forks: 4
- Open Issues: 2
- Releases: 0
Topics
Metadata Files
README.md
Knot is a complete environment for doing actual work on Kubernetes. It includes a complete set of web-based tools to help you unleash your productivity, without ever needing to use the command line. At its core, the Knot dashboard supplies the landing page for users, allowing them to launch notebooks and other services, design workflows, and specify parameters related to execution through a user-friendly interface. The dashboard manages users, wires up relevant storage to the appropriate paths inside running containers, securely provisions multiple services under one externally-accessible HTTPS endpoint, while keeping them isolated in per-user namespaces at the Kubernetes level, and provides an identity service for OAuth 2.0/OIDC-compatible applications.

The Knot installation includes: * JupyterHub * Argo Workflows * Harbor * Gitea * Grafana/Prometheus * OpenCost
All above services are accessible through the dashboard using single sign-on. Behind the scenes, other popular tools are automatically installed to help with the integration, such as cert-manager, the NGINX Ingress Controller, Vouch Proxy, and the NFS CSI Driver. Knot also uses Helm charts internally for implementing service templates.
Check out the documentation (also available in the Knot dashboard under "Documentation" at the user menu), which includes installation instructions, a user guide, and technical notes on how Knot works internally. The Knot dashboard is written in Python using Django.
Deployment
To deploy Knot you need a typical Kubernetes installation, Helm, the Helm diff plugin, and Helmfile installed. We develop, test, and run Knot on Kubernetes 1.31.x.
For quickly trying out Knot, apply the the latest Knot helmfile.yaml with:
bash
export KNOT_HOST=example.com
helmfile -f git::https://github.com/CARV-ICS-FORTH/knot.git@helmfile.yaml sync
The variable KNOT_HOST is necessary. By default, we use cert-manager to self-sign a wildcard certificate for the given host. You need to make sure that at the DNS level, both the domain name and its wildcard point to your server (i.e., both example.com and *.example.com). If you already know your external IP address, you can use a nip.io name (i.e., set KNOT_HOST to <your IP address>.nip.io).
For storage, Knot uses two persistent volume claims: one for internal state (shared by all services) and one for user files. You can use helmfile variables to setup Knot on top of existing PVCs, or skip the storage controller and directly use local storage (useful for single-server, bare metal setups).
Deployment options are discussed in the deployment chapter of the documentation. To customize deployment values like volume sizes and OAuth secrets, you can create easily create a custom helmfile that extends the default.
Development
To develop Knot in a local Kubernetes environment, like the one provided by Docker Desktop for macOS (tested with versions >= 4.38.x which use Kubernetes 1.31.x), first create and populate the Python virtual environment with:
bash
make prepare-develop
Then install Knot in a special configuration, where all requests to the dashboard are forwarded locally:
bash
make deploy-sync
Start the local server and async task worker with:
bash
make develop
When done, point your browser to https://<your IP address>.nip.io and login as "admin".
Building images
Container images for the Knot dashboard are available.
To build your own locally, run:
bash
make container
To change the version, edit VERSION. Other variables, like the kubectl version and the container registry name are set in the Makefile.
To test the container in a local Kubernetes environment, run:
bash
make test-sync
Then point your browser to https://<your IP address>.nip.io and login.
To build and push the container image, run:
bash
make container-push
We use buildx to build the Knot container for multiple architectures (linux/amd64 and linux/arm64) automatically when a new version tag is pushed. This also triggers publishing the corresponding Knot dashboard Helm chart.
Acknowledgements
Knot (previously known as Karvdash) was realized in the context of project EVOLVE (GA-825061), which received funding from the European Union’s Horizon 2020 research and innovation programme. Knot is currently supported by the European Union’s Horizon Europe research and innovation programme through projects AERO (GA-101092850) and DaFab (GA-101128693).
Owner
- Name: Computer Architecture and VLSI Systems (CARV) Laboratory
- Login: CARV-ICS-FORTH
- Kind: organization
- Location: Heraklion, Greece
- Website: http://www.ics.forth.gr/carv/
- Repositories: 53
- Profile: https://github.com/CARV-ICS-FORTH
GitHub Events
Total
- Issues event: 1
- Watch event: 4
- Delete event: 5
- Issue comment event: 1
- Member event: 1
- Push event: 23
- Create event: 8
Last Year
- Issues event: 1
- Watch event: 4
- Delete event: 5
- Issue comment event: 1
- Member event: 1
- Push event: 23
- Create event: 8
Committers
Last synced: almost 3 years ago
All Time
- Total Commits: 453
- Total Committers: 2
- Avg Commits per committer: 226.5
- Development Distribution Score (DDS): 0.252
Top Committers
| Name | Commits | |
|---|---|---|
| Antony Chazapis | c****s@i****r | 339 |
| Antony Chazapis | c****s@g****m | 114 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 45
- Total pull requests: 1
- Average time to close issues: 5 months
- Average time to close pull requests: N/A
- Total issue authors: 2
- Total pull request authors: 1
- Average comments per issue: 0.38
- Average comments per pull request: 0.0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- chazapis (43)
- kantale (2)
Pull Request Authors
- DimosChristatos (2)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- Django ==3.2.15
- Jinja2 ==3.1.1
- celery ==5.2.3
- channels ==3.0.5
- channels-redis ==3.4.1
- django-auth-ldap ==3.0.0
- django-chunked-upload ==2.0.0
- django-crispy-forms ==1.12.0
- django-impersonate ==1.7.3
- django-oauth-toolkit ==1.5.0
- gunicorn ==20.1.0
- jsonpatch ==1.32
- kubernetes ==20.13.0
- mkdocs ==1.3.0
- mkdocs-include-markdown-plugin ==3.5.2
- packaging ==21.3
- passlib ==1.7.4
- redis ==4.1.2
- requests ==2.27.1
- ruamel.yaml ==0.17.21
- whitenoise ==5.3.0
- actions/checkout v2 composite
- docker/login-action v1 composite
- docker/setup-buildx-action v1 composite
- docker/setup-qemu-action v1 composite
- peaceiris/actions-gh-pages v3 composite
- stefanprodan/helm-gh-pages master composite
- python 3.8.12 build
- python 3.8.12-slim build