Merge pull request #21524 from andremarianiello/memory-emptydir

Use tmpfs mounts when creating a memory-backed emptyDir volume
This commit is contained in:
openshift-merge-bot[bot]
2024-02-07 06:46:27 +00:00
committed by GitHub
3 changed files with 43 additions and 1 deletions

View File

@ -554,6 +554,13 @@ func ToSpecGen(ctx context.Context, opts *CtrSpecGenOptions) (*specgen.SpecGener
SubPath: volume.SubPath, SubPath: volume.SubPath,
} }
s.Volumes = append(s.Volumes, &emptyDirVolume) s.Volumes = append(s.Volumes, &emptyDirVolume)
case KubeVolumeTypeEmptyDirTmpfs:
memVolume := spec.Mount{
Destination: volume.MountPath,
Type: define.TypeTmpfs,
Source: define.TypeTmpfs,
}
s.Mounts = append(s.Mounts, memVolume)
default: default:
return nil, errors.New("unsupported volume source type") return nil, errors.New("unsupported volume source type")
} }

View File

@ -34,6 +34,7 @@ const (
KubeVolumeTypeCharDevice KubeVolumeTypeCharDevice
KubeVolumeTypeSecret KubeVolumeTypeSecret
KubeVolumeTypeEmptyDir KubeVolumeTypeEmptyDir
KubeVolumeTypeEmptyDirTmpfs
) )
//nolint:revive //nolint:revive
@ -263,7 +264,17 @@ func VolumeFromConfigMap(configMapVolumeSource *v1.ConfigMapVolumeSource, config
// Create a kubeVolume for an emptyDir volume // Create a kubeVolume for an emptyDir volume
func VolumeFromEmptyDir(emptyDirVolumeSource *v1.EmptyDirVolumeSource, name string) (*KubeVolume, error) { func VolumeFromEmptyDir(emptyDirVolumeSource *v1.EmptyDirVolumeSource, name string) (*KubeVolume, error) {
return &KubeVolume{Type: KubeVolumeTypeEmptyDir, Source: name}, nil if emptyDirVolumeSource.Medium == v1.StorageMediumMemory {
return &KubeVolume{
Type: KubeVolumeTypeEmptyDirTmpfs,
Source: name,
}, nil
} else {
return &KubeVolume{
Type: KubeVolumeTypeEmptyDir,
Source: name,
}, nil
}
} }
// Create a KubeVolume from one of the supported VolumeSource // Create a KubeVolume from one of the supported VolumeSource

View File

@ -0,0 +1,24 @@
//go:build !remote
package kube
import (
"testing"
v1 "github.com/containers/podman/v4/pkg/k8s.io/api/core/v1"
"github.com/stretchr/testify/assert"
)
func TestVolumeFromEmptyDir(t *testing.T) {
emptyDirSource := v1.EmptyDirVolumeSource{}
emptyDirVol, err := VolumeFromEmptyDir(&emptyDirSource, "emptydir")
assert.NoError(t, err)
assert.Equal(t, emptyDirVol.Type, KubeVolumeTypeEmptyDir)
memEmptyDirSource := v1.EmptyDirVolumeSource{
Medium: v1.StorageMediumMemory,
}
memEmptyDirVol, err := VolumeFromEmptyDir(&memEmptyDirSource, "emptydir")
assert.NoError(t, err)
assert.Equal(t, memEmptyDirVol.Type, KubeVolumeTypeEmptyDirTmpfs)
}