From 2ee7af343baaf5052fd7799a62e41f4c795a3059 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Sun, 13 Nov 2022 21:06:07 +0100
Subject: [PATCH] OZG-3152: refactor helm chart for new cluster

---
 Jenkinsfile                                   |   2 +-
 src/main/helm/templates/_helpers.tpl          |  32 +----
 src/main/helm/templates/ingress.yaml          |   7 +-
 src/main/helm/test-values.yaml                |   2 +
 src/main/helm/values.yaml                     |   2 +
 .../helm/deployment_defaults_labels_test.yaml |   6 +-
 src/test/helm/deployment_env_test.yaml        |   1 -
 src/test/helm/deployment_resources_test.yaml  |   6 +-
 .../helm/deployment_routing-strategy.yaml     |   5 +-
 .../helm/deployment_springProfile_test.yaml   |   4 +-
 src/test/helm/deployment_test.yaml            |   8 +-
 src/test/helm/image-pull-secret-test.yaml     |   2 -
 src/test/helm/ingress-create-or-not.yaml      |   5 -
 src/test/helm/ingress_test.yaml               | 120 ++----------------
 src/test/helm/service_monitor_test.yaml       |   6 +-
 src/test/helm/service_test.yaml               |   4 +-
 ...s_annotaion_test.yaml => unit-values.yaml} |  40 +++---
 17 files changed, 51 insertions(+), 201 deletions(-)
 rename src/test/{helm/deployment_defaults_annotaion_test.yaml => unit-values.yaml} (60%)

diff --git a/Jenkinsfile b/Jenkinsfile
index 24c21bb82..ad830ce73 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -136,7 +136,7 @@ pipeline {
                         dir('src/main/helm') {
                             sh "helm lint -f test-values.yaml"
 
-                            sh "helm unittest -f '../../test/helm/*.yaml' ."
+                            sh "helm unittest -f '../../test/helm/*.yaml' -v '../../test/unit-values.yaml' ."
 
                             sh "helm package --version=${HELM_CHART_VERSION} ."
 
diff --git a/src/main/helm/templates/_helpers.tpl b/src/main/helm/templates/_helpers.tpl
index db0d7ca50..1fdd289ff 100644
--- a/src/main/helm/templates/_helpers.tpl
+++ b/src/main/helm/templates/_helpers.tpl
@@ -48,7 +48,6 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }}
 {{- end }}
 {{- end }}
 
-
 {{- define "app.envSpringProfiles" }}
 {{- if (.Values.env).overrideSpringProfiles -}}
 {{ printf "%s" (.Values.env).overrideSpringProfiles }}
@@ -57,12 +56,10 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }}
 {{- end -}}
 {{- end -}}
 
-
 {{- define "app.kopEnvironment" -}}
 {{- required "Environment muss angegeben sein" (.Values.kop).environment -}}
 {{- end -}}
 
-
 {{- define "app.kopBezeichner" -}}
 {{ $length := len (.Values.kop).bezeichner }}
 {{- if ge 27 $length -}}
@@ -72,7 +69,6 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }}
 {{- end -}}
 {{- end -}}
 
-
 {{- define "app.resources" }}
 {{- if eq (include "app.kopEnvironment" . ) "prod" }}
   limits:
@@ -91,32 +87,10 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }}
 {{- end }}
 {{- end -}}
 
-
 {{- define "app.ingress.host" }}
-{{- if .Values.ingress.overrideHost }}
-{{- printf "%s" ( trimPrefix "https://" .Values.ingress.overrideHost ) }}
-{{- else }}
-
-{{- if eq (include "app.kopEnvironment" . ) "prod" }}
-{{- if eq (.Values.image).name "formsolutions-adapter" }}
-{{- printf "%s.fs.ozg-sh.de" (include "app.kopBezeichner" .) }}
-{{- else }}
-{{- printf "%s.afm.ozg-sh.de" (include "app.kopBezeichner" .) }}
-{{- end }}
-
-{{- else if eq (include "app.kopEnvironment" . ) "stage" }}
-{{- if eq (.Values.image).name "formsolutions-adapter" }}
-{{- printf "%s.stage.fs.ozg-sh.de" (include "app.kopBezeichner" .) }}
-{{- else }}
-{{- printf "%s.stage.afm.ozg-sh.de" (include "app.kopBezeichner" .) }}
-{{- end }}
-
-{{- else }}
 {{- if eq (.Values.image).name "formsolutions-adapter" }}
