From 185f1560d759eb2ff714df4bb1eead4ee3cd5031 Mon Sep 17 00:00:00 2001
From: Bastian <bastian.heppener@mgm-tp.com>
Date: Fri, 7 Feb 2025 17:43:42 +0100
Subject: [PATCH] ozg-6354 adjust zentraler eingang network policy

---
 .../zufi-server/templates/network_policy.yaml |  4 +-
 src/main/helm/zufi-server/values.yaml         |  5 +-
 .../helm/zufi-server/network_policy_test.yaml | 68 +++++++++++++++----
 src/test/required-values.yaml                 |  4 +-
 4 files changed, 62 insertions(+), 19 deletions(-)

diff --git a/src/main/helm/zufi-server/templates/network_policy.yaml b/src/main/helm/zufi-server/templates/network_policy.yaml
index 262f127..98e06c2 100644
--- a/src/main/helm/zufi-server/templates/network_policy.yaml
+++ b/src/main/helm/zufi-server/templates/network_policy.yaml
@@ -73,10 +73,11 @@ spec:
     ports:
     - protocol: TCP
       port: 8081
+  {{- if (.Values.zentralerEingang).enabled }}
   - from:
     - namespaceSelector:
         matchLabels:
-          kubernetes.io/metadata.name: {{ required "networkPolicy.zentralerEingangNamespace must be set" (.Values.networkPolicy).zentralerEingangNamespace }}
+          kubernetes.io/metadata.name: {{ required "zentralerEingang.namespace must be set" .Values.zentralerEingang.namespace }}
       podSelector:
         matchExpressions:
           - key: ozg-component
@@ -87,6 +88,7 @@ spec:
     ports:
     - protocol: TCP
       port: 9090
+  {{- end }}
 {{- with (.Values.networkPolicy).additionalIngressConfigLocal }}
 {{ toYaml . | indent 2 }}
 {{- end }}
diff --git a/src/main/helm/zufi-server/values.yaml b/src/main/helm/zufi-server/values.yaml
index 7d96f63..e529b3c 100644
--- a/src/main/helm/zufi-server/values.yaml
+++ b/src/main/helm/zufi-server/values.yaml
@@ -40,5 +40,6 @@ database:
   tls:
     secretName: "ozg-mongodb-tls-cert"
 
-networkPolicy:
-  zentralerEingangNamespace:
\ No newline at end of file
+zentralerEingang:
+  enabled: true
+  namespace:
\ No newline at end of file
diff --git a/src/test/helm/zufi-server/network_policy_test.yaml b/src/test/helm/zufi-server/network_policy_test.yaml
index 6ff12b3..ea13cb9 100644
--- a/src/test/helm/zufi-server/network_policy_test.yaml
+++ b/src/test/helm/zufi-server/network_policy_test.yaml
@@ -32,28 +32,31 @@ templates:
 tests:
   - it: should match apiVersion
     set: 
+      zentralerEingang:
+        namespace: zentraler-eingang
       networkPolicy:
         dnsServerNamespace: test-ns
         fachstellenProxyNamespace: fachstellen-proxy
-        zentralerEingangNamespace: zentraler-eingang
     asserts:
       - isAPIVersion:
           of: networking.k8s.io/v1
   - it: should match kind
     set: 
+      zentralerEingang:
+        namespace: zentraler-eingang
       networkPolicy:
         dnsServerNamespace: test-ns
         fachstellenProxyNamespace: fachstellen-proxy
-        zentralerEingangNamespace: zentraler-eingang
     asserts:
       - isKind:
           of: NetworkPolicy
   - it: validate metadata
     set: 
+      zentralerEingang:
+        namespace: zentraler-eingang
       networkPolicy:
         dnsServerNamespace: test-ns
         fachstellenProxyNamespace: fachstellen-proxy
-        zentralerEingangNamespace: zentraler-eingang
     asserts:
       - equal:
           path: metadata
@@ -63,10 +66,11 @@ tests:
 
   - it: should generate spec
     set: 
+      zentralerEingang:
+        namespace: zentraler-eingang
       networkPolicy:
         dnsServerNamespace: test-ns
         fachstellenProxyNamespace: fachstellen-proxy
-        zentralerEingangNamespace: zentraler-eingang
     asserts:
       - equal:
           path: spec
@@ -153,10 +157,11 @@ tests:
 
   - it: should set monitoring namespace
     set:
+      zentralerEingang:
+        namespace: zentraler-eingang
       networkPolicy:
         dnsServerNamespace: test-ns
         fachstellenProxyNamespace: fachstellen-proxy
-        zentralerEingangNamespace: zentraler-eingang
         monitoringNamespace: test-monitoring
     asserts:
       - contains:
@@ -172,10 +177,11 @@ tests:
 
   - it: add ingress rule by values local
     set:
