@@ -181,6 +181,22 @@ func Ingress(env *config.ResolvedEnvironment, _ interpolate.Tokens) (string, err
|
||||
b.WriteString(" nginx.ingress.kubernetes.io/auth-realm: \"Authentication Required\"\n")
|
||||
}
|
||||
|
||||
// external-dns annotations: collect all hostnames that need DNS records.
|
||||
if !env.SkipDNS {
|
||||
var dnsHosts []string
|
||||
for _, h := range env.Ingress.Hosts {
|
||||
if h.DNSRecord {
|
||||
dnsHosts = append(dnsHosts, h.Hostname)
|
||||
}
|
||||
}
|
||||
if len(dnsHosts) > 0 {
|
||||
fmt.Fprintf(&b, " external-dns.alpha.kubernetes.io/hostname: \"%s\"\n", strings.Join(dnsHosts, ","))
|
||||
if env.DNSTarget != "" {
|
||||
fmt.Fprintf(&b, " external-dns.alpha.kubernetes.io/target: \"%s\"\n", env.DNSTarget)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
b.WriteString("spec:\n")
|
||||
fmt.Fprintf(&b, " ingressClassName: %s\n", env.IngressClass)
|
||||
|
||||
@@ -405,6 +421,26 @@ func renderStrSlice(ss []string) string {
|
||||
return "[" + strings.Join(quoted, ", ") + "]"
|
||||
}
|
||||
|
||||
// Namespace generates a Namespace manifest. Used for preview
|
||||
// environments where the namespace must be created by kubectl apply.
|
||||
func Namespace(namespace string, labels map[string]string) string {
|
||||
var b strings.Builder
|
||||
b.WriteString("apiVersion: v1\nkind: Namespace\nmetadata:\n")
|
||||
fmt.Fprintf(&b, " name: %s\n", namespace)
|
||||
if len(labels) > 0 {
|
||||
b.WriteString(" labels:\n")
|
||||
// Stable key order.
|
||||
keys := make([]string, 0, len(labels))
|
||||
for k := range labels {
|
||||
keys = append(keys, k)
|
||||
}
|
||||
for _, k := range keys {
|
||||
fmt.Fprintf(&b, " %s: %q\n", k, labels[k])
|
||||
}
|
||||
}
|
||||
return b.String()
|
||||
}
|
||||
|
||||
// render executes a template with data and returns the result.
|
||||
func render(t *template.Template, data any) (string, error) {
|
||||
var buf bytes.Buffer
|
||||
|
||||
Reference in New Issue
Block a user