-{{- printf "%s-fs.%s.ozg-sh.de" (include "app.kopBezeichner" .)  (include "app.kopEnvironment" . ) }}
+{{- printf "%s-fs.%s" (include "app.kopBezeichner" .) .Values.baseUrl }}
 {{- else }}
-{{- printf "%s-afm.%s.ozg-sh.de" (include "app.kopBezeichner" .) (include "app.kopEnvironment" . ) }}
-{{- end }}
-{{- end }}
-{{- end }}
+{{- printf "%s-afm.%s" (include "app.kopBezeichner" .) .Values.baseUrl }}
 {{- end }}
+{{- end -}}
\ No newline at end of file
diff --git a/src/main/helm/templates/ingress.yaml b/src/main/helm/templates/ingress.yaml
index 330b9d3e7..3ee5b0eca 100644
--- a/src/main/helm/templates/ingress.yaml
+++ b/src/main/helm/templates/ingress.yaml
@@ -26,12 +26,12 @@
 apiVersion: networking.k8s.io/v1
 kind: Ingress
 metadata:
-  {{- with .Values.ingressAnnotations }}
-  annotations: {{- toYaml . | nindent 4 }}
-  {{- end }}
+  annotations:
+    cert-manager.io/cluster-issuer: letsencrypt-prod
   name: {{ include "app.name" . }}
   namespace: {{ include "app.namespace" . }}
 spec:
+  ingressClassName: nginx
   rules:
     - http:
         paths:
@@ -46,4 +46,5 @@ spec:
   tls:
     - hosts:
       - {{ include "app.ingress.host" . }}
+      secretName: {{ .Values.kop.bezeichner }}-{{ include "app.name" . }}-tls
 {{- end -}}
\ No newline at end of file
diff --git a/src/main/helm/test-values.yaml b/src/main/helm/test-values.yaml
index 315c15a39..e5d00fa63 100644
--- a/src/main/helm/test-values.yaml
+++ b/src/main/helm/test-values.yaml
@@ -22,6 +22,8 @@
 # unter der Lizenz sind dem Lizenztext zu entnehmen.
 #
 
+baseUrl: test.by.ozg-cloud.de
+
 kop:
   environment: test
   bezeichner: helm
\ No newline at end of file
diff --git a/src/main/helm/values.yaml b/src/main/helm/values.yaml
index 9777e18eb..5da7c8209 100644
--- a/src/main/helm/values.yaml
+++ b/src/main/helm/values.yaml
@@ -22,6 +22,8 @@
 # unter der Lizenz sind dem Lizenztext zu entnehmen.
 #
 
+baseUrl: test.by.ozg-cloud.de
+
 image:
   repo: docker.ozg-sh.de
   name: intelliform-adapter # [default: intelliform-adapter]
diff --git a/src/test/helm/deployment_defaults_labels_test.yaml b/src/test/helm/deployment_defaults_labels_test.yaml
index 9202e61ed..795d3f770 100644
--- a/src/test/helm/deployment_defaults_labels_test.yaml
+++ b/src/test/helm/deployment_defaults_labels_test.yaml
@@ -25,15 +25,13 @@
 suite: test deployment
 release:
   name: intelliform-adapter
-  namespace: sh-helm-test
+  namespace: by-helm-test
 templates:
   - templates/deployment.yaml
   - templates/service_monitor.yaml
   - templates/service.yaml
 tests:
   - it: check default labels
-    set:
-      kop.environment: dev
     asserts:
       - equal:
           path: metadata.labels.[app.kubernetes.io/instance]
@@ -46,4 +44,4 @@ tests:
           value: kop
       - equal:
           path: metadata.labels.[app.kubernetes.io/namespace]
-          value: sh-helm-test
+          value: by-helm-test
diff --git a/src/test/helm/deployment_env_test.yaml b/src/test/helm/deployment_env_test.yaml
index 525c2c98a..51fc54a9d 100644
--- a/src/test/helm/deployment_env_test.yaml
+++ b/src/test/helm/deployment_env_test.yaml
@@ -29,7 +29,6 @@ tests:
   - it: check customList
     template: deployment.yaml
     set:
-      kop.environment: test
       env.customList:
         - name: my_test_environment_name
           value: "A test value"
diff --git a/src/test/helm/deployment_resources_test.yaml b/src/test/helm/deployment_resources_test.yaml
index 854c1486f..11441f69d 100644
--- a/src/test/helm/deployment_resources_test.yaml
+++ b/src/test/helm/deployment_resources_test.yaml
@@ -30,7 +30,7 @@ templates:
 tests:
   - it: test resources for prod environment
     release:
