Skip to content

Commit c4e1aef

Browse files
authored
fix issue #549 + add test (#551)
Signed-off-by: adisos <[email protected]>
1 parent 7335253 commit c4e1aef

File tree

4 files changed

+72
-1
lines changed

4 files changed

+72
-1
lines changed

nca/Parsers/IngressPolicyYamlParser.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,11 @@ def parse_backend(self, backend, is_default=False):
9494

9595
service_port = srv.get_port_by_name(port_name) if port_name else srv.get_port_by_number(port_number)
9696
if not service_port:
97-
self.syntax_error(f'Missing port {port_name if port_name else port_number} in the service', service)
97+
port_str = f'{port_name if port_name else port_number}'
98+
warning_msg = f'Ingress rule redirects traffic to {service_name}:{port_str}, '
99+
warning_msg += f' but port {port_str} is not exposed by Service {service_name}'
100+
self.warning(warning_msg, service)
101+
return None, None, False
98102

99103
rule_ports = PortSet()
100104
rule_ports.add_port(service_port.target_port) # may be either a number or a named port

tests/expected_runtime/k8s_tests_expected_runtime.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,3 +139,4 @@ k8s_testcases/example_policies/withIpBlock2/withIpBlock2-scheme.yaml,5.51
139139
k8s_testcases/example_policies/workload-resources-test/file-system-resource-test-scheme.yaml,0.07
140140
k8s_testcases/example_policies/workload-resources-test/git-resource-test-scheme.yaml,7.66
141141
k8s_testcases/network-policy-checks-bad-path/network-policy-check-bad-path-scheme.yaml,0.80
142+
k8s_testcases/ingress-bad-path-test/test-ingress-bad-port-scheme.yaml,0.06
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
apiVersion: networking.k8s.io/v1
2+
kind: Ingress
3+
metadata:
4+
name: my-service-ingress
5+
namespace: sample
6+
spec:
7+
rules:
8+
- host: my-app.domain
9+
http:
10+
paths:
11+
- path: /
12+
pathType: Prefix
13+
backend:
14+
service:
15+
name: my-service
16+
port:
17+
number: 8080
18+
---
19+
20+
apiVersion: v1
21+
kind: Service
22+
metadata:
23+
name: my-service
24+
namespace: sample
25+
labels:
26+
app: my-app
27+
spec:
28+
type: ClusterIP
29+
ports:
30+
- port: 80
31+
targetPort: 8080
32+
selector:
33+
app: my-app
34+
35+
---
36+
apiVersion: apps/v1
37+
kind: Deployment
38+
metadata:
39+
name: my-app
40+
namespace: sample
41+
spec:
42+
replicas: 1
43+
selector:
44+
matchLabels:
45+
app: my-app
46+
template:
47+
metadata:
48+
labels:
49+
app: my-app
50+
spec:
51+
serviceAccountName: sample
52+
containers:
53+
- name: my-app
54+
image: webapp:1
55+
ports:
56+
- containerPort: 8080
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
resourceList: []
2+
networkConfigList:
3+
- name: sample
4+
resourceList:
5+
- ./sample-app/**
6+
expectedWarnings: 1 # Warning: Ingress rule redirects traffic to my-service:8080, but port 8080 is not exposed by Service my-service
7+
queries:
8+
- name: connectivity_map
9+
connectivityMap:
10+
- sample

0 commit comments

Comments
 (0)