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

     1  package ingresses
     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  	extv1b1 "k8s.io/api/extensions/v1beta1"
     9  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    10  	"k8s.io/apimachinery/pkg/util/intstr"
    11  )
    12  
    13  // Create newIngressForCR method to create exposed ingress
    14  func NewIngressForCR(m *v1alpha1.Interconnect, listener v1alpha1.Listener) *extv1b1.Ingress {
    15  	target := listener.Name
    16  	if target == "" {
    17  		target = strconv.Itoa(int(listener.Port))
    18  	}
    19  	labels := selectors.LabelsForInterconnect(m.Name)
    20  	ingress := &extv1b1.Ingress{
    21  		TypeMeta: metav1.TypeMeta{
    22  			APIVersion: "v1",
    23  			Kind:       "Ingress",
    24  		},
    25  		ObjectMeta: metav1.ObjectMeta{
    26  			Labels:    labels,
    27  			Name:      m.Name + "-" + target,
    28  			Namespace: m.Namespace,
    29  		},
    30  		Spec: extv1b1.IngressSpec{
    31  			Rules: []extv1b1.IngressRule{
    32  				{
    33  					Host: m.Name,
    34  					IngressRuleValue: extv1b1.IngressRuleValue{
    35  						HTTP: &extv1b1.HTTPIngressRuleValue{
    36  							Paths: []extv1b1.HTTPIngressPath{
    37  								extv1b1.HTTPIngressPath{
    38  									Path: "/",
    39  									Backend: extv1b1.IngressBackend{
    40  										ServiceName: m.Name,
    41  										ServicePort: intstr.FromInt(int(listener.Port)),
    42  									},
    43  								},
    44  							},
    45  						},
    46  					},
    47  				},
    48  			},
    49  		},
    50  	}
    51  	return ingress
    52  }