61 lines
1.4 KiB
Go
61 lines
1.4 KiB
Go
package ingress
|
|
|
|
import networkingv1 "k8s.io/api/networking/v1"
|
|
|
|
func buildIngress(opts ...func(*networkingv1.Ingress)) *networkingv1.Ingress {
|
|
i := &networkingv1.Ingress{}
|
|
i.Kind = "Ingress"
|
|
for _, opt := range opts {
|
|
opt(i)
|
|
}
|
|
return i
|
|
}
|
|
|
|
func iNamespace(value string) func(*networkingv1.Ingress) {
|
|
return func(i *networkingv1.Ingress) {
|
|
i.Namespace = value
|
|
}
|
|
}
|
|
|
|
func iRules(opts ...func(*networkingv1.IngressSpec)) func(*networkingv1.Ingress) {
|
|
return func(i *networkingv1.Ingress) {
|
|
s := &networkingv1.IngressSpec{}
|
|
for _, opt := range opts {
|
|
opt(s)
|
|
}
|
|
i.Spec = *s
|
|
}
|
|
}
|
|
|
|
func iRule(opts ...func(*networkingv1.IngressRule)) func(*networkingv1.IngressSpec) {
|
|
return func(spec *networkingv1.IngressSpec) {
|
|
r := &networkingv1.IngressRule{}
|
|
for _, opt := range opts {
|
|
opt(r)
|
|
}
|
|
spec.Rules = append(spec.Rules, *r)
|
|
}
|
|
}
|
|
|
|
func iHost(name string) func(*networkingv1.IngressRule) {
|
|
return func(rule *networkingv1.IngressRule) {
|
|
rule.Host = name
|
|
}
|
|
}
|
|
|
|
func iTLSes(opts ...func(*networkingv1.IngressTLS)) func(*networkingv1.Ingress) {
|
|
return func(i *networkingv1.Ingress) {
|
|
for _, opt := range opts {
|
|
iTLS := networkingv1.IngressTLS{}
|
|
opt(&iTLS)
|
|
i.Spec.TLS = append(i.Spec.TLS, iTLS)
|
|
}
|
|
}
|
|
}
|
|
|
|
func iTLS(secret string, hosts ...string) func(*networkingv1.IngressTLS) {
|
|
return func(i *networkingv1.IngressTLS) {
|
|
i.SecretName = secret
|
|
i.Hosts = hosts
|
|
}
|
|
}
|