820 Commits

Author SHA1 Message Date
Andrey Smirnov
252799a00b
fix: reduce memory dashboard usage
Many small changes, memory reduction measured to be aroun -20MiB.

Reduce cgroup memory limit.

Changes:

* limit updates to 2fps
* batch log updates
* reuse/maps slices to reduce allocations

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
(cherry picked from commit bdcc9321b637da77f1007a571193c2e03c984b8b)
2026-04-24 21:40:52 +04:00
Mateusz Urbanek
8180cb11c9
fix: wrong slot of encryption key was logged
During removal of encryption key, we logged slot of current key instead of the removed key.

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
(cherry picked from commit be58eafaba98bb7b1bcd20ac1ed8f8b03734c7e0)
2026-04-24 21:40:28 +04:00
Noel Georgi
730937eee9
chore: bump tools
Bump tools

Signed-off-by: Noel Georgi <git@frezbo.dev>
(cherry picked from commit e3e8f01ca66ee74898ebba5dadf4f199775d278e)
2026-04-15 19:29:36 +04:00
Noel Georgi
9b8c1891bb
fix: panic in reading PCR values
Fix panic in reading PCR values.

Fixes: #13110

Signed-off-by: Noel Georgi <git@frezbo.dev>
(cherry picked from commit c81aa125c85d3886c5b9bb4d7f77ec2def104f21)
2026-04-15 19:29:31 +04:00
Mateusz Urbanek
7d7776dcaa
fix: handle boot failure
Fixes #13083

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
(cherry picked from commit 181584a5f1850f2bfb2a837c0d05bd9e30ee48b5)
2026-04-15 18:45:08 +04:00
Andrey Smirnov
6f84628494
refactor: propagate NAME properly, allow to set on build
Allow to set build NAME on build, propagate it down to more consumers.

Expose name in `Version` resource, and use that in the dashboard
next to Talos version.

Fix some places where `Name` was hardcoded.

Propagate Name down to UKI build.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
(cherry picked from commit 968ec1e0ca26eb1f0de0836e0a55df09dea7dafe)
2026-04-15 18:43:43 +04:00
Andrey Smirnov
9be7bc0250
fix: don't set xattrs while decompressing extensions
When decompressing extensions, we might not be able to set xattrs (e.g.
running rootless), so instead of setting xattrs, save them in memory and
push to mksquashfs as pseudo definitions.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
(cherry picked from commit d697f5538a7a624a1ac7bafdfebc67dd9418c434)
2026-04-15 18:38:38 +04:00
Andrey Smirnov
f7be2c5984
feat: add resource view to talosctl dashboard
Fixes #12933

There are many usecases for this:

* exploring resources and state of the system, learning available
  resources
* when a Talos machine is booted up in an environment without network
  access, learning all available network interfaces, all disks
  available, etc.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
(cherry picked from commit 5e24d5265bde9adee92c02e675140de87ee126bf)
2026-04-15 18:35:18 +04:00
Andrey Smirnov
a47b766187
fix: unseal with "slow" TPM
Fixes #13056

The TPM unseal operation doesn't respect the context, and we had 10
second timeout for the whole key unlock operation.

So there might a case when a "slow" TPM unseal runs for more than 10
seconds, and by the time TPM unseal is down, context timeout already
passed, so a somewhat wrong messahe pops in, as the rate limiter is
configured with any limit, but it fails due to the fact that the context
got canceled (but it would have failed later anyways doing the actual
resource operation).

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
(cherry picked from commit 087ced85f5130656cbc647c2e4d838cab3ff1737)
2026-04-15 18:34:45 +04:00
Andrey Smirnov
76931f4092
feat: enforce PID check on connections to services over file sockets
Whitelist services which can access the file socket, refuse other
connections.

Fixes #12701

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
(cherry picked from commit 038cb87354eea1c1ff4612bdd13d1e77e595955a)
2026-03-26 15:58:41 +04:00
Andrey Smirnov
13d6b4a03c
fix: trim down cosign dependencies
Trade some imports, bump some modules, net result is killing lots of
transitive dependencies which were getting into the build.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-03-16 22:53:50 +04:00
Mateusz Urbanek
13ef0cfc9b
fix: unmount pseudo-late recursively
Pseudo late mount points (`/system`, `/run` and `/system`) were consistently failing to unmount.
While reaching this unmount sequence, we should already have unmounted any children.
However, if those are not unmounted, we should log what are we unmounting and unmount them recursively.

