diff --git a/cli/app/app.go b/cli/app/app.go index dc6a0e52..5ffec0e7 100644 --- a/cli/app/app.go +++ b/cli/app/app.go @@ -785,7 +785,8 @@ func loadBundlesFile(file string, opt convertOptions) KomposeObject { serviceConfig := ServiceConfig{} serviceConfig.Command = service.Command serviceConfig.Args = service.Args - serviceConfig.Labels = service.Labels + // convert bundle labels to annotations + serviceConfig.Annotations = service.Labels image, err := loadImage(service) if err != "" { @@ -874,14 +875,8 @@ func loadComposeFile(file string, opt convertOptions) KomposeObject { serviceConfig.WorkingDir = composeServiceConfig.WorkingDir serviceConfig.Volumes = composeServiceConfig.Volumes - // load labels - labels := composeServiceConfig.Labels - if labels != nil { - if err := labels.UnmarshalYAML("", labels); err != nil { - logrus.Fatalf("Failed to load labels from compose file: %v", err) - } - } - serviceConfig.Labels = labels + // convert compose labels to annotations + serviceConfig.Annotations = map[string]string(composeServiceConfig.Labels) serviceConfig.CPUSet = composeServiceConfig.CPUSet serviceConfig.CPUShares = composeServiceConfig.CPUShares @@ -952,12 +947,15 @@ func komposeConvert(komposeObject KomposeObject, opt convertOptions) { servicePorts := configServicePorts(name, service) sc.Spec.Ports = servicePorts - // Configure label + // Configure labels labels := map[string]string{"service": name} - for key, value := range service.Labels { - labels[key] = value - } sc.ObjectMeta.Labels = labels + // Configure annotations + annotations := map[string]string{} + for key, value := range service.Annotations { + annotations[key] = value + } + sc.ObjectMeta.Annotations = annotations // fillTemplate fills the pod template with the value calculated from config fillTemplate := func(template *api.PodTemplateSpec) { @@ -990,6 +988,7 @@ func komposeConvert(komposeObject KomposeObject, opt convertOptions) { // fillObjectMeta fills the metadata with the value calculated from config fillObjectMeta := func(meta *api.ObjectMeta) { meta.Labels = labels + meta.Annotations = annotations } // Update each supported controllers diff --git a/cli/app/types.go b/cli/app/types.go index 0cb023ba..b5fe4176 100644 --- a/cli/app/types.go +++ b/cli/app/types.go @@ -33,6 +33,7 @@ type ServiceConfig struct { Volumes []string Network []string Labels map[string]string + Annotations map[string]string CPUSet string CPUShares int64 CPUQuota int64 diff --git a/examples/docker-voting.yml b/examples/docker-voting.yml index 289b9d24..b008102a 100644 --- a/examples/docker-voting.yml +++ b/examples/docker-voting.yml @@ -4,6 +4,8 @@ services: vote: build: ./vote command: python app.py + labels: + - "com.example.description=Vote" volumes: - ./vote:/app ports: @@ -18,6 +20,8 @@ services: db: image: postgres:9.4 + labels: + - "com.example.description=Postgres Database" result: build: ./result