in pkg/transformer/kubernetes/kubernetes.go [131:195]
func (k *Kubernetes) InitPodSpecWithConfigMap(name string, image string, service kobject.ServiceConfig) api.PodSpec {
var volumeMounts []api.VolumeMount
var volumes []api.Volume
for _, value := range service.Configs {
cmVolName := FormatFileName(value.Source)
target := value.Target
if target == "" {
// short syntax, = /<source>
target = "/" + value.Source
}
subPath := filepath.Base(target)
volSource := api.ConfigMapVolumeSource{}
volSource.Name = cmVolName
key, err := service.GetConfigMapKeyFromMeta(value.Source)
if err != nil {
log.Warnf("cannot parse config %s , %s", value.Source, err.Error())
// mostly it's external
continue
}
volSource.Items = []api.KeyToPath{{
Key: key,
Path: subPath,
}}
if value.Mode != nil {
tmpMode := int32(*value.Mode)
volSource.DefaultMode = &tmpMode
}
cmVol := api.Volume{
Name: cmVolName,
VolumeSource: api.VolumeSource{ConfigMap: &volSource},
}
volumeMounts = append(volumeMounts,
api.VolumeMount{
Name: cmVolName,
MountPath: target,
SubPath: subPath,
})
volumes = append(volumes, cmVol)
}
pod := api.PodSpec{
Containers: []api.Container{
{
Name: name,
Image: image,
VolumeMounts: volumeMounts,
},
},
Volumes: volumes,
}
if service.ImagePullSecret != "" {
pod.ImagePullSecrets = []api.LocalObjectReference{
{
Name: service.ImagePullSecret,
},
}
}
return pod
}