Fixes #12974

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
2026-03-16 14:14:01 +01:00
Andrey Smirnov
ee53a18c8b
fix: stop pulling wrong platform for images
Attempt to fix intermittent issue with images being pulled with the
wrong platform for multi-platform images.

The Claude did the analysis, and I think the root cause is that the
`DefaultSpec()` we used causes the match to include `variant` which is
e.g. `v8` for arm64, while if the image doesn't declare the exact
variant, it might skip filtering and pick up the first layer which is
amd64.

It is still not clear why exactly it is intermittent this way.

But this change aligns it more closely with the way containerd pulls, so
should be good to go.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-03-10 20:26:26 +04:00
Laura Brehm
7f2eb48561
feat: add image verification endpoint
Add support for whole machine-wide image verification configuration.
Configuration is a set of rules applied top-down to the image reference,
each specifying a specific cosign-based identity or static public key
claim.

Talos provides a machined API to verify an image reference, resolving it
to the digest on the way as needed.

Talos itself hooks up in the image verification process, while
containerd CRI plugin accesses same API via the machined socket.

Signed-off-by: Laura Brehm <laurabrehm@hey.com>
Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-03-06 20:06:07 +04:00
Mateusz Urbanek
15a5ec9985
feat: implement new install/upgrade API
Implement new minimal Install/Upgrade LifecycleService API with streaming
support for real-time progress reporting. Add protobuf definitions, gRPC
service implementation, and client bindings.

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
2026-03-06 12:16:35 +01:00
Mateusz Urbanek
0bb6413ff7
fix: do not fail on RO virtiofs
Fixes #12874

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
2026-03-01 21:03:13 +01:00
Andrey Smirnov
b551cb9b86
feat: allow dashboard mouse support
Allow mouse input, this already works in Table component (process list).

We have a custom footer, which is not a set of buttons, so instead add a
custom handler, so that nodes & screens in the footer are clickable now.

No changes for the way it looks.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-02-27 16:50:27 +04:00
Andrey Smirnov
7cf1de2794
fix: bring in new version of go-cmd and go-blockdevice
See:

* https://github.com/siderolabs/go-blockdevice/pull/147
* https://github.com/siderolabs/go-cmd/pull/9

Lots of changes through the code as I deprecated `Run`, `RunWithContext`
methods and allow only new `RunWithOptions` to clean up the library
usage.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-02-23 21:06:22 +04:00
Andrey Smirnov
8b1c974a2a
refactor: drop termui-widgets library
Use the library built for tview, so that we don't have to have two UI
libraries working in parallel in the same TUI.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-02-21 16:24:26 +04:00
Dmitrii Sharshakov
9758bd4fe0
feat: update Go to 1.26
Via tools/pkgs, also pulling in Clang-built Linux

Update go.mod dependencies

Fix linter errors with new golangci-lint, modernize, use new()

Signed-off-by: Dmitrii Sharshakov <dmitry.sharshakov@siderolabs.com>
Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-02-19 22:15:19 +01:00
Andrey Smirnov
f20445ad09
chore: improve logging of disk encryption handling
Pulls in KMS with logging, and adds more logging to Talos.

This allows to debug encryption problems better.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-02-19 19:06:42 +04:00
Daniil Kivenko
70c6c2154e
feat: add filter for KubeSpan advertised networks
Add advertisedNetworks filter to KubeSpan configuration that allows
filtering which additional networks (e.g., pod CIDRs) are advertised
over KubeSpan when advertiseKubernetesNetworks is enabled.

Signed-off-by: Daniil Kivenko <daniil.kivenko@p2p.org>
Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-02-12 15:02:47 +04:00
Dmitrii Sharshakov
daf18abf41
fix: fix talosctl debug in enforcing mode
Also allow the system containerd to execute igzip, which is essential
for pulling images

Signed-off-by: Dmitrii Sharshakov <dmitry.sharshakov@siderolabs.com>
2026-02-11 18:07:48 +01:00
Laura Brehm
d43a01ccbd
feat: implement talosctl debug
This implements a way to run a debug container with a provided image on
the node.

The container runs with privileged profile, allowing to issue debugging
commands (e.g. using some advanced network tools) to troubleshoot a
machine.

