-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Matthieu S edited this page Feb 24, 2025
·
7 revisions

Talos cockpit aim to provide an UI to Manage Upgrades of your Talos Cluster especialy in an airgap/restrict environment. The main part of this WebApp is base on talosctl because it is the fastest way to achieve what we wanted to.
- Cluster inventory
- Fetching release and Pre-release
- Enable/Disable automated System Upgrade
- OnDemand System Upgrade
- OnDemand System Upgrade By Label
- Email reporting
- Watch dmesg
- Watch MachineConfig
- Patch machineConfig
- Upgrade K8S
- Enable/disable upgrade schedule for a node or a cluster
- Trigger upgrade for a node or a cluster
- Enable/disable K8S upgrade schedule for a node or a cluster
graph LR
subgraph Upgrade Loop
A{Loop each min}
A1{Is maintenance window set with cron ? } --True--> G2
A1 --False--> g3
end
subgraph "MRO & cfg defined"
G2[Existing schedule in DB?] --True--> G2t
G2t[Is Maintenance live ?] --True--> g3
G2t --False--> g2tf[Is Maintenance ended ?]
g2tf --True--> g2tft[Insert new schedule]
g2tf --False--> g2tff[Is maintenance incoming ?]
g2tff --True--> g2tfft[Print vars]
g2tff --False--> g2tfft
end
subgraph "Upgrade with grace period"
g3[safeUpgrade] --> g3a{timeLeft > time.Hour*24}
g3a --True--> g3att[Print days left]
g3a --False--> g3atf{timeLeft >= time.Second}
g3atf --True--> g3atft[Print timeleft]
g3atf --False--> g4
end
subgraph scheduleClusterUpgrade each shed time
g4[fetchLatestRelease] --> g4a[getTalosVersion]
g4a --> g4b[getClusterID]
g4b --> g4c[getClusterMembers]
g4c --> g4d[LatestOsVersion != member.InstalledVersion]
g4d --True--> g4dt[AutoUpdate Enables ?]
g4d --False--> g4e
g4dt --True--> g4dtt[upgradeSystem] --> g4mail[Send Report]
g4dt --False--> g4e[getNodeIP]
g4e --> g4f[IS Auto K8S Upgrade enabled ?]
g4f --True--> g4ft[upgradeKubernetes] --> g4g[nodeUpToDate == nodeCount]
g4f --False--> g4g
end