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