Signed-off-by: Laura Brehm <laurabrehm@hey.com>
Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-02-04 21:26:09 +04:00
Pranav Patil
34a31c9797
feat: add mount options support for existing volumes
Add DisableAccessTime and Secure mount options for existing volumes.
DisableAccessTime adds noatime parameter to disable access time updates.
Secure adds nosuid and nodev parameters for security (defaults to true).
Add integration tests for both options.

Signed-off-by: Pranav Patil <pranavppatil767@gmail.com>
2026-02-04 09:13:05 +01:00
Fritz Schaal
1bf95eed18
feat: improve dashboard uptime display
* display dashboard uptime in days when >= 24h

Signed-off-by: Fritz Schaal <fritz.schaal@siderolabs.com>
2026-02-03 21:52:11 +04:00
Andrey Smirnov
8b245b8f26
feat: implement new image service APIs
These new APIs only support one2one proxying, so they don't have any
hacks, and look as regular gRPC APIs.

Old APIs are deprecated, but still supported.

Implement client-side multiplexing in `talosctl`, provide fallback to
old APIs for legacy Talos versions.

New APIs include removing an image, importing an image.

Extracted from #12392

Co-authored-by: Laura Brehm <laurabrehm@hey.com>
Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-02-02 15:55:56 +04:00
Andrey Smirnov
3d1301640d
fix: wipe the first/last 1MiB in addition to wiping by signatures
I got a failure when dual-boot image refuses to format EPHEMERAL
partition where `EFI` partition used to be (VFAT).

So until we have a resolution, do this workaround.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-01-20 21:25:54 +04:00
Andrey Smirnov
743c3b94b9
fix: use correct containerd import path
Use `/v2` import path, otherwise we pull in `containerd` v1.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-01-20 15:48:54 +04:00
Andrey Smirnov
f2dd08594e
feat: report image pull progress in the console
This reports image pull progress in the console for images pulled by
Talos:

* etcd
* kubelet
* installer

This work was mostly done by @laurazard, I just wrapped it for the
console with Laura's help. (see #12932)

Co-authored-by: Laura Brehm <laurabrehm@hey.com>
Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-01-19 18:00:13 +04:00
Andrey Smirnov
96e604874b
fix: add hostname to endpoints
Populate endpoint coming from the Kubernetes controlplane endpoint with
the hostname (if the endpoint is a hostname).

This should improve cases when hostname is used for the endpoint in
terms of SNI, proper resolving of DNS if it's dynamic.

See https://github.com/siderolabs/talos/pull/12556#issuecomment-3755862314

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-01-15 22:56:46 +04:00
Andrey Smirnov
5127ef7c28
fix: wipe disk by signatures
Fixes #12491

In (almost) all places we previously used `FastWipe`, use instead a
helper which will try to discover filesystem/partition signatures, and
wipe them.

This fixes the issue when a partition re-created in the same place might
already hit a scenario when the "old" filesystem is discovered in the
same place.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-01-14 19:15:37 +04:00
Mateusz Urbanek
c3176adcf9
feat: add EnvironmentConfig document
Add new EnvironmentConfig document for configuring the Env vars.
Deprecate .Machine.Env

Closes #12439

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
2026-01-12 15:10:20 +01:00
Andrey Smirnov
35fc520872
fix: lock down etcd listen address to IPv4 localhost
Use literal IP address instead of `localhost` to make `kube-apiserver`
connect to etcd member instead of relying on IPv4/IPv6 resolving of
`localhost`.

Simplify configuration for listening on 127.0.0.1 only, generate cert
SANs uncoditionally for etcd loopback IPs.

Fixes #12542

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-01-09 18:49:43 +04:00
Noel Georgi
dc2009e477
chore: use context when creating filesystems
Pass in context when creating filesystems with `mkfs.*` commands.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2026-01-05 15:29:35 +05:30
Andrey Smirnov
154952175a
fix: disable swap for system services
If system services including kubelet/CRI start using swap, it might lead
to extreme performance degradation.

Disable swap for all system services except for dashboard (which is not
critical).

