in controllers/gitserver/create_event_listener.go [132:215]
func (h *CreateEventListener) createIngress(ctx context.Context, gitServer *codebaseApi.GitServer) error {
log := ctrl.LoggerFrom(ctx)
log.Info("Creating Ingress for EventListener")
pathType := networkingv1.PathTypePrefix
name := GenerateIngressName(gitServer.Name)
err := h.k8sClient.Get(ctx, client.ObjectKey{
Namespace: gitServer.Namespace,
Name: name,
}, &networkingv1.Ingress{})
if err == nil {
log.Info("Ingress already exists", "Ingress", name)
return nil
}
if client.IgnoreNotFound(err) != nil {
return fmt.Errorf("failed to get Ingress: %w", err)
}
edpConf, err := platform.GetEdpConfig(ctx, h.k8sClient, gitServer.Namespace)
if err != nil {
return fmt.Errorf("failed to get dnsWildcard: %w", err)
}
// This port is hardcoded in Tekton Triggers.
//https://github.com/tektoncd/triggers/blob/v0.27.0/pkg/reconciler/eventlistener/resources/service.go#L37
const elServicePort = 8080
ingress := &networkingv1.Ingress{
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: gitServer.Namespace,
Labels: map[string]string{
"app.edp.epam.com/gitServer": gitServer.Name,
},
},
Spec: networkingv1.IngressSpec{
Rules: []networkingv1.IngressRule{
{
Host: fmt.Sprintf(
"el-%s-%s.%s",
gitServer.Name,
gitServer.Namespace,
edpConf.DnsWildcard,
),
IngressRuleValue: networkingv1.IngressRuleValue{
HTTP: &networkingv1.HTTPIngressRuleValue{
Paths: []networkingv1.HTTPIngressPath{
{
Path: "/",
PathType: &pathType,
Backend: networkingv1.IngressBackend{
Service: &networkingv1.IngressServiceBackend{
Name: generateServiceName(gitServer.Name),
Port: networkingv1.ServiceBackendPort{
Number: elServicePort,
},
},
},
},
},
},
},
},
},
},
}
if err = controllerutil.SetControllerReference(gitServer, ingress, h.k8sClient.Scheme()); err != nil {
return fmt.Errorf("failed to set controller reference for Ingress: %w", err)
}
if err = h.k8sClient.Create(ctx, ingress); err != nil {
return fmt.Errorf("failed to create Ingress: %w", err)
}
log.Info("Ingress has been created", "Ingress", ingress.Name)
return nil
}