Learning objectives:
- Understand the core Kubernetes objects
- Create a non-trivial application with Typescript (and Go?)
As a new user to Kubernetes, the EKS dashboard was hard to navigate. I tried some existing Kubernetes dashboards, such as the Backstage plugin. They were okay, but I wanted something better, as I want a clean separation between node information and workload information. In a platform context, EKS would be hard to provide to developers "as a service". Whilst the kubctl CLI is useful, it's a lot of effort. Good for "actions", not for "overviews". I also wanted to self-host and easily hook up to a cluster, kinda like building my own "PaaS" UI over EKS. I felt that the Kubernetes resume challenge wasn't in-depth enough.
Personally, the docs on kubernetes.io I find hard to navigate, here is a rendered version of similar content. Do note that there are multiple API groups. This project currently makes use of the "core" and "apps" groups.
There is a GitHub organisation of Kubernetes Clients for accessing the Kubernetes API. This project makes use of the JavaScript (Typescript) client. You can see the JavaScript typedocs here. Additionally, the developer guide includes a lot of information about contributing to Kubernetes, including the API conventions.
- Login to AWS
./scripts/aws-auth.sh
- Copy to
/workspace/kubernetes-user-interface/backend/config.yml
a Kubernetes configuration
This iteration:
- Update README
- Include POSTMAN collection for K8s APIs
- Fix frontend routing
- Ensure it can be deployed on a cluster (to read the cluster itself)
Next iteration:
- Integrate ECR view, to show container images
- Fix Kubernetes auth
Ideas for future
- Shoji interaction for events
- Fix Terraform module for cluster (RBAC roles)
- Include nested UX elements
- Support sidecars / multi-pods
- Show manifest in the UI
- ECR integration
- Animate the loading icon
- Fix Janky loading flashes
- Create views based on who is viewing (customizable?)
- Add loading spinners
- Add polling or websockets
- Move to proxy and clientside
- Update favicon
- Add integration tests to the backend
- Group events by resource type
- Convert into Backstage plugin