Add support for init containers and mounting secrets

This commit is contained in:
2025-12-01 16:16:16 +05:30
parent 386e2b9ec3
commit 1ff8edfaf0
7 changed files with 223 additions and 28 deletions
+17 -5
View File
@@ -839,12 +839,14 @@ func handleVolume(komposeObject *kobject.KomposeObject, volumes *types.Volumes)
errors.Wrap(err, "could not retrieve vvolume")
}
for volName, vol := range vols {
size, selector := getVolumeLabels(vol.VolumeName, volumes)
if len(size) > 0 || len(selector) > 0 {
size, selector, volumeType, secretName := getVolumeLabels(vol.VolumeName, volumes)
if len(size) > 0 || len(selector) > 0 || len(volumeType) > 0 || len(secretName) > 0 {
// We can't assign value to struct field in map while iterating over it, so temporary variable `temp` is used here
var temp = vols[volName]
temp.PVCSize = size
temp.SelectorValue = selector
temp.VolumeType = volumeType
temp.SecretName = secretName
vols[volName] = temp
}
}
@@ -949,20 +951,30 @@ func getVol(toFind kobject.Volumes, Vols []kobject.Volumes) (bool, kobject.Volum
return false, kobject.Volumes{}
}
func getVolumeLabels(name string, volumes *types.Volumes) (string, string) {
size, selector := "", ""
func getVolumeLabels(name string, volumes *types.Volumes) (string, string, string, string) {
size, selector, volumeType, secretName := "", "", "", ""
if volume, ok := (*volumes)[name]; ok {
log.Debugf("Getting labels for volume %s, labels: %v", name, volume.Labels)
for key, value := range volume.Labels {
if key == "kompose.volume.size" {
size = value
} else if key == "kompose.volume.selector" {
selector = value
} else if key == "kompose.volume.type" {
volumeType = value
} else if key == "kompose.volume.secret-name" {
secretName = value
}
}
if volumeType != "" {
log.Infof("Volume %s has type %s, secret name: %s", name, volumeType, secretName)
}
} else {
log.Debugf("Volume %s not found in volumes map", name)
}
return size, selector
return size, selector, volumeType, secretName
}
// getGroupAdd will return group in int64 format
+6
View File
@@ -94,6 +94,12 @@ const (
LabelInitContainerImage = "kompose.init.containers.image"
// LabelInitContainerCommand defines commands
LabelInitContainerCommand = "kompose.init.containers.command"
// LabelInitContainerService defines service(s) to use as init containers (comma-separated)
LabelInitContainerService = "kompose.init.containers.service"
// LabelVolumeType defines the type of volume (e.g., "secret" for Kubernetes Secret volumes)
LabelVolumeType = "kompose.volume.type"
// LabelVolumeSecretName defines the name of the Kubernetes Secret to use
LabelVolumeSecretName = "kompose.volume.secret-name"
// LabelHpaMinReplicas defines min pod replicas
LabelHpaMinReplicas = "kompose.hpa.replicas.min"
// LabelHpaMaxReplicas defines max pod replicas