811 Commits

Author SHA1 Message Date
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
Noel Georgi
ced57b047a
feat: support optionally disabling module sig verification
Support disabling kernel module signature verification.
Note that this does not work when SecureBoot is enabled.

Fixes: #11989

Signed-off-by: Noel Georgi <git@frezbo.dev>
2025-10-16 20:18:46 +05:30
Andrey Smirnov
2f23fedeb7
fix: file leak in reading cgroups
Ensure to close the file.
This bug is only in `main` I believe.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-10-15 18:24:30 +04:00
Andrey Smirnov
33fb48f8f9
fix: add dashboard spinner
This is handy to detect frozen machines when looking at the dashboard
output video console.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-10-06 19:29:55 +04:00
Mateusz Urbanek
33544bde9c
fix: minor improvements to fs
- Do not create target dir for detached mounts;
- Use 'ro' flag on ReadOnly mount requests;

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
2025-10-03 16:00:33 +02:00
Andrey Smirnov
cd9fb27434
fix: support secure HTTP proxy with gRPC dial
Most of the work is to add proper test environment for more cases.

Include a test for pulling an image

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-10-02 19:56:19 +04:00
Noel Georgi
3472d6e79c
fix: revert "chore: use new mount/v3 package in efivarfs"
This reverts commit c6279e04c45504af243c0aef9f255317426b4ca0.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2025-10-02 14:59:47 +05:30
Andrey Smirnov
7f048e962e
feat: update dependencies
Bump PKGS (Linux 6.16.9), tools, other go.mod dependencies.

Fix the linting issues.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-09-30 20:55:29 +04:00
Mateusz Urbanek
fe36b3d320
fix: stop returning EINVAL on remount of detached mounts
When `RemountReadOnly` was called on a detached mount, it returned `EINVAL`.
This is not the expected behavior.

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
2025-09-30 16:21:58 +02:00
Noel Georgi
c6279e04c4
chore: use new mount/v3 package in efivarfs
Use new `mount/v3` package in efivarfs.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2025-09-30 17:07:01 +05:30