Skip to content
Matthieu S edited this page Feb 24, 2025 · 7 revisions

What is Talos Cockpit?

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.

Available Features

  • 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

APIs

  • 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

Process diagram

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
Loading

Clone this wiki locally