Use containerD WithHostDevices
Signed-off-by: bpopovschi <zyqsempai@mail.ru>
This commit is contained in:
parent
0881caa9bd
commit
5d7bd738e4
@ -277,42 +277,6 @@ func ensureSharedOrSlave(path string, lookupMount func(string) (mount.Info, erro
|
|||||||
return errors.Errorf("path %q is mounted on %q but it is not a shared or slave mount", path, mountInfo.Mountpoint)
|
return errors.Errorf("path %q is mounted on %q but it is not a shared or slave mount", path, mountInfo.Mountpoint)
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithPrivilegedDevices allows all host devices inside the container
|
|
||||||
func WithPrivilegedDevices(_ context.Context, _ oci.Client, _ *containers.Container, s *runtimespec.Spec) error {
|
|
||||||
if s.Linux == nil {
|
|
||||||
s.Linux = &runtimespec.Linux{}
|
|
||||||
}
|
|
||||||
if s.Linux.Resources == nil {
|
|
||||||
s.Linux.Resources = &runtimespec.LinuxResources{}
|
|
||||||
}
|
|
||||||
hostDevices, err := devices.HostDevices()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
for _, hostDevice := range hostDevices {
|
|
||||||
rd := runtimespec.LinuxDevice{
|
|
||||||
Path: hostDevice.Path,
|
|
||||||
Type: string(hostDevice.Type),
|
|
||||||
Major: hostDevice.Major,
|
|
||||||
Minor: hostDevice.Minor,
|
|
||||||
UID: &hostDevice.Uid,
|
|
||||||
GID: &hostDevice.Gid,
|
|
||||||
}
|
|
||||||
if hostDevice.Major == 0 && hostDevice.Minor == 0 {
|
|
||||||
// Invalid device, most likely a symbolic link, skip it.
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
addDevice(s, rd)
|
|
||||||
}
|
|
||||||
s.Linux.Resources.Devices = []runtimespec.LinuxDeviceCgroup{
|
|
||||||
{
|
|
||||||
Allow: true,
|
|
||||||
Access: "rwm",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func addDevice(s *runtimespec.Spec, rd runtimespec.LinuxDevice) {
|
func addDevice(s *runtimespec.Spec, rd runtimespec.LinuxDevice) {
|
||||||
for i, dev := range s.Linux.Devices {
|
for i, dev := range s.Linux.Devices {
|
||||||
if dev.Path == rd.Path {
|
if dev.Path == rd.Path {
|
||||||
|
@ -170,7 +170,7 @@ func (c *criService) containerSpec(id string, sandboxID string, sandboxPid uint3
|
|||||||
}
|
}
|
||||||
specOpts = append(specOpts, oci.WithPrivileged)
|
specOpts = append(specOpts, oci.WithPrivileged)
|
||||||
if !ociRuntime.PrivilegedWithoutHostDevices {
|
if !ociRuntime.PrivilegedWithoutHostDevices {
|
||||||
specOpts = append(specOpts, customopts.WithPrivilegedDevices)
|
specOpts = append(specOpts, oci.WithHostDevices)
|
||||||
}
|
}
|
||||||
} else { // not privileged
|
} else { // not privileged
|
||||||
specOpts = append(specOpts, customopts.WithDevices(c.os, config), customopts.WithCapabilities(securityContext))
|
specOpts = append(specOpts, customopts.WithDevices(c.os, config), customopts.WithCapabilities(securityContext))
|
||||||
|
Loading…
Reference in New Issue
Block a user