-      namespace: sh-name-prod
+      namespace: sh-helm-prod
     set:
       kop.environment: prod
     asserts:
@@ -48,9 +48,7 @@ tests:
           value: 250Mi
   - it: test default resources
     release:
-      namespace: sh-name-dev
-    set:
-      kop.environment: dev
+      namespace: by-helm-test
     asserts:
       - equal:
           path: spec.template.spec.containers[0].resources.limits.cpu
diff --git a/src/test/helm/deployment_routing-strategy.yaml b/src/test/helm/deployment_routing-strategy.yaml
index cfc5b45f4..27c9e2084 100644
--- a/src/test/helm/deployment_routing-strategy.yaml
+++ b/src/test/helm/deployment_routing-strategy.yaml
@@ -25,15 +25,13 @@
 suite: test deployment
 release:
   name: intelliform-adapter
-  namespace: sh-helm-test
+  namespace: by-helm-test
 templates:
   - deployment.yaml
 set:
   image.tag: latest
 tests:
   - it: validate default routing values without questions.yaml
-    set:
-      kop.environment: test
     asserts:
       - contains:
           path: spec.template.spec.containers[0].env
@@ -47,7 +45,6 @@ tests:
             value: DENY
   - it: validate routing infos
     set:
-      kop.environment: test
       routing.routingStrategy: MULTI
       routing.fallbackStrategy: FUNDSTELLE
     asserts:
diff --git a/src/test/helm/deployment_springProfile_test.yaml b/src/test/helm/deployment_springProfile_test.yaml
index 36d372f73..027de9d0a 100644
--- a/src/test/helm/deployment_springProfile_test.yaml
+++ b/src/test/helm/deployment_springProfile_test.yaml
@@ -30,7 +30,7 @@ templates:
 tests:
   - it: should override spring profiles
     set:
-      kop.environment: test
+      kop.environment: stage
       env.overrideSpringProfiles: oc,stage,ea
     asserts:
       - isKind:
@@ -41,8 +41,6 @@ tests:
             name: spring_profiles_active
             value: oc,stage,ea
   - it: should generate spring profiles
-    set:
-      kop.environment: test
     asserts:
       - isKind:
           of: Deployment
diff --git a/src/test/helm/deployment_test.yaml b/src/test/helm/deployment_test.yaml
index 0ef307b73..0c182ce97 100644
--- a/src/test/helm/deployment_test.yaml
+++ b/src/test/helm/deployment_test.yaml
@@ -25,14 +25,11 @@
 suite: test deployment
 release:
   name: intelliform-adapter
-  namespace: sh-helm-test
+  namespace: by-helm-test
 templates:
   - deployment.yaml
 tests:
   - it: validate image type and container image
-    set:
-      kop.environment: test
-      image.tag: latest
     asserts:
       - isKind:
           of: Deployment
@@ -40,9 +37,6 @@ tests:
           path: spec.template.spec.containers[0].image
           value: docker.ozg-sh.de/intelliform-adapter:latest
   - it: validate image pull secret resource name
-    set:
-      kop.environment: test
-      image.tag: latest
     asserts:
       - equal:
           path: spec.template.spec.imagePullSecrets[0].name
diff --git a/src/test/helm/image-pull-secret-test.yaml b/src/test/helm/image-pull-secret-test.yaml
index 76641b50b..423d6268f 100644
--- a/src/test/helm/image-pull-secret-test.yaml
+++ b/src/test/helm/image-pull-secret-test.yaml
@@ -28,8 +28,6 @@ templates:
 release:
   name: intelliform-adaptero
   namespace: helm-test
-set:
-  image.name: intelliform-adapter
 tests:
   - it: should match basic data
     asserts:
diff --git a/src/test/helm/ingress-create-or-not.yaml b/src/test/helm/ingress-create-or-not.yaml
index 0f97df760..7bf967dda 100644
--- a/src/test/helm/ingress-create-or-not.yaml
+++ b/src/test/helm/ingress-create-or-not.yaml
@@ -29,8 +29,6 @@ tests:
   - it: create ingress by config
     set:
       ingress.enabled: true
-      kop.environment: dev
-      kop.bezeichner: unit
     asserts:
       - isKind:
           of: Ingress
@@ -41,9 +39,6 @@ tests:
       - hasDocuments:
           count: 0
   - it: ingress should be created by default
