kd
Design
Kubernetes Deletion Options
Use kubernetesDeleteOptions when deleting kubernetes resources.
Kubernetes Services in App
All kubernetes service calls should occur in App.vue. This requires all child components to emit to App.
This is intentional so that all kubernetes calls are in 1 file. In the future, I will migrate to tauri so limiting change to a few files when switching to rust is important.
Closing Modal
Modals should be closed immediately, regardless of error. This will be the first iteration.
The close should occur in the closet vue file, and not its parents.
This is only for the first iteration of kd. I will improve on this later, but for now, closing modal immediately across all modals is good enough.
Creating Resources
At least 2 modes should be supported when creating resources:
- Guided
- YAML
With guided, kd will provide a form to create the resources with limited options. The options will default to values that "just work".
With yaml, kd will provide the user with a free form text input box where the user can input yaml. JSON will be supported in the future so name of method creation will change from YAML to Raw.
Roadmap
v0.4
Goals:
-
Create a new Namespace, with a new Pod, attach a Secret and a PV using Guided mode:
- To achieve this goal I will need to somehow be able to attach a secret to a pod and also attach a PVC to a pod.
-
Auto CI builds with forgejo runners
-
[ ] Pod:
- [X] Create guided Pod
- [X] Create raw Pod
- [X] Edit Pod
- [X] Update docs
-
[ ] Namespace:
- [X] List Namespace
- [X] Get Namespace
- [X] Create Namespace
- [X] Delete Namespace
- [X] Edit Namespace
- [ ] Update docs
-
[ ] Secret Support:
- [X] List Secret
- [X] Describe Secret
- [X] Delete Secret
- [X] Create Guided Secret
- [X] Edit Secret
- [ ] Update docs
-
[o] PV and PVC Support:
- [o] List PV
- [X] List PVC
- [X] Describe PV
- [X] Describe PVC
- [X] Create PVC
- [ ] Create PV
- [ ] Edit PV
- [ ] Edit PVC
- [ ] Update docs
-
[ ] Linux amd64 runner that builds binary
-
[ ] Windows amd64 runner that builds binary
-
[ ] Mac amd64 runner that builds binary
-
[ ] Mac arm64 runner that builds binary
-
Bugfixes:
- [ ] Logs autoscrolling
- [ ] Deployment Logs timing out
v0.3
- [DONE] Multi cluster Support:
- Set multiple clusters in KUBECONFIG and display in navigation
panel.
- This includes having multiple clusters within a single file aswell as multiple clusters within multiple files listed within KUBECONFIG.
- Set multiple clusters in KUBECONFIG and display in navigation
panel.
- [DONE] Workload Statefulset support:
- List StatefulSets
- Describe StatefulSets
- Log StatefulSets
- [DONE] ConfigMap Support:
- List ConfirMap
- Describe ConfigMap
- [DONE] Network Ingress support:
- List ingresses
- Describe ingresses
- Delete Ingress
- [DONE] Initial Search bar support:
- Search bar added to existing workloads
- Supports following queries:
- name:$name
- status:$status (for Pods only)
- namespace:$namespace
- label:$label
- [DONE] Windows Platform support:
- Build and support Windows AMD64
Backlog
- [ ] Deployment:
- [ ] Create Deployment
- [ ] Edit Deployment
- [ ] Delete Deployment
- Services:
- Create a new service
- Ingress:
- Add support for displaying Hosts, Address and Ports when listing Ingresses.
- Use Patch instead of Delete/Create where possible:
- I believe I can patch resources instead of delete and create them when user is to update the resource. Some (perhaps all) attributes of a resource can be patched. Backend should attempt patch and if that fails, fall back to delete & create method. This will result in quicker update to the user.
Labels arent supported
Labels can be applied to resources. They can be searched on. They can be displayed in List view, edited or used when creating a resource.
Resources are not supported in kd. Add support for them. At the very least:
- Labels should be displayed in List view
- Labels should be supported in Search For all supported resources
## Bugs
deployment logs return error when client timeout for pods is reached
When watching deployment logs which has Pods with multiple containers, the http client will timeout when trying to read error logs from other containers. When the context deadline is exceeded, the main container context is canceled so logs stop being displayed.
To reproduce, watch logs for penny deployment. kd will attempt to
connect to queue container aswell as www container. queue
container will reach context deadline exceeded and will cancel the
www stream.
I can also reproduce this on forgejo deployment.
Logs not auto scrolling to bottom
- When user clicks on logs for current workloads, the logs pane should scroll to bottom of logs and tail as new logs come in.
unable to resume terminal session
When click on a Pod > Terminal, using the terminal then click somewhere else to get focus and click back on the terminal the second terminal session fails. Logs show "Unhandled Error websock close 100 User disconnected".
Support labels
Kubernetes resources support labels. This is currently not supported by kd. Users will want to add, edit and delete labels from kubernetes resources.
This work will need to be split into multiple cards, each representing label support for a given kubernetes resource. For example, "add label support for persistent volumes" will be one card and add "labels for secrets" will be another.