diff --git a/generator/deployment.go b/generator/deployment.go index 394ed46..eff2b84 100644 --- a/generator/deployment.go +++ b/generator/deployment.go @@ -91,11 +91,15 @@ func NewDeployment(service types.ServiceConfig, chart *HelmChart) *Deployment { } // DependsOn adds a initContainer to the deployment that will wait for the service to be up. -func (d *Deployment) DependsOn(to *Deployment) error { +func (d *Deployment) DependsOn(to *Deployment, servicename string) error { // Add a initContainer with busybox:latest using netcat to check if the service is up // it will wait until the service responds to all ports for _, container := range to.Spec.Template.Spec.Containers { commands := []string{} + if len(container.Ports) == 0 { + utils.Warn("No ports found for service ", servicename, ". You should declare a port in the service or use "+LABEL_PORTS+" label.") + os.Exit(1) + } for _, port := range container.Ports { command := fmt.Sprintf("until nc -z %s %d; do\n sleep 1;\ndone", to.Name, port.ContainerPort) commands = append(commands, command) diff --git a/generator/generator.go b/generator/generator.go index 869f9a8..c646d31 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -148,7 +148,7 @@ func Generate(project *types.Project) (*HelmChart, error) { for _, s := range project.Services { for _, d := range s.GetDependencies() { if dep, ok := deployments[d]; ok { - deployments[s.Name].DependsOn(dep) + deployments[s.Name].DependsOn(dep, d) } else { log.Printf("service %[1]s depends on %[2]s, but %[2]s is not defined", s.Name, d) }