```
NAME                                                                          SwapCurrent   SwapPeak   SwapHigh   SwapMax    ZswapCurrent   ZswapMax   ZswapWriteback
.                                                                                unset         unset      unset      unset      unset          unset   1
├──init                                                                            0 B           0 B        max        0 B        0 B            max   1
├──podruntime                                                                      0 B           0 B        max        max        0 B            max   1
│   ├──etcd                                                                        0 B           0 B        max        0 B        0 B            max   1
│   ├──kubelet                                                                     0 B           0 B        max        0 B        0 B            max   1
│   └──runtime                                                                     0 B           0 B        max        0 B        0 B            max   1
└──system                                                                          0 B           0 B        max        max        0 B            max   1
    ├──apid                                                                        0 B           0 B        max        0 B        0 B            max   1
    ├──dashboard                                                                   0 B           0 B        max        max        0 B            max   1
    ├──runtime                                                                     0 B           0 B        max        0 B        0 B            max   1
    ├──trustd                                                                      0 B           0 B        max        0 B        0 B            max   1
```

Refactor etcd cgroup to use same common pattern while keeping same
settings (but limit swap).

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-12-26 18:25:25 +04:00
Andrey Smirnov
c57701d659
fix: remove interactive installer
The interactive installer has been deprecated since v1.12 cycle,
now removed completely including the API method.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-12-25 15:01:10 +04:00
Noel Georgi
8f2b337994
feat: imager support rootless builds
Also changes the bootloader interface.
Disks are formatted/created with pre-populated source directories in Install/Image mode.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2025-12-24 11:02:37 +05:30
Noel Georgi
c7525a97ef
feat: support creating filesystems from folder
Support creating filesystems from `SourceDirectory`, this implies partitions can have the data populated when formatted.

ImageCache handling is now using `SourceDirectory` while formatting simplifying the code.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2025-12-23 18:13:01 +05:30
Dmitrii Sharshakov
3dfa4d6e40
fix: make upgrade work with SELinux enforcing=1
Add a test for this case

Signed-off-by: Dmitrii Sharshakov <dmitry.sharshakov@siderolabs.com>

Co-authored-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-12-23 13:43:38 +04:00
Mateusz Urbanek
694f45413f
feat: external volumes
Add new volume type for managing external volume mounts - Virtiofs volumes

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
2025-12-15 14:35:52 +01:00
Andrey Smirnov
d4309d7b1a
fix: add a timeout for DNS resolving for NTP
It should help airgapped switch NTP servers on machine config change
while being stuck resolving unresolvalbe default endpoint.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-12-03 21:09:41 +04:00
Andrey Smirnov
6063fbf912
feat: update dependencies
Many small changes, linting fixes, migration to moby/moby client
package.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-11-14 14:49:44 +04:00
Laura Brehm
399240be3a
feat: drop partitions on reset with system partitions wipe
When resetting+wiping system partitions (`talosctl reset
--system-labels-to-wipe ...`), also drop partitions. This enables
usecases such as relocating EPHEMERAL, etc. with a new machine
config.

Signed-off-by: Laura Brehm <laurabrehm@hey.com>
2025-11-13 16:09:17 +01:00
Andrey Smirnov
82ac1119ec
feat: implement new registry configuration
Move to using multi-doc registry configuration.

Fixes #12120

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-11-12 17:25:01 +04:00
Andrey Smirnov
60be0daf84
feat: implement multi-doc Wireguard config
Fixes #10963

Also hides/deprecated `.machine.network.interfaces`, as every piece of
it is now available as proper multi-doc.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-11-10 19:05:58 +04:00
Andrey Smirnov
e9b016f809
fix: use strict platform match when pulling images
It only applies to Talos pulling images, not CRI-initiated pulls.

This more of an experiment to fight a random issue when a wrong platform
image is pulled (specifically on arm64 platform accidentally pulling
amd64 image).

Co-authored-by: Laura Brehm <laurabrehm@hey.com>
Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-11-07 20:10:06 +04:00
Andrey Smirnov
92eeaa4826
fix: update YAML library
Update COSI, and stop using a fork of `gopkg.in/yaml.v3`, now we use new
supported for of this library.

Drop `MarshalYAMLBytes` for the machine config, as we actually marshal
config as a string, and we don't need this at all.

Make `talosctl` stop doing hacks on machine config for newer Talos, keep
hacks for backwards compatibility.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-11-04 15:21:57 +04:00
Mateusz Urbanek
f3df0f80b9
feat: add directory backed UserVolumes
Resolves #11848

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
2025-10-29 12:00:24 +01:00
Andrey Smirnov
ec0a813fac
feat: unify cmdline handling GRUB/systemd-boot
Use cmdline from the UKI in Talos 1.12+ by default for new installs.

This brings GRUB in line with systemd-boot vs. cmdline behavior.

Fixes #12019

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-10-17 16:00:46 +04:00