Skip to content

Commit 3038ccf

Browse files
committed
feat: add configuration for EPHEMERAL volume
Fixes #9261 Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
1 parent faffa4c commit 3038ccf

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1614
-80
lines changed

.github/workflows/ci.yaml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT.
22
#
3-
# Generated on 2024-09-03T14:18:03Z by kres b5ca957.
3+
# Generated on 2024-09-05T10:32:02Z by kres b5ca957.
44

55
name: default
66
concurrency:
@@ -2556,6 +2556,10 @@ jobs:
25562556
- name: e2e-qemu
25572557
env:
25582558
IMAGE_REGISTRY: registry.dev.siderolabs.io
2559+
QEMU_EXTRA_DISKS: "2"
2560+
QEMU_EXTRA_DISKS_DRIVERS: ide,nvme
2561+
QEMU_EXTRA_DISKS_SIZE: "10240"
2562+
WITH_CONFIG_PATCH_WORKER: '@hack/test/patches/ephemeral-nvme.yaml'
25592563
run: |
25602564
sudo -E make e2e-qemu
25612565
- name: save artifacts
@@ -2855,6 +2859,10 @@ jobs:
28552859
- name: e2e-qemu
28562860
env:
28572861
IMAGE_REGISTRY: registry.dev.siderolabs.io
2862+
QEMU_EXTRA_DISKS: "2"
2863+
QEMU_EXTRA_DISKS_DRIVERS: ide,nvme
2864+
QEMU_EXTRA_DISKS_SIZE: "10240"
2865+
WITH_CONFIG_PATCH_WORKER: '@hack/test/patches/ephemeral-nvme.yaml'
28582866
WITH_DISK_ENCRYPTION: "true"
28592867
WITH_KUBESPAN: "true"
28602868
WITH_VIRTUAL_IP: "true"

.github/workflows/integration-qemu-cron.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT.
22
#
3-
# Generated on 2024-05-27T16:20:10Z by kres bcb280a.
3+
# Generated on 2024-09-04T16:05:13Z by kres b5ca957.
44

55
name: integration-qemu-cron
66
concurrency:
@@ -77,6 +77,10 @@ jobs:
7777
- name: e2e-qemu
7878
env:
7979
IMAGE_REGISTRY: registry.dev.siderolabs.io
80+
QEMU_EXTRA_DISKS: "2"
81+
QEMU_EXTRA_DISKS_DRIVERS: ide,nvme
82+
QEMU_EXTRA_DISKS_SIZE: "10240"
83+
WITH_CONFIG_PATCH_WORKER: '@hack/test/patches/ephemeral-nvme.yaml'
8084
run: |
8185
sudo -E make e2e-qemu
8286
- name: save artifacts

.github/workflows/integration-qemu-encrypted-vip-cron.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT.
22
#
3-
# Generated on 2024-05-27T16:20:10Z by kres bcb280a.
3+
# Generated on 2024-09-05T10:32:02Z by kres b5ca957.
44

55
name: integration-qemu-encrypted-vip-cron
66
concurrency:
@@ -77,6 +77,10 @@ jobs:
7777
- name: e2e-qemu
7878
env:
7979
IMAGE_REGISTRY: registry.dev.siderolabs.io
80+
QEMU_EXTRA_DISKS: "2"
81+
QEMU_EXTRA_DISKS_DRIVERS: ide,nvme
82+
QEMU_EXTRA_DISKS_SIZE: "10240"
83+
WITH_CONFIG_PATCH_WORKER: '@hack/test/patches/ephemeral-nvme.yaml'
8084
WITH_DISK_ENCRYPTION: "true"
8185
WITH_KUBESPAN: "true"
8286
WITH_VIRTUAL_IP: "true"

.kres.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,10 @@ spec:
325325
withSudo: true
326326
environment:
327327
IMAGE_REGISTRY: registry.dev.siderolabs.io
328+
QEMU_EXTRA_DISKS: "2"
329+
QEMU_EXTRA_DISKS_SIZE: "10240"
330+
QEMU_EXTRA_DISKS_DRIVERS: "ide,nvme"
331+
WITH_CONFIG_PATCH_WORKER: "@hack/test/patches/ephemeral-nvme.yaml"
328332
- name: save-talos-logs
329333
conditions:
330334
- always
@@ -1098,6 +1102,10 @@ spec:
10981102
WITH_VIRTUAL_IP: true
10991103
WITH_KUBESPAN: true
11001104
IMAGE_REGISTRY: registry.dev.siderolabs.io
1105+
QEMU_EXTRA_DISKS: "2"
1106+
QEMU_EXTRA_DISKS_SIZE: "10240"
1107+
QEMU_EXTRA_DISKS_DRIVERS: "ide,nvme"
1108+
WITH_CONFIG_PATCH_WORKER: "@hack/test/patches/ephemeral-nvme.yaml"
11011109
- name: save-talos-logs
11021110
conditions:
11031111
- always

