Skip to content

Commit 9737a6d

Browse files
Document containerdRuntimeOptions in example and add test
Signed-off-by: Kate Goldenring <[email protected]>
1 parent a42cbdd commit 9737a6d

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

config/samples/test_shim_spin.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@ spec:
1717
anonHttp:
1818
location: "https://github.com/spinframework/containerd-shim-spin/releases/download/v0.19.0/containerd-shim-spin-v2-linux-aarch64.tar.gz"
1919

20+
# Each runtime can provide a set of containerd runtime options to be set in the containerd
21+
# configuration file.
2022
containerdRuntimeOptions:
23+
# The following option to pass cgroup driver information is available to runwasi based runtimes.
24+
# For runwasi, the default cgroup driver is cgroupfs. Failure to configure the correct cgroup
25+
# driver for runwasi shims may result in pod metrics failing to propagate accurately.
2126
SystemdCgroup: "true"
2227

2328
runtimeClass:

internal/containerd/configure_test.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,49 @@ runtime_type = "/opt/rcm/bin/containerd-shim-spin-v1"
118118
}
119119
}
120120

121+
func TestConfig_AddRuntimeOptions(t *testing.T) {
122+
wantFileContent := `[plugins]
123+
[plugins."io.containerd.monitor.v1.cgroups"]
124+
no_prometheus = false
125+
[plugins."io.containerd.service.v1.diff-service"]
126+
default = ["walking"]
127+
[plugins."io.containerd.gc.v1.scheduler"]
128+
pause_threshold = 0.02
129+
deletion_threshold = 0
130+
mutation_threshold = 100
131+
schedule_delay = 0
132+
startup_delay = "100ms"
133+
[plugins."io.containerd.runtime.v2.task"]
134+
platforms = ["linux/amd64"]
135+
sched_core = true
136+
[plugins."io.containerd.service.v1.tasks-service"]
137+
blockio_config_file = ""
138+
rdt_config_file = ""
139+
140+
# RCM runtime config for spin-v1
141+
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.spin-v1]
142+
runtime_type = "/opt/rcm/bin/containerd-shim-spin-v1"
143+
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.spin-v1.options]
144+
SystemdCgroup = true`
145+
t.Run("plugin options added", func(t *testing.T) {
146+
c := &Config{
147+
hostFs: tests.FixtureFs("../../testdata/node-installer/containerd/missing-containerd-shim-config"),
148+
configPath: "/etc/containerd/config.toml",
149+
runtimeOptions: map[string]string{
150+
"SystemdCgroup": "true",
151+
},
152+
}
153+
err := c.AddRuntime("/opt/rcm/bin/containerd-shim-spin-v1")
154+
155+
require.NoError(t, err)
156+
157+
gotContent, err := afero.ReadFile(c.hostFs, c.configPath)
158+
require.NoError(t, err)
159+
160+
assert.Equal(t, wantFileContent, string(gotContent))
161+
})
162+
}
163+
121164
func TestConfig_RemoveRuntime(t *testing.T) {
122165
type fields struct {
123166
hostFs afero.Fs

0 commit comments

Comments
 (0)