-    set:
-      kop.environment: dev
-      kop.bezeichner: unit
     asserts:
       - isKind:
           of: Ingress
diff --git a/src/test/helm/ingress_test.yaml b/src/test/helm/ingress_test.yaml
index 8a8a059c8..80fe6cab1 100644
--- a/src/test/helm/ingress_test.yaml
+++ b/src/test/helm/ingress_test.yaml
@@ -25,14 +25,11 @@
 suite: test ingress creation
 release:
   name: intelliform-adapter
-  namespace: sh-helm-test
+  namespace: by-helm-test
 templates:
   - templates/ingress.yaml
 tests:
   - it: should match basic data
-    set:
-      kop.environment: dev
-      kop.bezeichner: unit
     asserts:
       - containsDocument:
           kind: Ingress
@@ -42,142 +39,43 @@ tests:
           value: intelliform-adapter
       - equal:
           path: metadata.namespace
-          value: sh-helm-test
+          value: by-helm-test
   - it: should match service port number
-    set:
-      kop.environment: dev
-      kop.bezeichner: unit
     asserts:
       - equal:
           path: spec.rules[0].http.paths[0].backend.service.port.number
           value: 8080
   - it: should match service name
-    set:
-      kop.environment: dev
-      kop.bezeichner: unit
     asserts:
       - equal:
           path: spec.rules[0].http.paths[0].backend.service.name
           value: intelliform-adapter
   - it: should match service path
-    set:
-      kop.environment: dev
-      kop.bezeichner: unit
     asserts:
       - isEmpty:
           path: spec.rules[0].http.paths[0].path
   - it: should match service pathType
-    set:
-      kop.environment: dev
-      kop.bezeichner: unit
     asserts:
       - equal:
           path: spec.rules[0].http.paths[0].pathType
           value: ImplementationSpecific
-  - it: should create afm dev host
-    set:
-      kop.environment: dev
-      kop.bezeichner: unit
-    asserts:
-      - equal:
-          path: spec.rules[0].host
-          value: unit-afm.dev.ozg-sh.de
-      - equal:
-          path: spec.tls[0].hosts[0]
-          value: unit-afm.dev.ozg-sh.de
-  - it: should create afm test host
-    set:
-      kop.environment: test
-      kop.bezeichner: unit
-    asserts:
-      - equal:
-          path: spec.rules[0].host
-          value: unit-afm.test.ozg-sh.de
-      - equal:
-          path: spec.tls[0].hosts[0]
-          value: unit-afm.test.ozg-sh.de
-  - it: should create afm prod host
-    set:
-      kop.environment: prod
-      kop.bezeichner: unit
-    asserts:
-      - equal:
-          path: spec.rules[0].host
-          value: unit.afm.ozg-sh.de
-      - equal:
-          path: spec.tls[0].hosts[0]
-          value: unit.afm.ozg-sh.de
-  - it: should create afm stage host
-    set:
-      kop.environment: stage
-      kop.bezeichner: unit
-    asserts:
-      - equal:
-          path: spec.rules[0].host
-          value: unit.stage.afm.ozg-sh.de
-      - equal:
-          path: spec.tls[0].hosts[0]
-          value: unit.stage.afm.ozg-sh.de
-  - it: should set host
-    release:
-      namespace: sh-unit-stage
-    set:
-      ingress.overrideHost: https://host.dev.ozg-sh.de
-      kop.environment: dev
-      kop.bezeichner: unit
+  - it: should create afm host
     asserts:
       - equal:
           path: spec.rules[0].host
-          value: host.dev.ozg-sh.de
+          value: helm-afm.test.by.ozg-cloud.de
       - equal:
           path: spec.tls[0].hosts[0]
-          value: host.dev.ozg-sh.de
+          value: helm-afm.test.by.ozg-cloud.de
 
-  - it: should create fs dev host
-    set:
-      image.name: formsolutions-adapter
-      kop.environment: dev
-      kop.bezeichner: unit
-    asserts:
-      - equal:
-          path: spec.rules[0].host
-          value: unit-fs.dev.ozg-sh.de
-      - equal:
-          path: spec.tls[0].hosts[0]
-          value: unit-fs.dev.ozg-sh.de
-  - it: should create fs test host
-    set:
-      image.name: formsolutions-adapter
-      kop.environment: test
-      kop.bezeichner: unit
-    asserts:
-      - equal:
-          path: spec.rules[0].host
-          value: unit-fs.test.ozg-sh.de
-      - equal:
-          path: spec.tls[0].hosts[0]
-          value: unit-fs.test.ozg-sh.de
-  - it: should create fs prod host
-    set:
-      image.name: formsolutions-adapter
-      kop.environment: prod
-      kop.bezeichner: unit
-    asserts:
-      - equal:
-          path: spec.rules[0].host
-          value: unit.fs.ozg-sh.de
-      - equal:
-          path: spec.tls[0].hosts[0]
-          value: unit.fs.ozg-sh.de
-  - it: should create fs stage host
+
+  - it: should create fs host
     set:
       image.name: formsolutions-adapter
