@@ -50,9 +50,9 @@ func Ingress(params manifests.Params) (*networkingv1.Ingress, error) {
50
50
var rules []networkingv1.IngressRule
51
51
switch params .OtelCol .Spec .Ingress .RuleType {
52
52
case v1beta1 .IngressRuleTypePath , "" :
53
- rules = []networkingv1.IngressRule {createPathIngressRules (params .OtelCol .Name , params .OtelCol .Spec .Ingress .Hostname , ports )}
53
+ rules = []networkingv1.IngressRule {createPathIngressRules (params .OtelCol .Name , params .OtelCol .Spec .Ingress .Hostname , ports , "service" )}
54
54
case v1beta1 .IngressRuleTypeSubdomain :
55
- rules = createSubdomainIngressRules (params .OtelCol .Name , params .OtelCol .Spec .Ingress .Hostname , ports )
55
+ rules = createSubdomainIngressRules (params .OtelCol .Name , params .OtelCol .Spec .Ingress .Hostname , ports , "service" )
56
56
}
57
57
58
58
return & networkingv1.Ingress {
@@ -70,17 +70,61 @@ func Ingress(params manifests.Params) (*networkingv1.Ingress, error) {
70
70
}, nil
71
71
}
72
72
73
- func createPathIngressRules (otelcol string , hostname string , ports []corev1.ServicePort ) networkingv1.IngressRule {
73
+ func ExtensionIngress (params manifests.Params ) (* networkingv1.Ingress , error ) {
74
+ name := naming .ExtensionIngress (params .OtelCol .Name )
75
+ labels := manifestutils .Labels (params .OtelCol .ObjectMeta , name , params .OtelCol .Spec .Image , ComponentOpenTelemetryCollector , params .Config .LabelsFilter ())
76
+
77
+ if params .OtelCol .Spec .ExtensionIngress .Type != v1beta1 .IngressTypeIngress {
78
+ return nil , nil
79
+ }
80
+
81
+ ports , err := extensionServicePortsFromCfg (params .Log , params .OtelCol )
82
+ if err != nil || len (ports ) == 0 {
83
+ return nil , err
84
+ }
85
+
86
+ var rules []networkingv1.IngressRule
87
+ switch params .OtelCol .Spec .Ingress .RuleType {
88
+ case v1beta1 .IngressRuleTypePath , "" :
89
+ rules = []networkingv1.IngressRule {createPathIngressRules (params .OtelCol .Name , params .OtelCol .Spec .ExtensionIngress .Hostname , ports , "extension" )}
90
+ case v1beta1 .IngressRuleTypeSubdomain :
91
+ rules = createSubdomainIngressRules (params .OtelCol .Name , params .OtelCol .Spec .ExtensionIngress .Hostname , ports , "extension" )
92
+ }
93
+
94
+ return & networkingv1.Ingress {
95
+ ObjectMeta : metav1.ObjectMeta {
96
+ Name : name ,
97
+ Namespace : params .OtelCol .Namespace ,
98
+ Annotations : params .OtelCol .Spec .ExtensionIngress .Annotations ,
99
+ Labels : labels ,
100
+ },
101
+ Spec : networkingv1.IngressSpec {
102
+ TLS : params .OtelCol .Spec .ExtensionIngress .TLS ,
103
+ Rules : rules ,
104
+ IngressClassName : params .OtelCol .Spec .ExtensionIngress .IngressClassName ,
105
+ },
106
+ }, nil
107
+ }
108
+
109
+ func createPathIngressRules (otelcol string , hostname string , ports []corev1.ServicePort , serviceType string ) networkingv1.IngressRule {
74
110
pathType := networkingv1 .PathTypePrefix
75
111
paths := make ([]networkingv1.HTTPIngressPath , len (ports ))
112
+
113
+ var name string
114
+ if serviceType == "extension" {
115
+ name = naming .ExtensionService (otelcol )
116
+ } else {
117
+ name = naming .Service (otelcol )
118
+ }
119
+
76
120
for i , port := range ports {
77
121
portName := naming .PortName (port .Name , port .Port )
78
122
paths [i ] = networkingv1.HTTPIngressPath {
79
123
Path : "/" + port .Name ,
80
124
PathType : & pathType ,
81
125
Backend : networkingv1.IngressBackend {
82
126
Service : & networkingv1.IngressServiceBackend {
83
- Name : naming . Service ( otelcol ) ,
127
+ Name : name ,
84
128
Port : networkingv1.ServiceBackendPort {
85
129
Name : portName ,
86
130
},
@@ -98,9 +142,17 @@ func createPathIngressRules(otelcol string, hostname string, ports []corev1.Serv
98
142
}
99
143
}
100
144
101
- func createSubdomainIngressRules (otelcol string , hostname string , ports []corev1.ServicePort ) []networkingv1.IngressRule {
145
+ func createSubdomainIngressRules (otelcol string , hostname string , ports []corev1.ServicePort , serviceType string ) []networkingv1.IngressRule {
102
146
var rules []networkingv1.IngressRule
103
147
pathType := networkingv1 .PathTypePrefix
148
+
149
+ var name string
150
+ if serviceType == "extension" {
151
+ name = naming .ExtensionService (otelcol )
152
+ } else {
153
+ name = naming .Service (otelcol )
154
+ }
155
+
104
156
for _ , port := range ports {
105
157
portName := naming .PortName (port .Name , port .Port )
106
158
@@ -119,7 +171,7 @@ func createSubdomainIngressRules(otelcol string, hostname string, ports []corev1
119
171
PathType : & pathType ,
120
172
Backend : networkingv1.IngressBackend {
121
173
Service : & networkingv1.IngressServiceBackend {
122
- Name : naming . Service ( otelcol ) ,
174
+ Name : name ,
123
175
Port : networkingv1.ServiceBackendPort {
124
176
Name : portName ,
125
177
},
@@ -163,6 +215,15 @@ func servicePortsFromCfg(logger logr.Logger, otelcol v1beta1.OpenTelemetryCollec
163
215
return ports , nil
164
216
}
165
217
218
+ func extensionServicePortsFromCfg (logger logr.Logger , otelcol v1beta1.OpenTelemetryCollector ) ([]corev1.ServicePort , error ) {
219
+ ports , err := otelcol .Spec .Config .GetExtensionPorts (logger )
220
+ if err != nil {
221
+ return nil , err
222
+ }
223
+
224
+ return ports , nil
225
+ }
226
+
166
227
func toServicePorts (spec []v1beta1.PortsSpec ) []corev1.ServicePort {
167
228
var ports []corev1.ServicePort
168
229
for _ , p := range spec {
0 commit comments