Upgrade Notification #892
Replies: 1 comment
-
Detection MechanismHybrid and decentralized detection system that queries the GitHub Releases API to obtain information about the latest available version, with verification performed on the backend and intelligent caching to minimize external calls. 1. Source: GitHub Releases API
Reasons for this choice:
The API returns:
Desktop EnvironmentBackend-Driven Detection with Frontend BannerIn the desktop environment, the Dashboard Backend embedded in the CLI will be responsible for checking if updates are available and exposing them to the frontend via GraphQL. The frontend will display a non-intrusive banner with update instructions. Why This Option?1. Desktop Mode ArchitectureThe flow in desktop is: The CLI already knows its own version (injected at compile-time in cmd.version), so the Backend can:
2. Backend is the Natural Place
Frontend should NOT do this verification because:
3. Non-Intrusive UXWe will show a discreet banner at the top of the dashboard. Banner characteristics:
4. Contextual Update InstructionsHow to guide the user to update based on their installation method?
UX ConsiderationsNotification Frequency
Timing
Visual Priority
Cluster EnvironmentDashboard Backend Queries Versions of All ComponentsIn the cluster environment, the Dashboard Backend will check versions of ALL installed components (Dashboard, Cluster API, Cluster Agent) comparing them against the latest available on GitHub Releases. Why This Option?1. Component Architecture in ClusterIn cluster there are 3 independent services. Each can be at different versions, and all need to be updated in a coordinated manner. 2. The Dashboard Must Know ALL the StateThe Dashboard is the visual "control plane," therefore it must:
3. Different Update ContextIn cluster, the update is NOT done by the end user but by a cluster admin: Typical update via Helm: helm repo update
helm upgrade kubetail kubetail/kubetail -n kubetail-systemOr via YAML manifests: kubectl apply -f https://github.com/.../kubetail-clusterauth.yamlOpen Questions1. How often should it check for available updates?
2. Persistence of "Dismiss"If the user closes the banner, when should we show it again? Options in Desktop:
Options in Cluster: Similar, but localStorage is per browser (not global for all admins) 3. How to handle installations without internet access?
4. Differentiate between types of updates?Examples:
5. What information to show about the update?Future Work1. Auto-Update (Desktop)Automatic CLI update with a single click. When to consider: If many users use manual binaries (not package managers) 2. Update ChannelsAllow users to choose what type of releases to receive:
3. In-App ChangelogShow complete changelog inside the dashboard (not just link to GitHub). Benefit: User doesn't need to open external browser to see what changed. 4. Push Notifications (Cluster)For admins who want to know immediately when there are security updates. 5. Rollback CapabilityInformation on how to rollback if the update causes problems. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Overview
We would like to add an "Upgrade Notification" feature to the Kubetail Dashboard that notifies users when a newer version of the Dashboard or the Kubetail API (Cluster API + Cluster Agent) is available and guides them toward an upgrade path appropriate for their environment. The goal is to improve user awareness of updates, reduce time spent on outdated versions, and increase adoption of critical fixes and new functionality.
Goals
Non-Goals
The Upgrade Notification feature does not perform upgrades automatically. Instead, it focuses on discovery, messaging, and user intent, leaving the actual upgrade execution to the user.
Design Overview
Runtime Environments
The dashboard can run either on the desktop (using the
kubetailCLI tool) or in the cluster (using thekubetail-dashboarddocker container). On the desktop, the dashboard allows users to switch between clusters which means it needs to be aware of the version of the Kubetail API running inside each cluster in addition to the version of thekubetailCLI tool itself. On the cluster, the dashboard only needs to be aware of the version of the services running inside its own namespace in the cluster.Cluster Services Versioning
The "Kubetail API" consists of the Cluster API and the Cluster Agent and is typically deployed using the Kubetail Helm chart. Each helm release tracks its chart version number and while not every chart version bump will necessarily affect a given user's dashboard, we can simplify our version checks by treating the chart version of a given helm release as the single version number we can use for version checks.
Detection Mechanism
For both the CLI tool and the Helm chart we can use the GitHub releases API to obtain information about the latest available release:
For the Helm charts repo, every new release is treated as "latest" so we need to do our own parsing to identify the true "latest" available.
UX/UI
Detection frequency
Notification Frequency
Timing
Visual Priority
Plan of Attack
We can split up this project into at least these PRs:
DesktopModeClusterModeProblems and Solutions
How to guide the user to update based on their installation method?
Problem: We cannot automatically detect if they used Homebrew, Snap, direct binary, etc.
Solution: Remind the user to use their own package manager to perform the upgrade
How to handle network errors?
Fail silently: (Do not show the banner if the GitHub API does not respond).
How to handle custom deployments without a Helm release chart version?
We can assume custom deployments are also managing their own version bumps and ignore this for now
Open Questions
Future Work
Differentiate between types of updates
Examples:
Version conflict checks
In
DesktopMode, it would be helpful to perform version conflict checks to ensure that the client can send requests to a given Kubetail API instanceUpdate Channels
Allow users to choose what type of releases to receive:
In-App Changelog
Show complete changelog inside the dashboard (not just link to GitHub).
Benefit: User doesn't need to open external browser to see what changed.
Push Notifications (Cluster)
For admins who want to know immediately when there are security updates.
Beta Was this translation helpful? Give feedback.
All reactions