-      kop.environment: stage
-      kop.bezeichner: unit
     asserts:
       - equal:
           path: spec.rules[0].host
-          value: unit.stage.fs.ozg-sh.de
+          value: helm-fs.test.by.ozg-cloud.de
       - equal:
           path: spec.tls[0].hosts[0]
-          value: unit.stage.fs.ozg-sh.de
\ No newline at end of file
+          value: helm-fs.test.by.ozg-cloud.de
diff --git a/src/test/helm/service_monitor_test.yaml b/src/test/helm/service_monitor_test.yaml
index e20b93198..600c3f3a2 100644
--- a/src/test/helm/service_monitor_test.yaml
+++ b/src/test/helm/service_monitor_test.yaml
@@ -25,7 +25,7 @@
 suite: test deployment
 release:
   name: afm-adapter
-  namespace: sh-helm-test
+  namespace: by-helm-test
 templates:
   - templates/service_monitor.yaml
 tests:
@@ -60,7 +60,7 @@ tests:
     asserts:
       - contains:
           path: spec.namespaceSelector.matchNames
-          content: sh-helm-test
+          content: by-helm-test
   - it: selector should contain the component label with the value afm-adapter-service
     asserts:
       - equal:
@@ -73,4 +73,4 @@ tests:
           value: afm-adapter
       - equal:
           path: spec.selector.matchLabels.[app.kubernetes.io/namespace]
-          value: sh-helm-test
+          value: by-helm-test
diff --git a/src/test/helm/service_test.yaml b/src/test/helm/service_test.yaml
index f9680d60e..04b386829 100644
--- a/src/test/helm/service_test.yaml
+++ b/src/test/helm/service_test.yaml
@@ -25,7 +25,7 @@
 suite: test deployment
 release:
   name: afm-adapter
-  namespace: sh-helm-test
+  namespace: by-helm-test
 templates:
   - templates/service.yaml
 tests:
@@ -74,5 +74,5 @@ tests:
           value: afm-adapter
       - equal:
           path: spec.selector.[app.kubernetes.io/namespace]
-          value: sh-helm-test
+          value: by-helm-test
   
\ No newline at end of file
diff --git a/src/test/helm/deployment_defaults_annotaion_test.yaml b/src/test/unit-values.yaml
similarity index 60%
rename from src/test/helm/deployment_defaults_annotaion_test.yaml
rename to src/test/unit-values.yaml
index 83a5be816..da77a1e5b 100644
--- a/src/test/helm/deployment_defaults_annotaion_test.yaml
+++ b/src/test/unit-values.yaml
@@ -22,26 +22,22 @@
 # unter der Lizenz sind dem Lizenztext zu entnehmen.
 #
 
-suite: test deployment
-release:
+baseUrl: test.by.ozg-cloud.de
+
+kop:
+  environment: test
+  bezeichner: helm
+
+routing:
+  targetPlutoName: pluto
+
+image:
+  repo: docker.ozg-sh.de
   name: intelliform-adapter
-  namespace: sh-helm-test
-templates:
-  - templates/ingress.yaml
-tests:
-  - it: check ingress annotaions if traefik v2
-    set:
-      kop.environment: dev
-      kop.bezeichner: helm
-    asserts:
-      - isKind:
-          of: Ingress
-      - equal:
-          path: metadata.annotations.[kubernetes.io/ingress.class]
-          value: traefik
-      - equal:
-          path: metadata.annotations.[traefik.ingress.kubernetes.io/router.entrypoints]
-          value: websecure
-      - equal:
-          path: metadata.annotations.[traefik.ingress.kubernetes.io/router.tls]
-          value: "true"
+  tag: latest
+
+imageCredentials:
+  registry: docker.ozg-sh.de
+  username: kop
+  password:  
+  email: webmaster@ozg-sh.de
\ No newline at end of file
-- 
GitLab