-
Bug
-
Resolution: Can't Do
-
Normal
-
None
-
4.15.z
-
Quality / Stability / Reliability
-
False
-
-
8
-
None
-
No
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Description of problem:
A deny all ingress traffic multi-network policy drops the return traffic of connections initiated by the pod - i.e. the ingress policy has impacts on egress.
Version-Release number of selected component (if applicable):
4.15.Z
How reproducible:
always
Steps to Reproduce:
1. configure the underlay for a localnet topology ovn-k secondary network
"""
apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
name: ovs-share-same-gw-bridge
spec:
nodeSelector:
node-role.kubernetes.io/worker: ''
desiredState:
ovn:
bridge-mappings:
- localnet: data-net
bridge: breth0
"""
2. provision a NAD for said secondary network
"""
apiVersion: k8s.cni.cncf.io/v1
kind: NetworkAttachmentDefinition
metadata:
name: mynet
namespace: default
spec:
config: '{
"cniVersion": "0.3.1",
"name": "data-net",
"netAttachDefName": "default/mynet",
"topology": "localnet",
"type": "ovn-k8s-cni-overlay",
"vlanID": 123
}'
"""
2. apply an workload attached to the secondary network
"""
apiVersion: v1
kind: Pod
metadata:
namespace: default
name: pod1
annotations:
k8s.v1.cni.cncf.io/networks: '[
{
"name": "mynet",
"ips": [ "192.168.200.10/24" ]
}
]'
spec:
containers:
- name: centos
image: docker.io/centos/tools:latest
command:
- /sbin/init
"""
3. start an HTTP server on something outside the cluster in the secondary network subnet
4. access from the client workload to the HTTP server
5. apply deny-all multi-network policy
"""
apiVersion: k8s.cni.cncf.io/v1beta1
kind: MultiNetworkPolicy
metadata:
name: block-all-ingress
annotations:
k8s.v1.cni.cncf.io/policy-for: default/mynet
spec:
podSelector: {}
ingress: []
policyTypes:
- Ingress
"""
Actual results:
the return traffic is dropped when reaching the client pod
Expected results:
the return traffic is allowed
Additional info:
If we provision an allow all egress policy the bug does not happen - the outgoing connection is conntracked, and the return traffic is not subject to policy.
This does not happen for the cluster default network (i.e. a NetworkPolicy with only ingress blocking rules does not impact - at all - egress behavior).