mirror of
https://github.com/containers/podman.git
synced 2025-06-29 06:57:13 +08:00
Add volumes-from support using annotation in kube yaml
The reserved annotation io.podman.annotations.volumes-from is made public to let user define volumes-from to have one container mount volumes of other containers. The annotation format is: io.podman.annotations.volumes-from/tgtCtr: "srcCtr1:mntOpts1;srcCtr2:mntOpts;..." Fixes: containers#16819 Signed-off-by: Vikas Goel <vikas.goel@gmail.com>
This commit is contained in:
@ -53,7 +53,7 @@ func (c *Container) volumesFrom() ([]string, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if ctrs, ok := ctrSpec.Annotations[define.InspectAnnotationVolumesFrom]; ok {
|
||||
if ctrs, ok := ctrSpec.Annotations[define.VolumesFromAnnotation]; ok {
|
||||
return strings.Split(ctrs, ";"), nil
|
||||
}
|
||||
return nil, nil
|
||||
@ -510,7 +510,7 @@ func (c *Container) generateInspectContainerHostConfig(ctrSpec *spec.Spec, named
|
||||
if ctrSpec.Annotations[define.InspectAnnotationAutoremove] == define.InspectResponseTrue {
|
||||
hostConfig.AutoRemove = true
|
||||
}
|
||||
if ctrs, ok := ctrSpec.Annotations[define.InspectAnnotationVolumesFrom]; ok {
|
||||
if ctrs, ok := ctrSpec.Annotations[define.VolumesFromAnnotation]; ok {
|
||||
hostConfig.VolumesFrom = strings.Split(ctrs, ";")
|
||||
}
|
||||
if ctrSpec.Annotations[define.InspectAnnotationPrivileged] == define.InspectResponseTrue {
|
||||
|
@ -18,13 +18,6 @@ const (
|
||||
// the two supported boolean values (InspectResponseTrue and
|
||||
// InspectResponseFalse) it will be used in the output of Inspect().
|
||||
InspectAnnotationAutoremove = "io.podman.annotations.autoremove"
|
||||
// InspectAnnotationVolumesFrom is used by Inspect to identify
|
||||
// containers whose volumes are being used by this container.
|
||||
// It is expected to be a comma-separated list of container names and/or
|
||||
// IDs.
|
||||
// If an annotation with this key is found in the OCI spec, it will be
|
||||
// used in the output of Inspect().
|
||||
InspectAnnotationVolumesFrom = "io.podman.annotations.volumes-from"
|
||||
// InspectAnnotationPrivileged is used by Inspect to identify containers
|
||||
// which are privileged (IE, running with elevated privileges).
|
||||
// It is expected to be a boolean, populated by one of
|
||||
@ -157,6 +150,12 @@ const (
|
||||
// of the container
|
||||
UlimitAnnotation = "io.podman.annotations.ulimit"
|
||||
|
||||
// VolumesFromAnnotation is used by by play kube when playing a kube
|
||||
// yaml to specify volumes-from of the container
|
||||
// It is expected to be a semicolon-separated list of container names and/or
|
||||
// IDs optionally with colon separated mount options.
|
||||
VolumesFromAnnotation = "io.podman.annotations.volumes-from"
|
||||
|
||||
// KubeHealthCheckAnnotation is used by kube play to tell podman that any health checks should follow
|
||||
// the k8s behavior of waiting for the intialDelaySeconds to be over before updating the status
|
||||
KubeHealthCheckAnnotation = "io.podman.annotations.kube.health.check"
|
||||
@ -169,7 +168,7 @@ const (
|
||||
// already reserved annotation that Podman sets during container creation.
|
||||
func IsReservedAnnotation(value string) bool {
|
||||
switch value {
|
||||
case InspectAnnotationCIDFile, InspectAnnotationAutoremove, InspectAnnotationVolumesFrom, InspectAnnotationPrivileged, InspectAnnotationPublishAll, InspectAnnotationInit, InspectAnnotationLabel, InspectAnnotationSeccomp, InspectAnnotationApparmor, InspectResponseTrue, InspectResponseFalse:
|
||||
case InspectAnnotationCIDFile, InspectAnnotationAutoremove, InspectAnnotationPrivileged, InspectAnnotationPublishAll, InspectAnnotationInit, InspectAnnotationLabel, InspectAnnotationSeccomp, InspectAnnotationApparmor, InspectResponseTrue, InspectResponseFalse, VolumesFromAnnotation:
|
||||
return true
|
||||
|
||||
default:
|
||||
|
@ -277,7 +277,7 @@ func (p *Pod) VolumesFrom() []string {
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
if ctrs, ok := infra.config.Spec.Annotations[define.InspectAnnotationVolumesFrom]; ok {
|
||||
if ctrs, ok := infra.config.Spec.Annotations[define.VolumesFromAnnotation]; ok {
|
||||
return strings.Split(ctrs, ";")
|
||||
}
|
||||
return nil
|
||||
|
Reference in New Issue
Block a user