in pkg/transformer/kubernetes/kubernetes.go [462:529]
func (k *Kubernetes) initIngress(name string, service kobject.ServiceConfig, port int32) *networkingv1.Ingress {
hosts := regexp.MustCompile("[ ,]*,[ ,]*").Split(service.ExposeService, -1)
ingress := &networkingv1.Ingress{
TypeMeta: metav1.TypeMeta{
Kind: "Ingress",
APIVersion: "networking.k8s.io/v1",
},
ObjectMeta: metav1.ObjectMeta{
Name: name,
Labels: transformer.ConfigLabels(name),
Annotations: transformer.ConfigAnnotations(service),
},
Spec: networkingv1.IngressSpec{
Rules: make([]networkingv1.IngressRule, len(hosts)),
},
}
tlsHosts := make([]string, len(hosts))
pathType := networkingv1.PathTypePrefix
for i, host := range hosts {
host, p := transformer.ParseIngressPath(host)
if p == "" {
p = "/"
}
ingress.Spec.Rules[i] = networkingv1.IngressRule{
IngressRuleValue: networkingv1.IngressRuleValue{
HTTP: &networkingv1.HTTPIngressRuleValue{
Paths: []networkingv1.HTTPIngressPath{
{
Path: p,
PathType: &pathType,
Backend: networkingv1.IngressBackend{
Service: &networkingv1.IngressServiceBackend{
Name: name,
Port: networkingv1.ServiceBackendPort{
Number: port,
},
},
},
},
},
},
},
}
if host != "true" {
ingress.Spec.Rules[i].Host = host
tlsHosts[i] = host
}
}
if service.ExposeServiceTLS != "" {
if service.ExposeServiceTLS != "true" {
ingress.Spec.TLS = []networkingv1.IngressTLS{
{
Hosts: tlsHosts,
SecretName: service.ExposeServiceTLS,
},
}
} else {
ingress.Spec.TLS = []networkingv1.IngressTLS{
{
Hosts: tlsHosts,
},
}
}
}
return ingress
}