585 Commits

Author SHA1 Message Date
Mateusz Urbanek
aebbbaf274
feat: support relative voume size
Include percent-based maxSize, e.g. use 50% of available space.

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
(cherry picked from commit 83f2bdb9ce6c9466716a6ac9c94dc2222e569ee8)
2025-11-14 16:55:51 +01: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
Mateusz Urbanek
308c6bc414
feat: add full disk volumes
When set to `disk`, a full block device is used for the volume.

When `volumeType = "disk"`:
- Size specific settings are not allowed in the provisioning block (`minSize`, `maxSize`, `grow`).

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
2025-11-12 14:50:56 +01:00
Laura Brehm
43f4e317f1
fix: race between VolumeConfigController and UserVolumeConfigController
Previously, system volumes (`META`, `STATE`, etc.) were created by
`VolumeConfigController` and user volumes were created by
`UserVolumeConfigController`. This resulted in these controllers
racing to create volumes, which could cause partitions to be created in
an incorrect order.

This patch fixes this potential race by merging these two controllers
into a single controller, and refactoring a lot of the similar code
paths into one single pipeline for volume config handling.

Signed-off-by: Laura Brehm <laurabrehm@hey.com>
2025-11-12 12:11:17 +04:00
Laura Brehm
957770f65a
feat(machined): add panic/force mode reboot
In certain situations, Talos's shutdown/reboot sequence hangs while
waiting for services/mounts to be gracefully stopped (see:
https://github.com/siderolabs/talos/issues/11775).

This patch adds a forceful mode to the reboot sequence (`talosctl reboot
--mode force`) that bypasses graceful userspace teardown and hard
reboots the machine.

Signed-off-by: Laura Brehm <laurabrehm@hey.com>
2025-11-11 12:08:34 +01: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
c8561ee2d0
feat: implement bridge multi-document config
Fixes #10962

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-11-07 13:59:25 +04:00
Andrey Smirnov
f4ad3077b0
feat: implement bond multi-doc configuration
Also expand internal bond configuration to cover missing fields.
They are not going to be exposed in legacy configuration.

Fixes #10960

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-11-07 13:45:09 +04:00
Dmitrii Sharshakov
c93a9c6b41
fix: improve OOM controller stability and make test strict on false positives
- Add d_* PSI derivative values to the trigger expression context
- Only trigger OOM action while PSI is rising
- Make OOM test fail if controller kills a cgroup without stress-ng
- Wait for stress-mem to terminate before proceeding with the next tests
- Skip OOM test when running with race detector

Signed-off-by: Dmitrii Sharshakov <dmitry.sharshakov@siderolabs.com>
2025-11-06 19:52:46 +01:00
Andrey Smirnov
e25db484f5
test: disable parallelism in Longhorn tests
Parallel test don't work inside testify suites.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-11-06 14:49:33 +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
Andrey Smirnov
be028b67a0
feat: add support for multi-doc VLAN config
Fixes #10961

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-10-29 17:20:24 +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
fb4bfe851c
chore: fix LVM test
Rework the assertion to be more specific.

The root cause that now LVM marks device mapper devices in a different
way, and we see just two of them.

Co-authored-by: Laura Brehm <laurabrehm@hey.com>
Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-10-28 18:44:59 +04:00
Andrey Smirnov
f4ee0d1128
chore: disable VIP operator test
It might restart kube-apiserver (due to cert change) at a random moment.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-10-28 18:27:11 +04:00
Andrey Smirnov
1dffa5d996
feat: implement virtual IP operator config
Fixes #10959

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-10-24 17:37:03 +04:00
Andrey Smirnov
39eeae9631
feat: update dependencies
CoreDNS 1.13.0
Linux 6.17.4

Other go.mod dependencies, tools, Helm charts used in tests, etc.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-10-23 19:10:48 +04:00
Andrey Smirnov
9890a9a31d
test: fix OOM test
Scale the number of replicas according to available resources.

The problem was that `qemu-race` has more memory available.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-10-23 16:14:18 +04:00
Mateusz Urbanek
c0772b8eda
feat: add airgapped mode to QEMU backed talos
Add new `--airgapped` flag to talos cluster create (qemu)
to disable NAT in the VMs to effectively become airgapped.

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
2025-10-22 18:10:27 +02:00
Andrey Smirnov
ac60a9e27d
fix: update test for PCI driver rebind/IOMMU
Use `e1000` emulation instead of `virtio-net`, as with new network
config if we create another `virtion-net` link, Talos is confused which
one should be aliased, and networking config is broken.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-10-22 19:01:12 +04:00
Andrey Smirnov
6c98f4cdb0
feat: implement new DHCP network configuration
Fixes #11661

Fixes #10958

This also implement proper client identifier handling.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-10-21 20:51:58 +04:00
Dmitrii Sharshakov
4e12df8c5c
test: integration test for OOM controller
- Improve docs
- Disable OOM controller in container mode
- Log OOM events
- Add an integration test verifying the system can sustain an OOM event

Signed-off-by: Dmitrii Sharshakov <dmitry.sharshakov@siderolabs.com>
2025-10-20 17:50:59 +02: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
37e4c40c6a
fix: skip module signature tests on docker provisioner only
Only skip the kernel module signature verification tests on docker provisioner only.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2025-10-17 15:43:37 +05:30
Mateusz Urbanek
8124efb42f
fix: cache e2e
Failing cache e2e due to missing command.

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
2025-10-17 09:30:26 +02: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
Mateusz Urbanek
dbdd2b237e
feat: add static registry to talosctl
Fixes #11928
Fixes #11929

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
2025-10-16 14:08:17 +02:00
Andrey Smirnov
9a42b05bda
feat: implement link aliasing
Fixes #10956

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-10-08 16:27:27 +04:00
Dmitrii Sharshakov
053fd0bd4d
feat: update Linux to 6.17
Also update module lists, pull in other tools/pkgs updates.

Signed-off-by: Dmitrii Sharshakov <dmitry.sharshakov@siderolabs.com>
2025-10-06 16:52:16 +02:00
Mateusz Urbanek
a940e45a7f
feat: generate list of images required to build talos
Add new command that takes Talos version (semver) and generates a list
of images that are used in Image Factory for building talos.

Fixes #11927

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
2025-10-02 16:15:32 +02:00
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
Andrey Smirnov
7bae5b40b4
feat: implement link configuration
New multi-doc way to apply static configuration to network links.

Fixes #10957

Also implements related changes:

* new-style auto-DHCP mode - run DHCP as long as there is no new-style
  config document
* refactoring of controllers/tests which were touched in this PR
* implemented embedded config structs handling in docgen -> Markdown and
  docgen -> JSON schema

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-09-25 18:28:06 +04:00
Andrey Smirnov
53ce93aaed
test: try to clear connection refused more aggressively
Try to stabilize some tests.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-09-18 14:11:37 +04:00
Noel Georgi
b88f27d804
chore: make reset test code a bit better
Simplify the reset test code.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2025-09-16 19:53:02 +05:30
Andrey Smirnov
1cde53d017
test: fix several issues with tests
One issue is with update hostname tests which runs against Talos v1.11
machine config which contains legacy fields which need to be removed.

Another is an attempt to refactor apply-try tests.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-09-16 16:41:37 +04:00
Mateusz Urbanek
2120904ec5
feat: create detached tmpfs
Fixes #10159

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
2025-09-15 13:00:18 +02:00
Andrey Smirnov
a2122ee5cb
feat: implement HostConfig multi-doc
Fixes #10952

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-09-12 14:28:50 +04:00
Andrey Smirnov
f85f82f32f
test: fix flakiness in RawVolumes test
We test for labels immediately after volume status is ready, but we
should instead wait a bit for labels to be discovered.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-09-11 16:49:48 +04:00
Andrey Smirnov
8b64f68f69
test: improve test stability
Fixes #11780

Couple of changes:

* clear connection refused before apply config with reboot (no-op CRI
  patch test)
* improve log output in volume tests
* drop locking in vgcreate, as it seems to conflict with background disk
  scans (by Talos or udevd)

Co-authored-by: Noel Georgi <git@frezbo.dev>
Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-09-10 14:34:06 +04:00
Andrey Smirnov
2b556cd22a
feat: implement multi-doc StaticHostConfig
Fixes #10953

This the very first migrated document. I picked up a very simple
configuration document to build some initial idea how we handle
migration of the config documents to the new format.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-09-08 14:38:18 +04:00
Noel Georgi
895133de99
feat: support configuring PCR states to bind disk encryption
See 4b840414be for more information.

Talos versions prior to 1.12 locked to PCR 7 state and PCR 11 for signed policies.

In-order for backwards compatibility newer installs will still default to PCR 7 state. Locking to PCR 7 can be disabled by passing an empty list.

Fixes: #10677

Signed-off-by: Noel Georgi <git@frezbo.dev>
2025-09-05 20:08:01 +05:30
Andrey Smirnov
6a389cad35
chore: update dependencies
Update Go modules, some test dependencies, bump tools, etc.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-09-02 14:14:53 +04:00
Andrey Smirnov
072f77b162
chore: prepare for future Talos 1.12-alpha.0 release
Update config stability tests, trim release notes,
bump versions in upgrade tests.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-09-01 18:58:51 +04:00
Andrey Smirnov
c079119337
chore: refactor how tools are being installed
Move stuff into `tools/go.mod`.

Also fix linting issues on the way (updating golangci-lint).

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-08-14 17:45:39 +04:00
Andrey Smirnov
2dce8f8d46
refactor: replace containerd/containerd/v2 module for proper DCE
Upstream PR: https://github.com/containerd/containerd/pull/12175

See https://github.com/siderolabs/talos/issues/11296

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-08-06 16:28:11 +04:00
Andrey Smirnov
ada51ff696
fix: unmarshal encryption STATE from META
When upgrading from pre-1.11 versions of Talos, there was a failure on
mismatch to unmarshal "old" encryption config into new structure.

Fix that by providing a proper fallback.

Add both unit-test verifying compatibility, as well as
a full integration upgrade test with encrypted disks.

Fixes #11502

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-08-05 18:14:10 +04:00
Andrey Smirnov
a5f3000f2e
feat: implement encryption locking to STATE
Fixes #10676

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-08-01 18:24:56 +04:00
Andrey Smirnov
c1e65a3425
docs: remove talos API flags from mgmt commands
Move them to be present only for `talos` subtree commands.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-08-01 16:39:57 +04:00
Andrey Smirnov
3751c8ccfa
test: wait for service account test job longer
It seems we hit the 30s timeout with network chaos tests.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-07-28 20:06:03 +04:00
Andrey Smirnov
5f442159b2
feat: unify disk encryption configuration
Deprecate/hide old v1alpha1 disk encryption config, and move to
unified approach via `VolumeConfig` resource.

Allow only encryption configuration for `STATE` (for now).

Fixes #10749

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-07-24 19:08:48 +04:00