github.com/interconnectedcloud/qdr-operator@v0.0.0-20210826174505-576d2b33dac7/pkg/resources/routes/route.go (about)

     1  package routes
     2  
     3  import (
     4  	"strconv"
     5  
     6  	v1alpha1 "github.com/interconnectedcloud/qdr-operator/pkg/apis/interconnectedcloud/v1alpha1"
     7  	"github.com/interconnectedcloud/qdr-operator/pkg/utils/selectors"
     8  	routev1 "github.com/openshift/api/route/v1"
     9  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    10  	"k8s.io/apimachinery/pkg/util/intstr"
    11  )
    12  
    13  // Create newRouteForCR method to create exposed route
    14  func NewRouteForCR(m *v1alpha1.Interconnect, listener v1alpha1.Listener) *routev1.Route {
    15  	target := listener.Name
    16  	if target == "" {
    17  		target = strconv.Itoa(int(listener.Port))
    18  	}
    19  	labels := selectors.LabelsForInterconnect(m.Name)
    20  	route := &routev1.Route{
    21  		TypeMeta: metav1.TypeMeta{
    22  			APIVersion: "v1",
    23  			Kind:       "Route",
    24  		},
    25  		ObjectMeta: metav1.ObjectMeta{
    26  			Labels:    labels,
    27  			Name:      m.Name + "-" + target,
    28  			Namespace: m.Namespace,
    29  		},
    30  		Spec: routev1.RouteSpec{
    31  			Path: "",
    32  			Port: &routev1.RoutePort{
    33  				TargetPort: intstr.FromInt(int(listener.Port)),
    34  			},
    35  			To: routev1.RouteTargetReference{
    36  				Kind: "Service",
    37  				Name: m.Name,
    38  			},
    39  		},
    40  	}
    41  	if listener.SslProfile != "" {
    42  		route.Spec.TLS = &routev1.TLSConfig{
    43  			Termination:                   routev1.TLSTerminationPassthrough,
    44  			InsecureEdgeTerminationPolicy: routev1.InsecureEdgeTerminationPolicyNone,
    45  		}
    46  	} else {
    47  		route.Spec.TLS = &routev1.TLSConfig{
    48  			Termination:                   routev1.TLSTerminationEdge,
    49  			InsecureEdgeTerminationPolicy: routev1.InsecureEdgeTerminationPolicyRedirect,
    50  		}
    51  	}
    52  	return route
    53  }