api/resource/definitions/block/block.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,5 +164,6 @@ message VolumeStatusSpec {
164164
talos.resource.definitions.enums.BlockFilesystemType filesystem = 10;
165165
string mount_location = 11;
166166
talos.resource.definitions.enums.BlockEncryptionProviderType encryption_provider = 12;
167+
string pretty_size = 13;
167168
}
168169

cmd/talosctl/cmd/docs.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"gopkg.in/yaml.v3"
2020

2121
"github.com/siderolabs/talos/pkg/machinery/config/encoder"
22+
"github.com/siderolabs/talos/pkg/machinery/config/types/block"
2223
"github.com/siderolabs/talos/pkg/machinery/config/types/network"
2324
"github.com/siderolabs/talos/pkg/machinery/config/types/runtime"
2425
"github.com/siderolabs/talos/pkg/machinery/config/types/runtime/extensions"
@@ -130,6 +131,10 @@ var docsCmd = &cobra.Command{
130131
name: "security",
131132
fileDoc: security.GetFileDoc(),
132133
},
134+
{
135+
name: "block",
136+
fileDoc: block.GetFileDoc(),
137+
},
133138
} {
134139
path := filepath.Join(dir, pkg.name)
135140

hack/release.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,12 @@ This can be also explicitly enabled by setting `talos.halt_if_installed=1` in ke
223223
description = """\
224224
Talos Linux installer now never wipes the system disk on upgrades, which means that the flag
225225
`--preserve` is always set for `talosctl upgrade`.
226+
"""
227+
228+
[notes.disk-management]
229+
title = "Disk Management"
230+
description = """\
231+
Talos Linux now supports [configuration](https://www.talos.dev/v1.8/talos-guides/configuration/disk-management/#machine-configuration) for the `EPHEMERAL` volume.
226232
"""
227233

228234
[make_deps]

hack/test/e2e-qemu.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ function create_cluster {
196196
--disk=15360 \
197197
--extra-disks="${QEMU_EXTRA_DISKS:-0}" \
198198
--extra-disks-size="${QEMU_EXTRA_DISKS_SIZE:-5120}" \
199+
--extra-disks-drivers="${QEMU_EXTRA_DISKS_DRIVERS:-}" \
199200
--mtu=1430 \
200201
--memory=2048 \
201202
--memory-workers="${QEMU_MEMORY_WORKERS:-2048}" \

hack/test/patches/ephemeral-nvme.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1alpha1
2+
kind: VolumeConfig
3+
name: EPHEMERAL
4+
provisioning:
5+
diskSelector:
6+
match: disk.transport == 'nvme'
7+
minSize: 4GB
8+
maxSize: 8GB

internal/app/machined/pkg/controllers/block/discovery.go

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import (
1414
"github.com/cosi-project/runtime/pkg/controller"
1515
"github.com/cosi-project/runtime/pkg/safe"
1616
"github.com/cosi-project/runtime/pkg/state"
17-
"github.com/dustin/go-humanize"
1817
"github.com/siderolabs/gen/maps"
1918
"github.com/siderolabs/go-blockdevice/v2/blkid"
2019
"github.com/siderolabs/go-blockdevice/v2/partitioning"
@@ -208,8 +207,7 @@ func (ctrl *DiscoveryController) rescan(ctx context.Context, r controller.Runtim
208207
dv.TypedSpec().Parent = device.TypedSpec().Parent
209208
dv.TypedSpec().ParentDevPath = filepath.Join("/dev", device.TypedSpec().Parent)
210209

211-
dv.TypedSpec().Size = info.Size
212-
dv.TypedSpec().PrettySize = humanize.Bytes(info.Size)
210+
dv.TypedSpec().SetSize(info.Size)
213211
dv.TypedSpec().SectorSize = info.SectorSize
214212
dv.TypedSpec().IOSize = info.IOSize
215213

@@ -232,14 +230,12 @@ func (ctrl *DiscoveryController) rescan(ctx context.Context, r controller.Runtim
232230
dv.TypedSpec().Parent = id
233231
dv.TypedSpec().ParentDevPath = filepath.Join("/dev", id)
234232

235-
dv.TypedSpec().Size = nested.ProbedSize
236-
237-
if dv.TypedSpec().Size == 0 {
238-
dv.TypedSpec().Size = nested.PartitionSize
233+
if nested.ProbedSize != 0 {
234+
dv.TypedSpec().SetSize(nested.ProbedSize)
235+
} else {
236+
dv.TypedSpec().SetSize(nested.PartitionSize)
239237
}
240238

241-
dv.TypedSpec().PrettySize = humanize.Bytes(dv.TypedSpec().Size)
242-
243239
dv.TypedSpec().SectorSize = info.SectorSize
244240
dv.TypedSpec().IOSize = info.IOSize
245241

0 commit comments

Comments
 (0)