@@ -25,6 +25,7 @@ import (
2525 "time"
2626
2727 "github.com/compose-spec/compose-go/types"
28+ "github.com/docker/compose-cli/api/compose"
2829 apps "k8s.io/api/apps/v1"
2930 core "k8s.io/api/core/v1"
3031 resource "k8s.io/apimachinery/pkg/api/resource"
@@ -34,8 +35,6 @@ import (
3435)
3536
3637const (
37- headlessPort = 55555
38- headlessName = "headless"
3938 clusterIPHeadless = "None"
4039)
4140
@@ -52,13 +51,13 @@ func MapToKubernetesObjects(project *types.Project) (map[string]runtime.Object,
5251 }
5352
5453 if service .Deploy != nil && service .Deploy .Mode == "global" {
55- daemonset , err := mapToDaemonset (project , service , project . Name )
54+ daemonset , err := mapToDaemonset (project , service )
5655 if err != nil {
5756 return nil , err
5857 }
5958 objects [fmt .Sprintf ("%s-daemonset.yaml" , service .Name )] = daemonset
6059 } else {
61- deployment , err := mapToDeployment (project , service , project . Name )
60+ deployment , err := mapToDeployment (project , service )
6261 if err != nil {
6362 return nil , err
6463 }
@@ -67,7 +66,7 @@ func MapToKubernetesObjects(project *types.Project) (map[string]runtime.Object,
6766 for _ , vol := range service .Volumes {
6867 if vol .Type == "volume" {
6968 vol .Source = strings .ReplaceAll (vol .Source , "_" , "-" )
70- objects [fmt .Sprintf ("%s-persistentvolumeclaim.yaml" , vol .Source )] = mapToPVC (service , vol )
69+ objects [fmt .Sprintf ("%s-persistentvolumeclaim.yaml" , vol .Source )] = mapToPVC (project , service , vol )
7170 }
7271 }
7372 }
@@ -92,12 +91,6 @@ func mapToService(project *types.Project, service types.ServiceConfig) *core.Ser
9291 }
9392 if len (ports ) == 0 { // headless service
9493 clusterIP = clusterIPHeadless
95- ports = append (ports , core.ServicePort {
96- Name : headlessName ,
97- Port : headlessPort ,
98- TargetPort : intstr .FromInt (headlessPort ),
99- Protocol : core .ProtocolTCP ,
100- })
10194 }
10295 return & core.Service {
10396 TypeMeta : meta.TypeMeta {
@@ -109,27 +102,24 @@ func mapToService(project *types.Project, service types.ServiceConfig) *core.Ser
109102 },
110103 Spec : core.ServiceSpec {
111104 ClusterIP : clusterIP ,
112- Selector : map [ string ] string { "com.docker.compose.service" : service .Name } ,
105+ Selector : selectorLabels ( project . Name , service .Name ) ,
113106 Ports : ports ,
114107 Type : serviceType ,
115108 },
116109 }
117110}
118111
119- func mapToDeployment (project * types.Project , service types.ServiceConfig , name string ) (* apps.Deployment , error ) {
120- labels := map [string ]string {
121- "com.docker.compose.service" : service .Name ,
122- "com.docker.compose.project" : name ,
123- }
124- podTemplate , err := toPodTemplate (project , service , labels )
125- if err != nil {
126- return nil , err
127- }
112+ func mapToDeployment (project * types.Project , service types.ServiceConfig ) (* apps.Deployment , error ) {
113+ labels := selectorLabels (project .Name , service .Name )
128114 selector := new (meta.LabelSelector )
129115 selector .MatchLabels = make (map [string ]string )
130116 for key , val := range labels {
131117 selector .MatchLabels [key ] = val
132118 }
119+ podTemplate , err := toPodTemplate (project , service , labels )
120+ if err != nil {
121+ return nil , err
122+ }
133123 return & apps.Deployment {
134124 TypeMeta : meta.TypeMeta {
135125 Kind : "Deployment" ,
@@ -148,11 +138,15 @@ func mapToDeployment(project *types.Project, service types.ServiceConfig, name s
148138 }, nil
149139}
150140
151- func mapToDaemonset ( project * types. Project , service types. ServiceConfig , name string ) ( * apps. DaemonSet , error ) {
152- labels := map [string ]string {
153- "com.docker. compose.service" : service . Name ,
154- "com.docker. compose.project" : name ,
141+ func selectorLabels ( projectName string , serviceName string ) map [ string ] string {
142+ return map [string ]string {
143+ compose .ProjectTag : projectName ,
144+ compose .ServiceTag : serviceName ,
155145 }
146+ }
147+
148+ func mapToDaemonset (project * types.Project , service types.ServiceConfig ) (* apps.DaemonSet , error ) {
149+ labels := selectorLabels (project .Name , service .Name )
156150 podTemplate , err := toPodTemplate (project , service , labels )
157151 if err != nil {
158152 return nil , err
@@ -195,7 +189,7 @@ func toDeploymentStrategy(deploy *types.DeployConfig) apps.DeploymentStrategy {
195189 }
196190}
197191
198- func mapToPVC (service types.ServiceConfig , vol types.ServiceVolumeConfig ) runtime.Object {
192+ func mapToPVC (project * types. Project , service types.ServiceConfig , vol types.ServiceVolumeConfig ) runtime.Object {
199193 rwaccess := core .ReadWriteOnce
200194 if vol .ReadOnly {
201195 rwaccess = core .ReadOnlyMany
@@ -207,7 +201,7 @@ func mapToPVC(service types.ServiceConfig, vol types.ServiceVolumeConfig) runtim
207201 },
208202 ObjectMeta : meta.ObjectMeta {
209203 Name : vol .Source ,
210- Labels : map [ string ] string { "com.docker.compose.service" : service .Name } ,
204+ Labels : selectorLabels ( project . Name , service .Name ) ,
211205 },
212206 Spec : core.PersistentVolumeClaimSpec {
213207 VolumeName : vol .Source ,
0 commit comments