Skip to content

Commit

Permalink
Improve Antrea-native Policy CRD schema verification (#2125)
Browse files Browse the repository at this point in the history
* Add namespaceSelector/podSelector validations in all CRD schema
Improve Antrea-native Policy CRD schema verification

* update the generate manifest YAMLs

* add e2e test cases in antrea policy verify invalid labelSelector;

* formalize e2e test case path of testInvalidACNPPodSelector;

* verify e2e test;
  • Loading branch information
wenqiq authored May 6, 2021
1 parent dbd2c1a commit 64e017b
Show file tree
Hide file tree
Showing 8 changed files with 6,068 additions and 276 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ bin

.idea/
.vscode/
vendor
1,052 changes: 1,006 additions & 46 deletions build/yamls/antrea-aks.yml

Large diffs are not rendered by default.

1,052 changes: 1,006 additions & 46 deletions build/yamls/antrea-eks.yml

Large diffs are not rendered by default.

1,052 changes: 1,006 additions & 46 deletions build/yamls/antrea-gke.yml

Large diffs are not rendered by default.

1,052 changes: 1,006 additions & 46 deletions build/yamls/antrea-ipsec.yml

Large diffs are not rendered by default.

1,052 changes: 1,006 additions & 46 deletions build/yamls/antrea.yml

Large diffs are not rendered by default.

1,052 changes: 1,006 additions & 46 deletions build/yamls/base/crds.yml

Large diffs are not rendered by default.

31 changes: 31 additions & 0 deletions test/e2e/antreapolicy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -664,6 +664,36 @@ func testInvalidTierANPRefDelete(t *testing.T) {
failOnError(k8sUtils.DeleteTier(tr.Name), t)
}

// testInvalidACNPPodSelectorNsSelectorMatchExpressions testes creating a ClusterNetworkPolicy with invalid LabelSelector(MatchExpressions)
func testInvalidACNPPodSelectorNsSelectorMatchExpressions(t *testing.T) {
invalidLSErr := fmt.Errorf("create Antrea NetworkPolicy with namespaceSelector but matchExpressions invalid")

allowAction := crdv1alpha1.RuleActionAllow
selectorA := metav1.LabelSelector{MatchLabels: map[string]string{"env": "dummy"}}
nsSelectA := metav1.LabelSelector{MatchExpressions: []metav1.LabelSelectorRequirement{{Key: "env", Operator: "xxx", Values: []string{"xxxx"}}}}

var acnp = &crdv1alpha1.ClusterNetworkPolicy{
ObjectMeta: metav1.ObjectMeta{
Namespace: testNamespace, Name: "cnptest", Labels: map[string]string{"antrea-e2e": "cnp1"}},
Spec: crdv1alpha1.ClusterNetworkPolicySpec{
AppliedTo: []crdv1alpha1.NetworkPolicyPeer{
{PodSelector: &selectorA},
{NamespaceSelector: &nsSelectA},
},
Priority: 10,
Ingress: []crdv1alpha1.Rule{
{
Action: &allowAction,
},
},
},
}

if _, err := k8sUtils.CreateOrUpdateACNP(acnp); err == nil {
failOnError(invalidLSErr, t)
}
}

// testACNPAllowXBtoA tests traffic from X/B to pods with label A, after applying the default deny
// k8s NetworkPolicies in all namespaces and ACNP to allow X/B to A.
func testACNPAllowXBtoA(t *testing.T) {
Expand Down Expand Up @@ -2560,6 +2590,7 @@ func TestAntreaPolicy(t *testing.T) {
t.Run("Case=ANPTierDoesNotExistDenied", func(t *testing.T) { testInvalidANPTierDoesNotExist(t) })
t.Run("Case=ANPPortRangePortUnsetDenied", func(t *testing.T) { testInvalidANPPortRangePortUnset(t) })
t.Run("Case=ANPPortRangePortEndPortSmallDenied", func(t *testing.T) { testInvalidANPPortRangeEndPortSmall(t) })
t.Run("Case=ACNPInvalidPodSelectorNsSelectorMatchExpressions", func(t *testing.T) { testInvalidACNPPodSelectorNsSelectorMatchExpressions(t) })
})

t.Run("TestGroupValidateTiers", func(t *testing.T) {
Expand Down

0 comments on commit 64e017b

Please sign in to comment.