depends_on with ports, cross-namespace DNS
This commit is contained in:
@@ -306,11 +306,20 @@ func buildEnvVars(sf *schema.Stackfile) []envVar {
|
||||
}
|
||||
|
||||
// depends_on — inject service URLs via k8s DNS.
|
||||
for _, svc := range sf.DependsOn.Services {
|
||||
// Sorted for stable output.
|
||||
svcNames := make([]string, 0, len(sf.DependsOn.Services))
|
||||
for name := range sf.DependsOn.Services {
|
||||
svcNames = append(svcNames, name)
|
||||
}
|
||||
sort.Strings(svcNames)
|
||||
for _, svc := range svcNames {
|
||||
port := sf.DependsOn.Services[svc]
|
||||
envKey := fmt.Sprintf("%s_URL", strings.ToUpper(strings.ReplaceAll(svc, "-", "_")))
|
||||
// Use <service>.<namespace>.svc for cross-namespace discovery.
|
||||
// Convention: namespace = service name (StackOps creates namespace per project).
|
||||
envs = append(envs, envVar{
|
||||
Name: envKey,
|
||||
Value: fmt.Sprintf("http://%s", svc),
|
||||
Value: fmt.Sprintf("http://%s.%s.svc:%d", svc, svc, port),
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -67,8 +67,15 @@ type SecretRef struct {
|
||||
Key string `toml:"key"`
|
||||
}
|
||||
|
||||
// DependsOnConfig maps service names to their ports.
|
||||
// Example: [depends_on.services]
|
||||
//
|
||||
// auth-api = 8080
|
||||
// notification-api = 3000
|
||||
//
|
||||
// Injects: AUTH_API_URL=http://auth-api:8080
|
||||
type DependsOnConfig struct {
|
||||
Services []string `toml:"services"`
|
||||
Services map[string]int `toml:"services"`
|
||||
}
|
||||
|
||||
// EnvOverride holds fields that override the base config for a named environment.
|
||||
|
||||
Reference in New Issue
Block a user