+      zentralerEingang:
+        namespace: zentraler-eingang
       networkPolicy:
         dnsServerNamespace: test-ns
         fachstellenProxyNamespace: fachstellen-proxy
-        zentralerEingangNamespace: zentraler-eingang
         additionalIngressConfigLocal:
           - from:
               - podSelector:
@@ -191,10 +197,11 @@ tests:
                     component: client2
   - it: add ingress rule by values global
     set:
+      zentralerEingang:
+        namespace: zentraler-eingang
       networkPolicy:
         dnsServerNamespace: test-ns
         fachstellenProxyNamespace: fachstellen-proxy
-        zentralerEingangNamespace: zentraler-eingang
         additionalIngressConfigGlobal:
           - from:
               - podSelector:
@@ -211,10 +218,11 @@ tests:
 
   - it: add egress rules by values local
     set:
+      zentralerEingang:
+        namespace: zentraler-eingang
       networkPolicy:
         dnsServerNamespace: test-ns
         fachstellenProxyNamespace: fachstellen-proxy
-        zentralerEingangNamespace: zentraler-eingang
         additionalEgressConfigLocal:
           - to:
               - ipBlock:
@@ -228,10 +236,11 @@ tests:
                   cidr: 1.2.3.4/32
   - it: add egress rules by values Global
     set:
+      zentralerEingang:
+        namespace: zentraler-eingang
       networkPolicy:
         dnsServerNamespace: test-ns
         fachstellenProxyNamespace: fachstellen-proxy
-        zentralerEingangNamespace: zentraler-eingang
         additionalEgressConfigGlobal:
           - to:
               - ipBlock:
@@ -253,49 +262,78 @@ tests:
           count: 0
   - it: test by default network policy enabled
     set: 
+      zentralerEingang:
+        namespace: zentraler-eingang
       networkPolicy:
         dnsServerNamespace: test-ns
         fachstellenProxyNamespace: fachstellen-proxy
-        zentralerEingangNamespace: zentraler-eingang
     asserts:
       - hasDocuments:
           count: 1
 
   - it: test network policy set as enabled
     set:
+      zentralerEingang:
+        namespace: zentraler-eingang
       networkPolicy:
         disabled: false
         dnsServerNamespace: test-dns-namespace
         fachstellenProxyNamespace: fachstellen-proxy
-        zentralerEingangNamespace: zentraler-eingang
     asserts:
       - hasDocuments:
           count: 1
 
   - it: test dnsServerNamespace must be set message
     set:
+      zentralerEingang:
+        namespace: zentraler-eingang
       networkPolicy:
         disabled: false
         fachstellenProxyNamespace: fachstellen-proxy
-        zentralerEingangNamespace: zentraler-eingang
     asserts:
       - failedTemplate:
           errorMessage: networkPolicy.dnsServerNamespace must be set
   - it: test fachstellen-proxy namespace must be set message
     set:
+      zentralerEingang:
+        namespace: zentraler-eingang
       networkPolicy:
         disabled: false
         dnsServerNamespace: test-dns-namespace
-        zentralerEingangNamespace: zentraler-eingang
     asserts:
       - failedTemplate:
           errorMessage: networkPolicy.fachstellenProxyNamespace must be set
 
-  - it: test zentralerEingangNamespace namespace must be set message
+  - it: test zentralerEingang.namespace must be set message
     set:
       networkPolicy:
         dnsServerNamespace: test-dns-namespace
         fachstellenProxyNamespace: fachstellen-proxy
     asserts:
       - failedTemplate:
-          errorMessage: networkPolicy.zentralerEingangNamespace must be set
+          errorMessage: zentralerEingang.namespace must be set
+
+  - it: test disable zentralerEingang network policy
+    set:
+      zentralerEingang:
+        enabled: false
+        namespace: zentraler-eingang
+      networkPolicy:
+        dnsServerNamespace: test-dns-namespace
+        fachstellenProxyNamespace: fachstellen-proxy
+    asserts:
+      - notContains:
+          any: true
+          path: spec.ingress
+          content:
+            from:
+            - namespaceSelector:
+                matchLabels:
+                  kubernetes.io/metadata.name: zentraler-eingang
+              podSelector:
+                matchExpressions:
+                  - key: ozg-component
+                    operator: In
+                    values:
+                      - eingangsadapter
+                      - xta-adapter
diff --git a/src/test/required-values.yaml b/src/test/required-values.yaml
index 58a8a02..841ae73 100644
--- a/src/test/required-values.yaml
+++ b/src/test/required-values.yaml
@@ -46,4 +46,6 @@ oidc:
 networkPolicy:
   dnsServerNamespace: test-ns
   fachstellenProxyNamespace: proxy
-  zentralerEingangNamespace: zentraler-eingang
+
+zentralerEingang:
+  namespace: zentraler-eingang
-- 
GitLab