@@ -2144,6 +2144,313 @@ func Test_defaultModelBuilder_Build(t *testing.T) {
2144
2144
"80:3": null
2145
2145
}
2146
2146
}
2147
+ }` ,
2148
+ },
2149
+ {
2150
+ name : "Ingress - target-type in IngressClassParams" ,
2151
+ env : env {
2152
+ svcs : []* corev1.Service {ns_1_svc_1 , ns_1_svc_2 , ns_1_svc_3 },
2153
+ },
2154
+ fields : fields {
2155
+ resolveViaDiscoveryCalls : []resolveViaDiscoveryCall {resolveViaDiscoveryCallForInternalLB },
2156
+ listLoadBalancersCalls : []listLoadBalancersCall {listLoadBalancerCallForEmptyLB },
2157
+ enableBackendSG : true ,
2158
+ },
2159
+ args : args {
2160
+ ingGroup : Group {
2161
+ ID : GroupID {Namespace : "ns-1" , Name : "ing-1" },
2162
+ Members : []ClassifiedIngress {
2163
+ {
2164
+ IngClassConfig : ClassConfiguration {
2165
+ IngClassParams : & v1beta1.IngressClassParams {
2166
+ Spec : v1beta1.IngressClassParamsSpec {
2167
+ TargetType : v1beta1 .TargetTypeIP ,
2168
+ },
2169
+ },
2170
+ },
2171
+ Ing : & networking.Ingress {ObjectMeta : metav1.ObjectMeta {
2172
+ Namespace : "ns-1" ,
2173
+ Name : "ing-1" ,
2174
+ Annotations : map [string ]string {
2175
+ "alb.ingress.kubernetes.io/target-type" : string (v1beta1 .TargetTypeInstance ),
2176
+ },
2177
+ },
2178
+ Spec : networking.IngressSpec {
2179
+ Rules : []networking.IngressRule {
2180
+ {
2181
+ Host : "app-1.example.com" ,
2182
+ IngressRuleValue : networking.IngressRuleValue {
2183
+ HTTP : & networking.HTTPIngressRuleValue {
2184
+ Paths : []networking.HTTPIngressPath {
2185
+ {
2186
+ Path : "/svc-1" ,
2187
+ Backend : networking.IngressBackend {
2188
+ Service : & networking.IngressServiceBackend {
2189
+ Name : ns_1_svc_1 .Name ,
2190
+ Port : networking.ServiceBackendPort {
2191
+ Name : "http" ,
2192
+ },
2193
+ },
2194
+ },
2195
+ },
2196
+ {
2197
+ Path : "/svc-2" ,
2198
+ Backend : networking.IngressBackend {
2199
+ Service : & networking.IngressServiceBackend {
2200
+ Name : ns_1_svc_2 .Name ,
2201
+ Port : networking.ServiceBackendPort {
2202
+ Name : "http" ,
2203
+ },
2204
+ },
2205
+ },
2206
+ },
2207
+ },
2208
+ },
2209
+ },
2210
+ },
2211
+ {
2212
+ Host : "app-2.example.com" ,
2213
+ IngressRuleValue : networking.IngressRuleValue {
2214
+ HTTP : & networking.HTTPIngressRuleValue {
2215
+ Paths : []networking.HTTPIngressPath {
2216
+ {
2217
+ Path : "/svc-3" ,
2218
+ Backend : networking.IngressBackend {
2219
+ Service : & networking.IngressServiceBackend {
2220
+ Name : ns_1_svc_3 .Name ,
2221
+ Port : networking.ServiceBackendPort {
2222
+ Name : "https" ,
2223
+ },
2224
+ },
2225
+ },
2226
+ },
2227
+ },
2228
+ },
2229
+ },
2230
+ },
2231
+ },
2232
+ },
2233
+ },
2234
+ },
2235
+ },
2236
+ },
2237
+ },
2238
+ defaultTargetType : "instance" ,
2239
+ wantStackPatch : `
2240
+ {
2241
+ "resources": {
2242
+ "AWS::ElasticLoadBalancingV2::TargetGroup":{
2243
+ "ns-1/ing-1-svc-1:http":{
2244
+ "spec":{
2245
+ "name":"k8s-ns1-svc1-6350990f3a",
2246
+ "targetType":"ip",
2247
+ "ipAddressType":"ipv4",
2248
+ "port":8080,
2249
+ "protocol":"HTTP",
2250
+ "protocolVersion":"HTTP1",
2251
+ "healthCheckConfig":{
2252
+ "port":"traffic-port",
2253
+ "protocol":"HTTP",
2254
+ "path":"/",
2255
+ "matcher":{
2256
+ "httpCode":"200"
2257
+ },
2258
+ "intervalSeconds":15,
2259
+ "timeoutSeconds":5,
2260
+ "healthyThresholdCount":2,
2261
+ "unhealthyThresholdCount":2
2262
+ }
2263
+ }
2264
+ },
2265
+ "ns-1/ing-1-svc-2:http":{
2266
+ "spec":{
2267
+ "name":"k8s-ns1-svc2-6350990f3a",
2268
+ "targetType":"ip",
2269
+ "ipAddressType":"ipv4",
2270
+ "port":8080,
2271
+ "protocol":"HTTP",
2272
+ "protocolVersion":"HTTP1",
2273
+ "healthCheckConfig":{
2274
+ "port":"traffic-port",
2275
+ "protocol":"HTTP",
2276
+ "path":"/",
2277
+ "matcher":{
2278
+ "httpCode":"200"
2279
+ },
2280
+ "intervalSeconds":15,
2281
+ "timeoutSeconds":5,
2282
+ "healthyThresholdCount":2,
2283
+ "unhealthyThresholdCount":2
2284
+ }
2285
+ }
2286
+ },
2287
+ "ns-1/ing-1-svc-3:https":{
2288
+ "spec":{
2289
+ "name":"k8s-ns1-svc3-bf42870fba",
2290
+ "targetType":"ip",
2291
+ "ipAddressType":"ipv4",
2292
+ "port":8443,
2293
+ "protocol":"HTTPS",
2294
+ "protocolVersion":"HTTP1",
2295
+ "healthCheckConfig":{
2296
+ "port":9090,
2297
+ "protocol":"HTTPS",
2298
+ "path":"/health-check",
2299
+ "matcher":{
2300
+ "httpCode":"200-300"
2301
+ },
2302
+ "intervalSeconds":20,
2303
+ "timeoutSeconds":10,
2304
+ "healthyThresholdCount":7,
2305
+ "unhealthyThresholdCount":5
2306
+ }
2307
+ }
2308
+ }
2309
+ },
2310
+ "K8S::ElasticLoadBalancingV2::TargetGroupBinding":{
2311
+ "ns-1/ing-1-svc-1:http":{
2312
+ "spec":{
2313
+ "template":{
2314
+ "metadata":{
2315
+ "name":"k8s-ns1-svc1-6350990f3a",
2316
+ "namespace":"ns-1",
2317
+ "creationTimestamp":null
2318
+ },
2319
+ "spec":{
2320
+ "targetGroupARN":{
2321
+ "$ref":"#/resources/AWS::ElasticLoadBalancingV2::TargetGroup/ns-1/ing-1-svc-1:http/status/targetGroupARN"
2322
+ },
2323
+ "targetType":"ip",
2324
+ "vpcID": "vpc-dummy",
2325
+ "ipAddressType":"ipv4",
2326
+ "serviceRef":{
2327
+ "name":"svc-1",
2328
+ "port":"http"
2329
+ },
2330
+ "networking":{
2331
+ "ingress":[
2332
+ {
2333
+ "from":[
2334
+ {
2335
+ "securityGroup":{
2336
+ "groupID": "sg-auto"
2337
+ }
2338
+ }
2339
+ ],
2340
+ "ports":[
2341
+ {
2342
+ "port":8080,
2343
+ "protocol":"TCP"
2344
+ }
2345
+ ]
2346
+ }
2347
+ ]
2348
+ }
2349
+ }
2350
+ }
2351
+ }
2352
+ },
2353
+ "ns-1/ing-1-svc-2:http":{
2354
+ "spec":{
2355
+ "template":{
2356
+ "metadata":{
2357
+ "name":"k8s-ns1-svc2-6350990f3a",
2358
+ "namespace":"ns-1",
2359
+ "creationTimestamp":null
2360
+ },
2361
+ "spec":{
2362
+ "targetGroupARN":{
2363
+ "$ref":"#/resources/AWS::ElasticLoadBalancingV2::TargetGroup/ns-1/ing-1-svc-2:http/status/targetGroupARN"
2364
+ },
2365
+ "targetType":"ip",
2366
+ "ipAddressType":"ipv4",
2367
+ "vpcID": "vpc-dummy",
2368
+ "serviceRef":{
2369
+ "name":"svc-2",
2370
+ "port":"http"
2371
+ },
2372
+ "networking":{
2373
+ "ingress":[
2374
+ {
2375
+ "from":[
2376
+ {
2377
+ "securityGroup":{
2378
+ "groupID": "sg-auto"
2379
+ }
2380
+ }
2381
+ ],
2382
+ "ports":[
2383
+ {
2384
+ "port":8080,
2385
+ "protocol":"TCP"
2386
+ }
2387
+ ]
2388
+ }
2389
+ ]
2390
+ }
2391
+ }
2392
+ }
2393
+ }
2394
+ },
2395
+ "ns-1/ing-1-svc-3:https":{
2396
+ "spec":{
2397
+ "template":{
2398
+ "metadata":{
2399
+ "name":"k8s-ns1-svc3-bf42870fba",
2400
+ "namespace":"ns-1",
2401
+ "creationTimestamp":null
2402
+ },
2403
+ "spec":{
2404
+ "targetGroupARN":{
2405
+ "$ref":"#/resources/AWS::ElasticLoadBalancingV2::TargetGroup/ns-1/ing-1-svc-3:https/status/targetGroupARN"
2406
+ },
2407
+ "targetType":"ip",
2408
+ "vpcID": "vpc-dummy",
2409
+ "ipAddressType":"ipv4",
2410
+ "serviceRef":{
2411
+ "name":"svc-3",
2412
+ "port":"https"
2413
+ },
2414
+ "networking":{
2415
+ "ingress":[
2416
+ {
2417
+ "from":[
2418
+ {
2419
+ "securityGroup":{
2420
+ "groupID": "sg-auto"
2421
+ }
2422
+ }
2423
+ ],
2424
+ "ports":[
2425
+ {
2426
+ "port": 8443,
2427
+ "protocol":"TCP"
2428
+ }
2429
+ ]
2430
+ },
2431
+ {
2432
+ "from":[
2433
+ {
2434
+ "securityGroup":{
2435
+ "groupID": "sg-auto"
2436
+ }
2437
+ }
2438
+ ],
2439
+ "ports":[
2440
+ {
2441
+ "port": 9090,
2442
+ "protocol":"TCP"
2443
+ }
2444
+ ]
2445
+ }
2446
+ ]
2447
+ }
2448
+ }
2449
+ }
2450
+ }
2451
+ }
2452
+ }
2453
+ }
2147
2454
}` ,
2148
2455
},
2149
2456
{
0 commit comments