Fix command generation

- refactored service creation
- add the command field in deployment
This commit is contained in:
2022-03-28 11:00:20 +02:00
parent a13c8d0371
commit 394c3da7b8
2 changed files with 14 additions and 20 deletions

View File

@@ -36,4 +36,5 @@ type Service struct {
EnvFiles []string `yaml:"env_file"`
RawBuild interface{} `yaml:"build"`
HealthCheck *HealthCheck `yaml:"healthcheck"`
Command []string `yaml:"command"`
}

View File

@@ -68,20 +68,7 @@ func parseService(name string, s *compose.Service, linked map[string]*compose.Se
o := helm.NewDeployment(name)
container := helm.NewContainer(name, s.Image, s.Environment, s.Labels)
// prepare cm and secrets
prepareEnvFromFiles(name, s, container, ret)
// check the image, and make it "variable" in values.yaml
container.Image = "{{ .Values." + name + ".image }}"
Values[name] = map[string]interface{}{
"image": s.Image,
}
// manage the healthcheck property, if any
prepareProbes(name, s, container)
// manage ports
generateContainerPorts(s, name, container)
prepareContainer(container, s, name)
// Set the container to the deployment
o.Spec.Template.Spec.Containers = []*helm.Container{container}
@@ -103,12 +90,7 @@ func parseService(name string, s *compose.Service, linked map[string]*compose.Se
// Now, the linked services
for lname, link := range linked {
container := helm.NewContainer(lname, link.Image, link.Environment, link.Labels)
container.Image = "{{ .Values." + lname + ".image }}"
Values[lname] = map[string]interface{}{
"image": link.Image,
}
prepareProbes(lname, link, container)
generateContainerPorts(link, lname, container)
prepareContainer(container, link, lname)
o.Spec.Template.Spec.Containers = append(o.Spec.Template.Spec.Containers, container)
o.Spec.Template.Spec.Volumes = append(o.Spec.Template.Spec.Volumes, prepareVolumes(name, lname, link, container, madePVC, ret)...)
o.Spec.Template.Spec.InitContainers = append(o.Spec.Template.Spec.InitContainers, prepareInitContainers(lname, link, container)...)
@@ -174,6 +156,17 @@ func parseService(name string, s *compose.Service, linked map[string]*compose.Se
ret <- nil
}
// prepareContainer assigns image, command, env, and labels to a container.
func prepareContainer(container *helm.Container, service *compose.Service, servicename string) {
container.Image = "{{ .Values." + servicename + ".image }}"
container.Command = service.Command
Values[servicename] = map[string]interface{}{
"image": service.Image,
}
prepareProbes(servicename, service, container)
generateContainerPorts(service, servicename, container)
}
// Create a service (k8s).
func generateServicesAndIngresses(name string, s *compose.Service) []interface{} {