From fe0aebb6238e10f14452c627aab18e2d7410c213 Mon Sep 17 00:00:00 2001 From: Felix Reichenbach <felix.reichenbach@mgm-tp.com> Date: Fri, 7 Feb 2025 15:49:21 +0100 Subject: [PATCH 1/7] Revert deleting of intelliform-helm charts This partially reverts commit 3c92f888dedc0b42eabd8f90bf0d228073f5fdd1. --- Jenkinsfile | 39 ++- pom.xml | 12 +- run_helm_test.sh | 31 +++ src/main/helm/Chart.yaml | 31 +++ src/main/helm/README.md | 100 ++++++++ src/main/helm/templates/NOTES.txt | 24 ++ src/main/helm/templates/_helpers.tpl | 133 +++++++++++ .../templates/bindings_type_configmap.yaml | 32 +++ src/main/helm/templates/deployment.yaml | 193 +++++++++++++++ src/main/helm/templates/ingress.yaml | 67 ++++++ src/main/helm/templates/network_policy.yaml | 91 +++++++ src/main/helm/templates/service.yaml | 45 ++++ src/main/helm/templates/service_account.yaml | 31 +++ src/main/helm/templates/service_monitor.yaml | 43 ++++ .../tests/test-ingress-connection.yaml | 39 +++ .../tests/test-service-connection.yaml | 39 +++ src/main/helm/values.yaml | 40 ++++ src/test/helm-linter-values.yaml | 33 +++ src/test/helm/bindings_type_test.yaml | 46 ++++ src/test/helm/deployment_63_chars_test.yaml | 56 +++++ src/test/helm/deployment_bindings_test.yaml | 75 ++++++ ...yment_container_security_context_test.yaml | 89 +++++++ ...yment_defaults_containers_health_test.yaml | 82 +++++++ .../helm/deployment_defaults_labels_test.yaml | 49 ++++ ...loyment_defaults_spec_containers_test.yaml | 75 ++++++ ...faults_topologySpreadConstraints_test.yaml | 48 ++++ .../helm/deployment_env_customList_test.yaml | 72 ++++++ .../helm/deployment_host_aliases_test.yaml | 54 +++++ .../deployment_imagepull_secret_test.yaml | 44 ++++ .../helm/deployment_liveness_probe_test.yaml | 51 ++++ ...ployment_pod_default_spec_values_test.yaml | 50 ++++ src/test/helm/deployment_resources_test.yaml | 61 +++++ .../deployment_routing_strategy_env_test.yaml | 80 +++++++ .../helm/deployment_routing_zufi_test.yaml | 89 +++++++ .../helm/deployment_service_account_test.yaml | 84 +++++++ .../deployment_springProfile_env_test.yaml | 50 ++++ ...t_general_value_and_default_spec_test.yaml | 73 ++++++ src/test/helm/ingress_create_or_not_test.yaml | 49 ++++ src/test/helm/ingress_nginx_test.yaml | 68 ++++++ src/test/helm/ingress_test.yaml | 147 ++++++++++++ src/test/helm/network_policy_test.yaml | 225 ++++++++++++++++++ src/test/helm/realm_name_length_test.yaml | 41 ++++ src/test/helm/service_account_test.yaml | 108 +++++++++ src/test/helm/service_monitor_test.yaml | 96 ++++++++ src/test/helm/service_test.yaml | 100 ++++++++ 45 files changed, 3069 insertions(+), 16 deletions(-) create mode 100755 run_helm_test.sh create mode 100644 src/main/helm/Chart.yaml create mode 100644 src/main/helm/README.md create mode 100644 src/main/helm/templates/NOTES.txt create mode 100644 src/main/helm/templates/_helpers.tpl create mode 100644 src/main/helm/templates/bindings_type_configmap.yaml create mode 100644 src/main/helm/templates/deployment.yaml create mode 100644 src/main/helm/templates/ingress.yaml create mode 100644 src/main/helm/templates/network_policy.yaml create mode 100644 src/main/helm/templates/service.yaml create mode 100644 src/main/helm/templates/service_account.yaml create mode 100644 src/main/helm/templates/service_monitor.yaml create mode 100644 src/main/helm/templates/tests/test-ingress-connection.yaml create mode 100644 src/main/helm/templates/tests/test-service-connection.yaml create mode 100644 src/main/helm/values.yaml create mode 100644 src/test/helm-linter-values.yaml create mode 100644 src/test/helm/bindings_type_test.yaml create mode 100644 src/test/helm/deployment_63_chars_test.yaml create mode 100644 src/test/helm/deployment_bindings_test.yaml create mode 100644 src/test/helm/deployment_container_security_context_test.yaml create mode 100644 src/test/helm/deployment_defaults_containers_health_test.yaml create mode 100644 src/test/helm/deployment_defaults_labels_test.yaml create mode 100644 src/test/helm/deployment_defaults_spec_containers_test.yaml create mode 100644 src/test/helm/deployment_defaults_topologySpreadConstraints_test.yaml create mode 100644 src/test/helm/deployment_env_customList_test.yaml create mode 100644 src/test/helm/deployment_host_aliases_test.yaml create mode 100644 src/test/helm/deployment_imagepull_secret_test.yaml create mode 100644 src/test/helm/deployment_liveness_probe_test.yaml create mode 100644 src/test/helm/deployment_pod_default_spec_values_test.yaml create mode 100644 src/test/helm/deployment_resources_test.yaml create mode 100644 src/test/helm/deployment_routing_strategy_env_test.yaml create mode 100644 src/test/helm/deployment_routing_zufi_test.yaml create mode 100644 src/test/helm/deployment_service_account_test.yaml create mode 100644 src/test/helm/deployment_springProfile_env_test.yaml create mode 100644 src/test/helm/deyploment_general_value_and_default_spec_test.yaml create mode 100644 src/test/helm/ingress_create_or_not_test.yaml create mode 100644 src/test/helm/ingress_nginx_test.yaml create mode 100644 src/test/helm/ingress_test.yaml create mode 100644 src/test/helm/network_policy_test.yaml create mode 100644 src/test/helm/realm_name_length_test.yaml create mode 100644 src/test/helm/service_account_test.yaml create mode 100644 src/test/helm/service_monitor_test.yaml create mode 100644 src/test/helm/service_test.yaml diff --git a/Jenkinsfile b/Jenkinsfile index 8779b9c4f..eba345c98 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -68,7 +68,7 @@ pipeline { if ( !isSameVersion([commonVersion, routerVersion, formCycleAdapterVersion, enterpriseAdapterVersion], rootVersion)) { error("Versionen sind nicht identisch") - } + } } } } @@ -88,10 +88,10 @@ pipeline { } configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { sh "mvn -s $MAVEN_SETTINGS versions:set -DnewVersion=${JAR_TAG} -DprocessAllModules=true" - + } } - } + } stage('Build Eingang-Adapter') { steps { script { @@ -100,12 +100,12 @@ pipeline { configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { sh 'mvn --version' sh 'mvn -s $MAVEN_SETTINGS -P ci-build clean install -Dmaven.wagon.http.retryHandler.count=3' - + script { try { if (env.BRANCH_NAME == 'main') { withSonarQubeEnv('sonarqube-ozg-sh'){ - sh 'mvn -s $MAVEN_SETTINGS sonar:sonar' + sh 'mvn -s $MAVEN_SETTINGS sonar:sonar' } } } catch (Exception e) { @@ -154,6 +154,23 @@ pipeline { } } + stage('Test, build and deploy Intelliform-Adapter Helm Chart') { + steps { + script { + FAILED_STAGE=env.STAGE_NAME + HELM_CHART_VERSION = buildVersionName() + + sh "./run_helm_test.sh" + + dir('src/main/helm') { + sh "helm package --version=${HELM_CHART_VERSION} ." + + deployHelmChart("Intelliform-Adapter", HELM_CHART_VERSION) + } + } + } + } + stage('Trigger Dev rollout') { when { branch 'main' @@ -217,7 +234,7 @@ pipeline { } } -Void deployHelmChart(String helmChartName, String helmChartVersion) { +Void deployHelmChart(String helmChartName, String helmChartVersion) { withCredentials([usernamePassword(credentialsId: 'jenkins-nexus-login', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]){ if (env.BRANCH_NAME == 'release') { result = sh script: '''curl -u $USERNAME:$PASSWORD https://nexus.ozg-sh.de/service/rest/v1/components?repository=ozg-base-apps -F file=@'''+helmChartName+'''-'''+helmChartVersion+'''.tgz''', returnStdout: true @@ -256,7 +273,7 @@ Void sendFailureMessage() { "body":"Eingang-Manager: Build Failed. Stage: ${FAILED_STAGE} Build-ID: ${env.BUILD_NUMBER} Link: ${JENKINS_URL}", \ "format": "org.matrix.custom.html", \ "formatted_body":"Eingang-Manager: Build Failed. Stage: ${FAILED_STAGE} Build-ID: <a href='${JENKINS_URL}'>${env.BUILD_NUMBER}</a>"}""" - + if (env.BRANCH_NAME == 'main') { room = "!GjqhmouBtnDbwUkAjx:matrix.ozg-sh.de" } @@ -292,7 +309,7 @@ Void setNewFormcycleAdapterVersion(String environment) { envVersions.formcycle_adapter.helm.version = HELM_CHART_VERSION writeYaml file: envFile, data: envVersions, overwrite: true - } + } } Void setNewEnterpriseAdapterVersion(String environment) { @@ -304,7 +321,7 @@ Void setNewEnterpriseAdapterVersion(String environment) { envVersions.enterprise_adapter.helm.version = HELM_CHART_VERSION writeYaml file: envFile, data: envVersions, overwrite: true - } + } } Void pushNewDevVersion() { @@ -320,8 +337,8 @@ Void pushNewGitopsVersion(String environment) { if (!hasAdapterValuesFileChanged(environment)) { return } - - withCredentials([usernamePassword(credentialsId: 'jenkins-gitea-access-token', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) { + + withCredentials([usernamePassword(credentialsId: 'jenkins-gitea-access-token', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) { sh "git add ${environment}/application/values/*-adapter-values.yaml" sh "git commit -m 'jenkins rollout ${environment} eingang-manager version ${IMAGE_TAG}'" diff --git a/pom.xml b/pom.xml index 700589324..b5ba996e2 100644 --- a/pom.xml +++ b/pom.xml @@ -24,7 +24,9 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> @@ -32,7 +34,7 @@ <groupId>de.ozgcloud.common</groupId> <artifactId>ozgcloud-common-parent</artifactId> <version>4.9.0</version> - <relativePath/> <!-- lookup parent from repository --> + <relativePath /> <!-- lookup parent from repository --> </parent> <groupId>de.ozgcloud.eingang</groupId> @@ -48,8 +50,8 @@ <module>semantik-adapter</module> <module>formcycle-adapter</module> <module>enterprise-adapter</module> - <module>fim-adapter</module> - </modules> + <module>fim-adapter</module> + </modules> <properties> <vorgang-manager.version>2.10.0</vorgang-manager.version> @@ -205,4 +207,4 @@ </snapshotRepository> </distributionManagement> -</project> +</project> \ No newline at end of file diff --git a/run_helm_test.sh b/run_helm_test.sh new file mode 100755 index 000000000..8f4005a2c --- /dev/null +++ b/run_helm_test.sh @@ -0,0 +1,31 @@ +#!/bin/sh +# +# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + + +set -e + +helm template ./src/main/helm/ -f src/test/helm-linter-values.yaml +helm lint -f src/test/helm-linter-values.yaml ./src/main/helm/ +cd src/main/helm && helm unittest -f '../../test/helm/**/*.yaml' . \ No newline at end of file diff --git a/src/main/helm/Chart.yaml b/src/main/helm/Chart.yaml new file mode 100644 index 000000000..2b05d0cc4 --- /dev/null +++ b/src/main/helm/Chart.yaml @@ -0,0 +1,31 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +apiVersion: v1 +appVersion: "1.1" +description: A Helm chart for Intelliform Adapter +name: Intelliform-Adapter +version: 0.0.0-MANAGED-BY-JENKINS +icon: https://simpleicons.org/icons/helm.svg + diff --git a/src/main/helm/README.md b/src/main/helm/README.md new file mode 100644 index 000000000..67032f537 --- /dev/null +++ b/src/main/helm/README.md @@ -0,0 +1,100 @@ +# Intelliform Adapter + +Adapter zum empfangen von Formulardaten von einem IntellForm basierten Formularserver, zum Beispiel iAFM (integriertes Antrags- und Formularmanagement). + +## Routingkonfiguration + +### Vorgang-Manager Instanzen + +Für alle Vorgang-Manager-Instanzen, die von dem Adapter erreichbar sein sollen, muss in das _Environment_ ein Eintrag mit dem GRPC-Service ergänzt werden: + +```yaml +grpc.client.vorgang-manager-*vorgang-manager-name*.address:*url und port* +grpc.client.vorgang-manager-*vorgang-manager-name*.negotiationType: PLAINTEXT +``` + +### Fallback Strategy + +Die Fallback Stratey steuert wie mit Eingängen umgegangen werden soll, für die keine passende Vorgang-Manager-Instanze gefunden werden konnte. + +Folgende Optionen stehen zur Verfügung: + +- **DENY** der Antrag wird mit einer Fehlermeldung abgelehnt. Dies funktioniert nur, solange die Abarbeitung synchron erfolgt. + +- **FUNDSTELLE** der Antrag wird an eine zentrale Fundstelle weitergeleitet. Dafür muss der Name der Vorgang-Manager-Instanze, die als Fundstelle fungiert, eingetragen werden. + +### Routing Strategy + +Die Routing Strategy steuert wie das Routing konfiguriert wird und wieviele Vorgang-Manager-Instanzen berücksichtigt werden können. + +Folgende Optionen stehen zur Verfügung: + +- **MULTI** es kann an beliebig viele Vorgang-Manager-Instanzen geroutet werden. Dafür muss in der Environment ein Mapping der Organisationseinheit-Id auf den Namen einer Vorgang-Manager-Instanz konfiguriert werden. + +```yaml +ozgcloud.adapter.organisationseinheiten.*id*: *vorgang-manager-name* +``` + +- **SINGLE** es wird immer nur an eine Vorgang-Manager-Instanze geroutet, der Name der Instanz ist im Feld 'Vorgang-Manager Name' anzugeben. + +### Beispielkonfiguration + +```yaml +env: + springProfiles: "oc, dev" + grpc: + - name: grpc_client_vorgang-manager-test_address + value: "vorgang-manager.test:9090" + - name: grpc_client_vorgang-manager-test_negotiationType + value: PLAINTEXT + - name: ozgcloud.adapter.organisationseinheiten.1357913579 + value: test +image: + tag: snapshot-latest +imageCredentials: + email: webmaster@ozg-sh.de + password: + registry: docker.ozg-sh.de + username: ozgcloud +ingress: + host: kiel-afm.dev.by.ozg-cloud.de +replicaCount: 2 +resources: + limits: + cpu: 1 + memory: 1200Mi + requests: + cpu: 100m + memory: 250Mi +global: + cattle: + clusterId: c-8g78g + clusterName: ozg-dev + systemDefaultRegistry: "" + systemDefaultRegistry: "" +routing: + fallbackStrategy: FUNDSTELLE + fundstelleVorgangManagerName: kiel + routingStrategy: MULTI + targetVorgangManagerName: kiel +``` + +### Benutzung beliebiger environment Werte + +In jedem der Projekte kann man beliebige weitere environments setzen. Dazu muss man in der jeweiligen values.yaml unter env.customList ein name value Paar setzen: + +```yaml +env: + customList: + - name: Dinge + value: true + - name: ... + value: ... +``` + +```yaml +env: + customList: + key_1: value_1 + key_2: value_2 +``` \ No newline at end of file diff --git a/src/main/helm/templates/NOTES.txt b/src/main/helm/templates/NOTES.txt new file mode 100644 index 000000000..0fa4f7107 --- /dev/null +++ b/src/main/helm/templates/NOTES.txt @@ -0,0 +1,24 @@ +==== + Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. +==== + diff --git a/src/main/helm/templates/_helpers.tpl b/src/main/helm/templates/_helpers.tpl new file mode 100644 index 000000000..5578089ba --- /dev/null +++ b/src/main/helm/templates/_helpers.tpl @@ -0,0 +1,133 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +{{/* vim: set filetype=mustache: */}} + +{{/* error check 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec) */}} +{{/* Namespace */}} +{{- define "app.namespace" -}} +{{- if gt (len (.Release.Namespace)) 63 -}} +{{- fail (printf ".Release.Namespace %s ist zu lang (max. 63 Zeichen)" .Release.Namespace) -}} +{{- end -}} +{{ printf "%s" .Release.Namespace }} +{{- end -}} + +{{/* Chart: Name + Version */}} +{{- define "app.chart" -}} +{{- if gt (len (printf "%s-%s" .Chart.Name .Chart.Version)) 63 -}} +{{- fail (printf ".Chart.Name-.Chart.Version %s-%s ist zu lang (max. 63 Zeichen)" .Chart.Name .Chart.Version) -}} +{{- end -}} +{{ printf "%s-%s" .Chart.Name .Chart.Version }} +{{- end -}} + +{{/* Managed-by -> On Helm, this value is always Helm */}} +{{- define "app.managedBy" -}} +{{- if gt (len (.Release.Service)) 63 -}} +{{- fail (printf ".Release.Service %s ist zu lang (max. 63 Zeichen)" .Release.Service) -}} +{{- end -}} +{{ printf "%s" .Release.Service }} +{{- end -}} + +{{/* Default Labels: Helm recommended best-practice labels https://helm.sh/docs/chart_best_practices/labels/ */}} +{{- define "app.defaultLabels" }} +app.kubernetes.io/instance: afm-adapter +app.kubernetes.io/managed-by: {{ include "app.managedBy" . }} +app.kubernetes.io/name: {{ .Release.Name }} +app.kubernetes.io/part-of: ozgcloud +app.kubernetes.io/version: {{ .Chart.Version }} +app.kubernetes.io/namespace: {{ include "app.namespace" . }} +helm.sh/chart: {{ include "app.chart" . }} +ozg-component: eingangsadapter +{{- end -}} + +{{- define "app.matchLabels" }} +app.kubernetes.io/name: {{ .Release.Name }} +app.kubernetes.io/namespace: {{ include "app.namespace" . }} +{{- end -}} + + +{{- define "app.envSpringProfiles" }} +{{- if (.Values.env).overrideSpringProfiles -}} +{{ printf "%s" (.Values.env).overrideSpringProfiles }} +{{- else -}} +{{ printf "oc, %s" (include "app.ozgcloudEnvironment" . ) }} +{{- end -}} +{{- end -}} + +{{- define "app.ozgcloudEnvironment" -}} +{{- required "Environment muss angegeben sein" (.Values.ozgcloud).environment -}} +{{- end -}} + +{{- define "app.ozgcloudBezeichner" -}} +{{ $length := len (.Values.ozgcloud).bezeichner }} +{{- if ge 46 $length -}} +{{ (.Values.ozgcloud).bezeichner }} +{{- else -}} +{{ required (printf "Bezeichner %s ist zu lang (max. 46 Zeichen)" (.Values.ozgcloud).bezeichner) nil }} +{{- end -}} +{{- end -}} + +{{- define "app.ingress.host" }} +{{- if (.Values.ingress).adapterBezeichner }} +{{- printf "%s-%s.%s" (include "app.ozgcloudBezeichner" .) .Values.ingress.adapterBezeichner .Values.baseUrl }} +{{- else if eq (.Values.image).name "formsolutions-adapter" }} +{{- printf "%s-fs.%s" (include "app.ozgcloudBezeichner" .) .Values.baseUrl }} +{{- else if eq (.Values.image).name "formcycle-adapter" }} +{{- printf "%s-formcycle.%s" (include "app.ozgcloudBezeichner" .) .Values.baseUrl }} +{{- else }} +{{- printf "%s-afm.%s" (include "app.ozgcloudBezeichner" .) .Values.baseUrl }} +{{- end }} +{{- end -}} + +{{- define "app.serviceAccountName" -}} +{{- if (.Values.serviceAccount).name }} +{{- printf "%s" .Values.serviceAccount.name }} +{{- else if eq (.Values.image).name "intelliform-adapter" }} +{{- printf "afm-adapter-service-account" }} +{{- else if eq (.Values.image).name "formsolutions-adapter" }} +{{- printf "fs-adapter-service-account" }} +{{- else if eq (.Values.image).name "formcycle-adapter" }} +{{- printf "formcycle-adapter-service-account" }} +{{- else if eq (.Values.image).name "enterprise-adapter" }} +{{- printf "enterprise-adapter-service-account" }} +{{- end }} +{{- end -}} + +{{- define "app.getCustomList" -}} +{{- with (.Values.env).customList -}} +{{- if kindIs "map" . -}} +{{ include "app.dictToList" . }} +{{- else if kindIs "slice" . -}} +{{ . | toYaml }} +{{- end -}} +{{- end -}} +{{- end -}} + +{{- define "app.dictToList" -}} +{{- $customList := list -}} +{{- range $key, $value := . -}} +{{- $customList = append $customList (dict "name" $key "value" $value) }} +{{- end -}} +{{- $customList | toYaml -}} +{{- end -}} \ No newline at end of file diff --git a/src/main/helm/templates/bindings_type_configmap.yaml b/src/main/helm/templates/bindings_type_configmap.yaml new file mode 100644 index 000000000..d1b873e06 --- /dev/null +++ b/src/main/helm/templates/bindings_type_configmap.yaml @@ -0,0 +1,32 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ .Release.Name }}-bindings-type + namespace: {{ include "app.namespace" . }} +data: + type: | + ca-certificates \ No newline at end of file diff --git a/src/main/helm/templates/deployment.yaml b/src/main/helm/templates/deployment.yaml new file mode 100644 index 000000000..b59bb1cc4 --- /dev/null +++ b/src/main/helm/templates/deployment.yaml @@ -0,0 +1,193 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ .Release.Name }} + namespace: {{ include "app.namespace" . }} + labels: + {{- include "app.defaultLabels" . | indent 4 }} +spec: + progressDeadlineSeconds: 600 + replicas: {{ .Values.replicaCount }} + revisionHistoryLimit: 10 + selector: + matchLabels: + {{- include "app.matchLabels" . | indent 6 }} + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 0 + type: RollingUpdate + template: + metadata: + labels: + {{- include "app.defaultLabels" . | indent 8 }} + component: afm-adapter + spec: + {{- if (.Values.serviceAccount).create }} + serviceAccountName: {{ include "app.serviceAccountName" . }} + {{- end }} + topologySpreadConstraints: + - maxSkew: 1 + topologyKey: kubernetes.io/hostname + whenUnsatisfiable: DoNotSchedule + labelSelector: + matchLabels: + app.kubernetes.io/name: {{ .Release.Name }} + containers: + - env: + - name: SERVICE_BINDING_ROOT + value: "/bindings" + {{- range (.Values.env).grpc }} + - name: {{ .name }} + value: {{ .value }} + {{- end }} + - name: spring_profiles_active + value: {{ include "app.envSpringProfiles" . }} + - name: ozgcloud_adapter_fallbackStrategy + value: {{ (.Values.routing).fallbackStrategy | default "DENY"}} + {{- if (.Values.routing).fundstelleVorgangManagerName}} + - name: ozgcloud_adapter_fundstelleVorgangManagerName + value: {{ .Values.routing.fundstelleVorgangManagerName }} + {{- end }} + - name: ozgcloud_adapter_routingStrategy + value: {{ (.Values.routing).routingStrategy | default "SINGLE"}} + {{- if (.Values.routing).targetVorgangManagerName }} + - name: ozgcloud_adapter_targetVorgangManagerName + value: {{ (.Values.routing).targetVorgangManagerName}} + - name: grpc_client_vorgang-manager-{{ (.Values.routing).targetVorgangManagerName}}_address + value: 'dns:///vorgang-manager.{{ coalesce (.Values.routing).targetNamespace .Release.Namespace }}:9090' + - name: grpc_client_vorgang-manager-{{ (.Values.routing).targetVorgangManagerName}}_negotiationType + value: {{ (.Values.routing).negotiationType | default "TLS" }} + {{- end }} + {{- if eq (.Values.routing).routingStrategy "ZUFI" }} + - name: grpc_client_zufi-manager_address + value: {{ required "routing.zufiManager.address must be set when routingStrategy=ZUFI" ((.Values.routing).zufiManager).address | quote }} + - name: grpc_client_zufi-manager_negotiationType + value: {{ ((.Values.routing).zufiManager).negotiationType | default "PLAINTEXT" }} + {{- end }} + + {{- with include "app.getCustomList" . }} +{{ . | indent 8 }} + {{- end }} + image: "{{ .Values.image.repo }}/{{ .Values.image.name }}:{{ coalesce (.Values.image).tag "latest" }}" + imagePullPolicy: Always + name: intelliform-adapter + ports: + - containerPort: 8080 + name: 8080tcp1 + protocol: TCP + - containerPort: 8081 + name: metrics + protocol: TCP + readinessProbe: + failureThreshold: 3 + httpGet: + path: /actuator/health/readiness + port: 8081 + scheme: HTTP + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 3 + startupProbe: + failureThreshold: 10 + httpGet: + path: /actuator/health/readiness + port: 8081 + scheme: HTTP + initialDelaySeconds: 30 + periodSeconds: 5 + successThreshold: 1 + timeoutSeconds: 5 + {{- if .Values.enableLivenessProbe }} + livenessProbe: + failureThreshold: 3 + httpGet: + path: /actuator/health/liveness + port: 8081 + scheme: HTTP + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 3 + {{- end }} + resources: + {{- with .Values.resources }} +{{ toYaml . | indent 10 }} + {{- end }} + securityContext: + allowPrivilegeEscalation: false + privileged: false + readOnlyRootFilesystem: false + runAsNonRoot: true + {{- with (.Values.securityContext).runAsUser }} + runAsUser: {{ . }} + {{- end }} + {{- with (.Values.securityContext).runAsGroup }} + runAsGroup: {{ . }} + {{- end }} + {{- with (.Values.securityContext).capabilities }} + capabilities: +{{ toYaml . | indent 12 }} + {{- end }} + stdin: true + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + tty: true + volumeMounts: + - name: temp-dir + mountPath: "/tmp" + - name: namespace-ca-cert + mountPath: "/bindings/namespace-certificate" + readOnly: true + volumes: + - name: temp-dir + emptyDir: {} + - name: namespace-ca-cert + projected: + sources: + - secret: + name: {{ include "app.namespace" . }}-ca-cert + optional: true + items: + - key: ca.crt + path: ca.crt + - configMap: + name: {{ .Release.Name }}-bindings-type + dnsConfig: {} + dnsPolicy: ClusterFirst + imagePullSecrets: + - name: {{ required "imagePullSecret must be set" .Values.imagePullSecret }} + restartPolicy: Always + {{- with .Values.hostAliases }} + hostAliases: +{{ toYaml . | indent 8 }} + {{- end }} + schedulerName: default-scheduler + {{- with .Values.podSecurityContext }} + securityContext: +{{ toYaml . | indent 8 }} + {{- end }} + terminationGracePeriodSeconds: 30 \ No newline at end of file diff --git a/src/main/helm/templates/ingress.yaml b/src/main/helm/templates/ingress.yaml new file mode 100644 index 000000000..fa2ba46fe --- /dev/null +++ b/src/main/helm/templates/ingress.yaml @@ -0,0 +1,67 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +{{- if (.Values.ingress).enabled }} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + annotations: + {{- with (.Values.ingress).annotations }} +{{ toYaml . | indent 4 }} + {{- end }} + {{- if not (.Values.ingress).disableDefaultCertManager }} + {{- if (.Values.ingress).use_staging_cert }} + cert-manager.io/cluster-issuer: letsencrypt-staging + {{- else }} + cert-manager.io/cluster-issuer: letsencrypt-prod + {{- end }} + {{- end }} + name: {{ .Release.Name }} + namespace: {{ include "app.namespace" . }} +spec: + {{- if and (.Values.ingress).className }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + rules: + - http: + paths: + - backend: + service: + port: + number: 8080 + name: {{ .Release.Name }} + path: '' + pathType: ImplementationSpecific + host: {{ include "app.ingress.host" . }} + tls: + - hosts: + - {{ include "app.ingress.host" . }} + {{- if not (.Values.ingress).skipTlsSecret -}} + {{- if (.Values.ingress).tlsSecretName }} + secretName: {{ (.Values.ingress).tlsSecretName }} + {{- else }} + secretName: {{ .Values.ozgcloud.bezeichner }}-{{ .Release.Name }}-tls + {{- end }} + {{- end }} +{{- end -}} \ No newline at end of file diff --git a/src/main/helm/templates/network_policy.yaml b/src/main/helm/templates/network_policy.yaml new file mode 100644 index 000000000..17f7bc782 --- /dev/null +++ b/src/main/helm/templates/network_policy.yaml @@ -0,0 +1,91 @@ +# +# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +{{- if not (.Values.networkPolicy).disabled }} +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: network-policy-{{ .Release.Name}} + namespace: {{ .Release.Namespace }} +spec: + podSelector: + matchLabels: + ozg-component: eingangsadapter + policyTypes: + - Ingress + - Egress + ingress: + - ports: + - port: 8080 + - from: + - namespaceSelector: + matchLabels: + name: {{ (.Values.networkPolicy).monitoringNamespace | default "openshift-user-workload-monitoring" }} + ports: + - protocol: TCP + port: 8081 + egress: + - to: + - podSelector: + matchLabels: + component: vorgang-manager + ports: + - port: 9090 + protocol: TCP + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: {{ required "networkPolicy.dnsServerNamespace must be set" (.Values.networkPolicy).dnsServerNamespace }} + ports: + - port: 53 + protocol: UDP + - port: 53 + protocol: TCP + - port: 5353 + protocol: UDP + - port: 5353 + protocol: TCP + +{{- if eq (.Values.routing).routingStrategy "ZUFI" }} + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: {{ required "routing.zufiManager.namespace must be set if routingStrategy=ZUFI" ((.Values.routing).zufiManager).namespace }} + podSelector: + matchLabels: + component: zufi-server + ports: + - port: 9090 + protocol: TCP + - to: + - namespaceSelector: {} + podSelector: + matchLabels: + component: vorgang-manager + ports: + - port: 9090 + protocol: TCP +{{- end }} + +{{- end }} \ No newline at end of file diff --git a/src/main/helm/templates/service.yaml b/src/main/helm/templates/service.yaml new file mode 100644 index 000000000..93574b29b --- /dev/null +++ b/src/main/helm/templates/service.yaml @@ -0,0 +1,45 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +apiVersion: v1 +kind: Service +metadata: + name: {{ .Release.Name }} + namespace: {{ include "app.namespace" . }} + labels: + {{- include "app.defaultLabels" . | indent 4 }} + component: afm-adapter-service +spec: + ports: + - name: http + port: 8080 + protocol: TCP + targetPort: 8080 + - name: metrics + port: 8081 + protocol: TCP + type: ClusterIP + selector: + {{- include "app.matchLabels" . | indent 4 }} + component: afm-adapter \ No newline at end of file diff --git a/src/main/helm/templates/service_account.yaml b/src/main/helm/templates/service_account.yaml new file mode 100644 index 000000000..33de9e322 --- /dev/null +++ b/src/main/helm/templates/service_account.yaml @@ -0,0 +1,31 @@ +# +# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +{{- if (.Values.serviceAccount).create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "app.serviceAccountName" . }} + namespace: {{ include "app.namespace" . }} +{{- end }} \ No newline at end of file diff --git a/src/main/helm/templates/service_monitor.yaml b/src/main/helm/templates/service_monitor.yaml new file mode 100644 index 000000000..053a25810 --- /dev/null +++ b/src/main/helm/templates/service_monitor.yaml @@ -0,0 +1,43 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ .Release.Name }} + namespace: {{ include "app.namespace" . }} + labels: + {{- include "app.defaultLabels" . | indent 4 }} + component: afm-adapter-service-monitor +spec: + endpoints: + - port: metrics + path: /actuator/prometheus + namespaceSelector: + matchNames: + - {{ include "app.namespace" . }} + selector: + matchLabels: + {{- include "app.matchLabels" . | indent 6 }} + component: afm-adapter-service \ No newline at end of file diff --git a/src/main/helm/templates/tests/test-ingress-connection.yaml b/src/main/helm/templates/tests/test-ingress-connection.yaml new file mode 100644 index 000000000..6d33a4e54 --- /dev/null +++ b/src/main/helm/templates/tests/test-ingress-connection.yaml @@ -0,0 +1,39 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-test-ingress" + labels: + {{- include "app.matchLabels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['https://{{ .Values.ingress.host }}/ws/intelliform_formDatas.wsdl'] + restartPolicy: Never diff --git a/src/main/helm/templates/tests/test-service-connection.yaml b/src/main/helm/templates/tests/test-service-connection.yaml new file mode 100644 index 000000000..62dda4f5e --- /dev/null +++ b/src/main/helm/templates/tests/test-service-connection.yaml @@ -0,0 +1,39 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-test-connection" + labels: + {{- include "app.matchLabels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ .Release.Name }}:8080/ws/intelliform_formDatas.wsdl'] + restartPolicy: Never diff --git a/src/main/helm/values.yaml b/src/main/helm/values.yaml new file mode 100644 index 000000000..118009532 --- /dev/null +++ b/src/main/helm/values.yaml @@ -0,0 +1,40 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +baseUrl: test.sh.ozg-cloud.de + +image: + repo: docker.ozg-sh.de + name: intelliform-adapter # [default: intelliform-adapter] + tag: latest # [default: latest] + + +ingress: + enabled: true + # overrideHost: kiel-afm.dev.by.ozg-cloud.de + +routing: + targetVorgangManagerName: vorgang-manager +# fallbackStrategy: DENY +# routingStrategy: SINGLE diff --git a/src/test/helm-linter-values.yaml b/src/test/helm-linter-values.yaml new file mode 100644 index 000000000..64913958b --- /dev/null +++ b/src/test/helm-linter-values.yaml @@ -0,0 +1,33 @@ +# +# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +ozgcloud: + environment: test + bezeichner: helm + bundesland: sh + +networkPolicy: + dnsServerNamespace: test-dns-server-namespace + +imagePullSecret: image-pull-secret \ No newline at end of file diff --git a/src/test/helm/bindings_type_test.yaml b/src/test/helm/bindings_type_test.yaml new file mode 100644 index 000000000..f55012888 --- /dev/null +++ b/src/test/helm/bindings_type_test.yaml @@ -0,0 +1,46 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test bindings type configmap +templates: + - templates/bindings_type_configmap.yaml +release: + name: eingang-manager + namespace: sh-helm-test +tests: + - it: xta bindings type + asserts: + - isKind: + of: ConfigMap + - isAPIVersion: + of: v1 + - equal: + path: metadata.name + value: eingang-manager-bindings-type + - equal: + path: metadata.namespace + value: sh-helm-test + - equal: + path: data.type + value: ca-certificates diff --git a/src/test/helm/deployment_63_chars_test.yaml b/src/test/helm/deployment_63_chars_test.yaml new file mode 100644 index 000000000..417144739 --- /dev/null +++ b/src/test/helm/deployment_63_chars_test.yaml @@ -0,0 +1,56 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deyploment less than 63 chars +release: + name: eingang-manager + namespace: sh-helm-test + +chart: + name: eingang-manager +set: + ozgcloud.environment: test + imagePullSecret: image-pull-secret +templates: + - templates/deployment.yaml + +tests: + - it: should fail on .Release.Namespace length longer than 63 characters + release: + namespace: test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 + asserts: + - failedTemplate: + errorMessage: .Release.Namespace test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 63 Zeichen) + - it: should not fail on .Release.Namespace length less than 63 characters + asserts: + - notFailedTemplate: {} + - it: should fail on .Chart.Name-.Chart.Version length longer than 63 characters + chart: + version: 1.0-test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 + asserts: + - failedTemplate: + errorMessage: .Chart.Name-.Chart.Version Intelliform-Adapter-1.0-test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 63 Zeichen) + - it: should not fail on .Chart.Name-.Chart.Version length less than 63 characters + asserts: + - notFailedTemplate: {} \ No newline at end of file diff --git a/src/test/helm/deployment_bindings_test.yaml b/src/test/helm/deployment_bindings_test.yaml new file mode 100644 index 000000000..f4e0f24ea --- /dev/null +++ b/src/test/helm/deployment_bindings_test.yaml @@ -0,0 +1,75 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: deployment bindings +templates: + - templates/deployment.yaml +release: + name: eingang-manager + namespace: sh-helm-test +set: + ozgcloud.environment: test + imagePullSecret: image-pull-secret +tests: + - it: should have temp-dir volume + asserts: + - contains: + path: spec.template.spec.containers[0].volumeMounts + content: + name: temp-dir + mountPath: "/tmp" + + - it: should have temp-dir volume mount + asserts: + - contains: + path: spec.template.spec.volumes + content: + name: temp-dir + emptyDir: {} + + - it: should have projected namespace-ca-cert volume + asserts: + - contains: + path: spec.template.spec.volumes + content: + name: namespace-ca-cert + projected: + sources: + - secret: + name: sh-helm-test-ca-cert + optional: true + items: + - key: ca.crt + path: ca.crt + - configMap: + name: eingang-manager-bindings-type + + - it: should have namespace-ca-cert volume mount + asserts: + - contains: + path: spec.template.spec.containers[0].volumeMounts + content: + name: namespace-ca-cert + mountPath: "/bindings/namespace-certificate" + readOnly: true \ No newline at end of file diff --git a/src/test/helm/deployment_container_security_context_test.yaml b/src/test/helm/deployment_container_security_context_test.yaml new file mode 100644 index 000000000..6076fdc7a --- /dev/null +++ b/src/test/helm/deployment_container_security_context_test.yaml @@ -0,0 +1,89 @@ +# +# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment container security +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test + imagePullSecret: image-pull-secret +tests: + - it: check default values + asserts: + - equal: + path: spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation + value: false + - equal: + path: spec.template.spec.containers[0].securityContext.privileged + value: false + - equal: + path: spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem + value: false + - equal: + path: spec.template.spec.containers[0].securityContext.runAsNonRoot + value: true + - isNull: + path: spec.template.spec.containers[0].securityContext.runAsUser + - isNull: + path: spec.template.spec.containers[0].securityContext.runAsGroup + - isNull: + path: spec.template.spec.securityContext.fsGroup + - isNull: + path: spec.template.spec.containers[0].securityContext.capabilities + - it: check runAsUser + set: + securityContext.runAsUser: 1000 + asserts: + - equal: + path: spec.template.spec.containers[0].securityContext.runAsUser + value: 1000 + - it: check runAsGroup + set: + securityContext.runAsGroup: 1000 + asserts: + - equal: + path: spec.template.spec.containers[0].securityContext.runAsGroup + value: 1000 + - it: check fsGroup + set: + podSecurityContext.fsGroup: 1000 + asserts: + - equal: + path: spec.template.spec.securityContext.fsGroup + value: 1000 + - it: check capabilities + set: + securityContext: + capabilities: + drop: + - ALL + asserts: + - equal: + path: spec.template.spec.containers[0].securityContext.capabilities + value: + drop: + - ALL \ No newline at end of file diff --git a/src/test/helm/deployment_defaults_containers_health_test.yaml b/src/test/helm/deployment_defaults_containers_health_test.yaml new file mode 100644 index 000000000..0ee7a6d76 --- /dev/null +++ b/src/test/helm/deployment_defaults_containers_health_test.yaml @@ -0,0 +1,82 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment health check +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test + imagePullSecret: image-pull-secret +tests: + - it: should have correct health check values + asserts: + - equal: + path: spec.template.spec.containers[0].readinessProbe.failureThreshold + value: 3 + - equal: + path: spec.template.spec.containers[0].readinessProbe.httpGet.path + value: /actuator/health/readiness + - equal: + path: spec.template.spec.containers[0].readinessProbe.httpGet.port + value: 8081 + - equal: + path: spec.template.spec.containers[0].readinessProbe.httpGet.scheme + value: HTTP + - equal: + path: spec.template.spec.containers[0].readinessProbe.periodSeconds + value: 10 + - equal: + path: spec.template.spec.containers[0].readinessProbe.successThreshold + value: 1 + - equal: + path: spec.template.spec.containers[0].readinessProbe.timeoutSeconds + value: 3 + - equal: + path: spec.template.spec.containers[0].startupProbe.failureThreshold + value: 10 + - equal: + path: spec.template.spec.containers[0].startupProbe.httpGet.path + value: /actuator/health/readiness + - equal: + path: spec.template.spec.containers[0].startupProbe.httpGet.port + value: 8081 + - equal: + path: spec.template.spec.containers[0].startupProbe.httpGet.scheme + value: HTTP + - equal: + path: spec.template.spec.containers[0].startupProbe.initialDelaySeconds + value: 30 + - equal: + path: spec.template.spec.containers[0].startupProbe.periodSeconds + value: 5 + - equal: + path: spec.template.spec.containers[0].startupProbe.successThreshold + value: 1 + - equal: + path: spec.template.spec.containers[0].startupProbe.timeoutSeconds + value: 5 + \ No newline at end of file diff --git a/src/test/helm/deployment_defaults_labels_test.yaml b/src/test/helm/deployment_defaults_labels_test.yaml new file mode 100644 index 000000000..4e2d5f7fd --- /dev/null +++ b/src/test/helm/deployment_defaults_labels_test.yaml @@ -0,0 +1,49 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment default label +release: + name: intelliform-adapter + namespace: sh-helm-test +templates: + - templates/deployment.yaml + +set: + ozgcloud.environment: test + imagePullSecret: image-pull-secret +tests: + - it: check default labels + asserts: + - equal: + path: metadata.labels + value: + app.kubernetes.io/instance: afm-adapter + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: intelliform-adapter + app.kubernetes.io/namespace: sh-helm-test + app.kubernetes.io/part-of: ozgcloud + app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS + helm.sh/chart: Intelliform-Adapter-0.0.0-MANAGED-BY-JENKINS + ozg-component: eingangsadapter + diff --git a/src/test/helm/deployment_defaults_spec_containers_test.yaml b/src/test/helm/deployment_defaults_spec_containers_test.yaml new file mode 100644 index 000000000..07d4b6ee7 --- /dev/null +++ b/src/test/helm/deployment_defaults_spec_containers_test.yaml @@ -0,0 +1,75 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment actuator +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test + imagePullSecret: image-pull-secret +tests: + - it: check for some standard values + asserts: + - equal: + path: spec.template.spec.containers[0].image + value: docker.ozg-sh.de/intelliform-adapter:latest + - equal: + path: spec.template.spec.containers[0].imagePullPolicy + value: Always + - equal: + path: spec.template.spec.containers[0].name + value: intelliform-adapter + - equal: + path: spec.template.spec.containers[0].ports[0].containerPort + value: 8080 + - equal: + path: spec.template.spec.containers[0].ports[0].name + value: 8080tcp1 + - equal: + path: spec.template.spec.containers[0].ports[0].protocol + value: TCP + - equal: + path: spec.template.spec.containers[0].stdin + value: true + - equal: + path: spec.template.spec.containers[0].terminationMessagePath + value: /dev/termination-log + - equal: + path: spec.template.spec.containers[0].terminationMessagePolicy + value: File + - equal: + path: spec.template.spec.containers[0].tty + value: true + - equal: + path: spec.template.spec.containers[0].ports[1].containerPort + value: 8081 + - equal: + path: spec.template.spec.containers[0].ports[1].name + value: metrics + - equal: + path: spec.template.spec.containers[0].ports[1].protocol + value: TCP \ No newline at end of file diff --git a/src/test/helm/deployment_defaults_topologySpreadConstraints_test.yaml b/src/test/helm/deployment_defaults_topologySpreadConstraints_test.yaml new file mode 100644 index 000000000..ccacfe793 --- /dev/null +++ b/src/test/helm/deployment_defaults_topologySpreadConstraints_test.yaml @@ -0,0 +1,48 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment topology +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test + imagePullSecret: image-pull-secret +tests: + - it: check default values + asserts: + - equal: + path: spec.template.spec.topologySpreadConstraints[0].maxSkew + value: 1 + - equal: + path: spec.template.spec.topologySpreadConstraints[0].topologyKey + value: kubernetes.io/hostname + - equal: + path: spec.template.spec.topologySpreadConstraints[0].whenUnsatisfiable + value: DoNotSchedule + - equal: + path: spec.template.spec.topologySpreadConstraints[0].labelSelector.matchLabels["app.kubernetes.io/name"] + value: eingang-manager \ No newline at end of file diff --git a/src/test/helm/deployment_env_customList_test.yaml b/src/test/helm/deployment_env_customList_test.yaml new file mode 100644 index 000000000..57595c8c5 --- /dev/null +++ b/src/test/helm/deployment_env_customList_test.yaml @@ -0,0 +1,72 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test environments customList +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test + imagePullSecret: image-pull-secret +tests: + - it: check customList as list + set: + env.customList: + - name: my_test_environment_name + value: "A test value" + - name: test_environment + value: "B test value" + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: my_test_environment_name + value: "A test value" + - contains: + path: spec.template.spec.containers[0].env + content: + name: test_environment + value: "B test value" + - it: check customList as dict + set: + env.customList: + my_test_environment_name: "A test value" + test_environment: "B test value" + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: my_test_environment_name + value: "A test value" + - contains: + path: spec.template.spec.containers[0].env + content: + name: test_environment + value: "B test value" + - it: check customList test value is not set by default + asserts: + - notContains: + path: spec.template.spec.containers[0].env + content: + name: my_test_environment_name + value: "A test value" diff --git a/src/test/helm/deployment_host_aliases_test.yaml b/src/test/helm/deployment_host_aliases_test.yaml new file mode 100644 index 000000000..134afaf2f --- /dev/null +++ b/src/test/helm/deployment_host_aliases_test.yaml @@ -0,0 +1,54 @@ +# +# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: deployment host aliases +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/deployment.yaml + +set: + ozgcloud.environment: test + imagePullSecret: image-pull-secret +tests: + - it: should not set hostAliases + asserts: + - isNull: + path: spec.template.spec.hostAliases + - it: should set hostAliases + set: + hostAliases: + - ip: "127.0.0.1" + hostname: + - "eins" + - "zwei" + asserts: + - contains: + path: spec.template.spec.hostAliases + content: + ip: "127.0.0.1" + hostname: + - "eins" + - "zwei" diff --git a/src/test/helm/deployment_imagepull_secret_test.yaml b/src/test/helm/deployment_imagepull_secret_test.yaml new file mode 100644 index 000000000..44d18840f --- /dev/null +++ b/src/test/helm/deployment_imagepull_secret_test.yaml @@ -0,0 +1,44 @@ +# +# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment imagepullsecret +release: + name: afm-adapter + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test +tests: + - it: should set the imagePull secret + set: + imagePullSecret: image-pull-secret + asserts: + - equal: + path: spec.template.spec.imagePullSecrets[0].name + value: image-pull-secret + - it: should fail tempalte when not set + asserts: + - failedTemplate: + errorMessage: imagePullSecret must be set \ No newline at end of file diff --git a/src/test/helm/deployment_liveness_probe_test.yaml b/src/test/helm/deployment_liveness_probe_test.yaml new file mode 100644 index 000000000..96cd4a95d --- /dev/null +++ b/src/test/helm/deployment_liveness_probe_test.yaml @@ -0,0 +1,51 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment liveness probe +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test + imagePullSecret: image-pull-secret +tests: + - it: livenessProbe should be disabled by default + asserts: + - notExists: + path: spec.template.spec.containers[0].livenessProbe + + - it: enable livenessProbe + set: + enableLivenessProbe: true + asserts: + - isSubset: + path: spec.template.spec.containers[0].livenessProbe + content: + failureThreshold: 3 + httpGet: + path: /actuator/health/liveness + port: 8081 + scheme: HTTP + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 3 diff --git a/src/test/helm/deployment_pod_default_spec_values_test.yaml b/src/test/helm/deployment_pod_default_spec_values_test.yaml new file mode 100644 index 000000000..ed1df2ad6 --- /dev/null +++ b/src/test/helm/deployment_pod_default_spec_values_test.yaml @@ -0,0 +1,50 @@ + # +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment container basics +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test + imagePullSecret: image-pull-secret +tests: + - it: should have correct pod template values + asserts: + - isEmpty: + path: spec.template.spec.dnsConfig + - equal: + path: spec.template.spec.dnsPolicy + value: "ClusterFirst" + - equal: + path: spec.template.spec.restartPolicy + value: "Always" + - equal: + path: spec.template.spec.schedulerName + value: "default-scheduler" + - equal: + path: spec.template.spec.terminationGracePeriodSeconds + value: 30 \ No newline at end of file diff --git a/src/test/helm/deployment_resources_test.yaml b/src/test/helm/deployment_resources_test.yaml new file mode 100644 index 000000000..6404c0c9b --- /dev/null +++ b/src/test/helm/deployment_resources_test.yaml @@ -0,0 +1,61 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment resources +release: + name: afm-adapter +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test + imagePullSecret: image-pull-secret +tests: + - it: test resources + set: + resources: + limits: + cpu: "11m" + memory: "22Mi" + requests: + cpu: "33m" + memory: "44Mi" + asserts: + - equal: + path: spec.template.spec.containers[0].resources.limits.cpu + value: 11m + - equal: + path: spec.template.spec.containers[0].resources.limits.memory + value: 22Mi + - equal: + path: spec.template.spec.containers[0].resources.requests.cpu + value: 33m + - equal: + path: spec.template.spec.containers[0].resources.requests.memory + value: 44Mi + + - it: test empty resources + asserts: + - isEmpty: + path: spec.template.spec.containers[0].resources + diff --git a/src/test/helm/deployment_routing_strategy_env_test.yaml b/src/test/helm/deployment_routing_strategy_env_test.yaml new file mode 100644 index 000000000..e70cff6f1 --- /dev/null +++ b/src/test/helm/deployment_routing_strategy_env_test.yaml @@ -0,0 +1,80 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment routing strategy +release: + name: intelliform-adapter + namespace: sh-helm-test +templates: + - deployment.yaml +set: + image.tag: latest + ozgcloud.environment: test + imagePullSecret: image-pull-secret +tests: + - it: validate default routing values without questions.yaml + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: ozgcloud_adapter_routingStrategy + value: SINGLE + - contains: + path: spec.template.spec.containers[0].env + content: + name: ozgcloud_adapter_fallbackStrategy + value: DENY + - contains: + path: spec.template.spec.containers[0].env + content: + name: grpc_client_vorgang-manager-vorgang-manager_negotiationType + value: TLS + - contains: + path: spec.template.spec.containers[0].env + content: + name: grpc_client_vorgang-manager-vorgang-manager_address + value: dns:///vorgang-manager.sh-helm-test:9090 + + - it: validate routing infos + set: + routing: + routingStrategy: MULTI + fallbackStrategy: FUNDSTELLE + negotiationType: PLAINTEXT + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: ozgcloud_adapter_routingStrategy + value: MULTI + - contains: + path: spec.template.spec.containers[0].env + content: + name: ozgcloud_adapter_fallbackStrategy + value: FUNDSTELLE + - contains: + path: spec.template.spec.containers[0].env + content: + name: grpc_client_vorgang-manager-vorgang-manager_negotiationType + value: PLAINTEXT \ No newline at end of file diff --git a/src/test/helm/deployment_routing_zufi_test.yaml b/src/test/helm/deployment_routing_zufi_test.yaml new file mode 100644 index 000000000..85c3e1b73 --- /dev/null +++ b/src/test/helm/deployment_routing_zufi_test.yaml @@ -0,0 +1,89 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment zufi routing +release: + name: intelliform-adapter + namespace: sh-helm-test +templates: + - deployment.yaml +set: + image.tag: latest + ozgcloud.environment: test + imagePullSecret: image-pull-secret +tests: + - it: should set zufi routing values when zufi is enabled + set: + routing: + routingStrategy: "ZUFI" + zufiManager: + address: "127.0.0.1" + negotiationType: "TLS" + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: grpc_client_zufi-manager_address + value: "127.0.0.1" + - contains: + path: spec.template.spec.containers[0].env + content: + name: grpc_client_zufi-manager_negotiationType + value: "TLS" + + - it: should not set zufi routing values when zufi is disabled + asserts: + - notContains: + path: spec.template.spec.containers[0].env + content: + name: grpc_client_zufi-manager_address + any: true + - notContains: + path: spec.template.spec.containers[0].env + content: + name: grpc_client_zufi-manager_negotiationType + any: true + + - it: should throw error if zufi manager address is not set + set: + routing: + routingStrategy: "ZUFI" + zufiManager: + negotiationType: "PLAINTEXT" + asserts: + - failedTemplate: + errorMessage: "routing.zufiManager.address must be set when routingStrategy=ZUFI" + + - it: should set default value for zufi negotiationType + set: + routing: + routingStrategy: "ZUFI" + zufiManager: + address: "127.0.0.1" + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: grpc_client_zufi-manager_negotiationType + value: "PLAINTEXT" \ No newline at end of file diff --git a/src/test/helm/deployment_service_account_test.yaml b/src/test/helm/deployment_service_account_test.yaml new file mode 100644 index 000000000..0110fb671 --- /dev/null +++ b/src/test/helm/deployment_service_account_test.yaml @@ -0,0 +1,84 @@ +# +# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: deployment service account +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/deployment.yaml + +set: + ozgcloud.environment: test + imagePullSecret: image-pull-secret +tests: + - it: should use afm-adapter service account name + set: + image.name: intelliform-adapter + serviceAccount: + create: true + asserts: + - equal: + path: spec.template.spec.serviceAccountName + value: afm-adapter-service-account + - it: should use fs-adapter service account name + set: + image.name: formsolutions-adapter + serviceAccount: + create: true + asserts: + - equal: + path: spec.template.spec.serviceAccountName + value: fs-adapter-service-account + - it: should use formcycle-adapter service account name + set: + image.name: formcycle-adapter + serviceAccount: + create: true + asserts: + - equal: + path: spec.template.spec.serviceAccountName + value: formcycle-adapter-service-account + - it: should use enterprise-adapter service account name + set: + image.name: enterprise-adapter + serviceAccount: + create: true + asserts: + - equal: + path: spec.template.spec.serviceAccountName + value: enterprise-adapter-service-account + - it: should use service account with name + set: + serviceAccount: + create: true + name: helm-service-account + asserts: + - equal: + path: spec.template.spec.serviceAccountName + value: helm-service-account + - it: should use default service account + asserts: + - isNull: + path: spec.template.spec.serviceAccountName \ No newline at end of file diff --git a/src/test/helm/deployment_springProfile_env_test.yaml b/src/test/helm/deployment_springProfile_env_test.yaml new file mode 100644 index 000000000..9001380a3 --- /dev/null +++ b/src/test/helm/deployment_springProfile_env_test.yaml @@ -0,0 +1,50 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test spring profiles +release: + name: if-adapter +templates: + - templates/deployment.yaml +set: + imagePullSecret: image-pull-secret +tests: + - it: should override spring profiles + set: + env.overrideSpringProfiles: oc,stage,ea + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: spring_profiles_active + value: oc,stage,ea + - it: should generate spring profiles + set: + ozgcloud.environment: test + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: spring_profiles_active + value: oc, test \ No newline at end of file diff --git a/src/test/helm/deyploment_general_value_and_default_spec_test.yaml b/src/test/helm/deyploment_general_value_and_default_spec_test.yaml new file mode 100644 index 000000000..0ab50fa23 --- /dev/null +++ b/src/test/helm/deyploment_general_value_and_default_spec_test.yaml @@ -0,0 +1,73 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment general values +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test + imagePullSecret: image-pull-secret +tests: + - it: should have correct apiVersion + asserts: + - isKind: + of: Deployment + - isAPIVersion: + of: "apps/v1" + + - it: should have correct deployment metadata + asserts: + - equal: + path: metadata.name + value: eingang-manager + - equal: + path: metadata.namespace + value: sh-helm-test + + + - it: should have correct deyployment general spec values + asserts: + - equal: + path: spec.progressDeadlineSeconds + value: 600 + - equal: + path: spec.replicas + value: null + - equal: + path: spec.revisionHistoryLimit + value: 10 + - it: should have correct deployment spec strategy values + asserts: + - equal: + path: spec.strategy + value: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 0 + type: RollingUpdate + + diff --git a/src/test/helm/ingress_create_or_not_test.yaml b/src/test/helm/ingress_create_or_not_test.yaml new file mode 100644 index 000000000..9b302ef3b --- /dev/null +++ b/src/test/helm/ingress_create_or_not_test.yaml @@ -0,0 +1,49 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test ingress creation dependent from values +templates: + - templates/ingress.yaml + +set: + ozgcloud: + bezeichner: helm + +tests: + - it: create ingress by config + set: + ingress.enabled: true + asserts: + - isKind: + of: Ingress + - it: not create ingress by config + set: + ingress.enabled: false + asserts: + - hasDocuments: + count: 0 + - it: ingress should be created by default + asserts: + - isKind: + of: Ingress diff --git a/src/test/helm/ingress_nginx_test.yaml b/src/test/helm/ingress_nginx_test.yaml new file mode 100644 index 000000000..954319725 --- /dev/null +++ b/src/test/helm/ingress_nginx_test.yaml @@ -0,0 +1,68 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test ingress options +templates: + - templates/ingress.yaml + +set: + ozgcloud: + bezeichner: helm + +tests: + - it: should create afm ingress tls + release: + name: afm-adapter + asserts: + - equal: + path: spec.tls[0].secretName + value: helm-afm-adapter-tls + - it: should create afm ingress tls + release: + name: fs-adapter + set: + image.name: formsolutions-adapter + asserts: + - equal: + path: spec.tls[0].secretName + value: helm-fs-adapter-tls + + - it: should not set secretName + set: + ingress.skipTlsSecret: true + asserts: + - isNull: + path: spec.tls[0].secretName + + - it: should not set ingressClassName + asserts: + - isNull: + path: spec.ingressClassName + - it: should set ingressClassName + set: + ingress.className: nginx + asserts: + - equal: + path: spec.ingressClassName + value: nginx \ No newline at end of file diff --git a/src/test/helm/ingress_test.yaml b/src/test/helm/ingress_test.yaml new file mode 100644 index 000000000..ee0b43da7 --- /dev/null +++ b/src/test/helm/ingress_test.yaml @@ -0,0 +1,147 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test ingress creation +release: + name: intelliform-adapter + namespace: sh-helm-test +templates: + - templates/ingress.yaml +set: + ozgcloud: + bezeichner: helm +tests: + - it: should match basic data + asserts: + - containsDocument: + kind: Ingress + apiVersion: networking.k8s.io/v1 + - equal: + path: metadata.name + value: intelliform-adapter + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should match service port number + asserts: + - equal: + path: spec.rules[0].http.paths[0].backend.service.port.number + value: 8080 + - it: should match service name + asserts: + - equal: + path: spec.rules[0].http.paths[0].backend.service.name + value: intelliform-adapter + - it: should match service path + asserts: + - equal: + path: spec.rules[0].http.paths[0].path + value: '' + - it: should match service pathType + asserts: + - equal: + path: spec.rules[0].http.paths[0].pathType + value: ImplementationSpecific + - it: should create afm host + asserts: + - equal: + path: spec.rules[0].host + value: helm-afm.test.sh.ozg-cloud.de + - equal: + path: spec.tls[0].hosts[0] + value: helm-afm.test.sh.ozg-cloud.de + + + - it: should create fs host + set: + image.name: formsolutions-adapter + asserts: + - equal: + path: spec.rules[0].host + value: helm-fs.test.sh.ozg-cloud.de + - equal: + path: spec.tls[0].hosts[0] + value: helm-fs.test.sh.ozg-cloud.de + + - it: should create formcycle host + set: + image.name: formcycle-adapter + asserts: + - equal: + path: spec.rules[0].host + value: helm-formcycle.test.sh.ozg-cloud.de + - equal: + path: spec.tls[0].hosts[0] + value: helm-formcycle.test.sh.ozg-cloud.de + + + - it: should create custom adapter host + set: + ingress.adapterBezeichner: test + asserts: + - equal: + path: spec.rules[0].host + value: helm-test.test.sh.ozg-cloud.de + - equal: + path: spec.tls[0].hosts[0] + value: helm-test.test.sh.ozg-cloud.de + + - it: should use letsencrypt-prod cluster-issuer as default + asserts: + - equal: + path: metadata.annotations["cert-manager.io/cluster-issuer"] + value: letsencrypt-prod + + - it: should use letsencrypt-staging cluster-issuer if use_staging_cert is true + set: + ingress.use_staging_cert: true + asserts: + - equal: + path: metadata.annotations["cert-manager.io/cluster-issuer"] + value: letsencrypt-staging + + - it: should use letsencrypt-prod cluster-issuer if use_staging_cert is false + set: + ingress.use_staging_cert: false + asserts: + - equal: + path: metadata.annotations["cert-manager.io/cluster-issuer"] + value: letsencrypt-prod + + - it: should disable default cert-manager + set: + ingress.disableDefaultCertManager: true + asserts: + - notExists: + path: metadata.annotations["cert-manager.io/cluster-issuer"] + + - it: should set ingress annotation proxy body size to 42m + set: + ingress: + annotations: + nginx.ingress.kubernetes.io/proxy-body-size: 42m + asserts: + - equal: + path: metadata.annotations["nginx.ingress.kubernetes.io/proxy-body-size"] + value: 42m \ No newline at end of file diff --git a/src/test/helm/network_policy_test.yaml b/src/test/helm/network_policy_test.yaml new file mode 100644 index 000000000..06a416e43 --- /dev/null +++ b/src/test/helm/network_policy_test.yaml @@ -0,0 +1,225 @@ +# +# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: network policy test +release: + name: afm-adapter + namespace: by-helm-test +templates: + - templates/network_policy.yaml +tests: + - it: should match apiVersion + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - isAPIVersion: + of: networking.k8s.io/v1 + - it: should match kind + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - isKind: + of: NetworkPolicy + - it: validate metadata + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - equal: + path: metadata + value: + name: network-policy-afm-adapter + namespace: by-helm-test + - it: validate spec + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - equal: + path: spec + value: + podSelector: + matchLabels: + ozg-component: eingangsadapter + policyTypes: + - Ingress + - Egress + ingress: + - ports: + - port: 8080 + - from: + - namespaceSelector: + matchLabels: + name: openshift-user-workload-monitoring + ports: + - protocol: TCP + port: 8081 + egress: + - to: + - podSelector: + matchLabels: + component: vorgang-manager + ports: + - port: 9090 + protocol: TCP + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: test-dns-namespace + ports: + - port: 53 + protocol: UDP + - port: 53 + protocol: TCP + - port: 5353 + protocol: UDP + - port: 5353 + protocol: TCP + + - it: should set monitoring namespace + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + monitoringNamespace: test-monitoring + asserts: + - contains: + path: spec.ingress + content: + from: + - namespaceSelector: + matchLabels: + name: test-monitoring + ports: + - protocol: TCP + port: 8081 + + - it: test network policy disabled + set: + networkPolicy: + disabled: true + dnsServerNamespace: test-dns-namespace + asserts: + - hasDocuments: + count: 0 + + - it: test network policy unset should be disabled + set: + networkPolicy: + disabled: false + dnsServerNamespace: test-dns-namespace + asserts: + - hasDocuments: + count: 1 + - it: test network policy dnsServerNamespace must be set message + set: + networkPolicy: + disabled: false + asserts: + - failedTemplate: + errorMessage: networkPolicy.dnsServerNamespace must be set + + - it: test network policy should be enabled by default + set: + networkPolicy: + dnsServerNamespace: test-dns-server-namespace + asserts: + - hasDocuments: + count: 1 + + + - it: should add zufi rules when zufi-routing is enabled + set: + networkPolicy: + dnsServerNamespace: test-dns-server-namespace + routing: + routingStrategy: ZUFI + zufiManager: + namespace: zufi-namespace + asserts: + - contains: + path: spec.egress + content: + to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: zufi-namespace + podSelector: + matchLabels: + component: zufi-server + ports: + - port: 9090 + protocol: TCP + - contains: + path: spec.egress + content: + to: + - namespaceSelector: {} + podSelector: + matchLabels: + component: vorgang-manager + ports: + - port: 9090 + protocol: TCP + + - it: should throw error when zufi is enabled but zufi namespace not set + set: + networkPolicy: + dnsServerNamespace: test-dns-server-namespace + routing: + routingStrategy: ZUFI + asserts: + - failedTemplate: + errorMessage: routing.zufiManager.namespace must be set if routingStrategy=ZUFI + + - it: should not add zufi rule when zufi-routing is disabled + set: + networkPolicy: + dnsServerNamespace: test-dns-server-namespace + routing: + zufiManager: + namespace: zufi-namespace + asserts: + - notContains: + path: spec.egress + content: + to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: zufi-namespace + podSelector: + matchLabels: + component: zufi-server + - notContains: + path: spec.egress + content: + to: + - namespaceSelector: {} + podSelector: + matchLabels: + component: vorgang-manager + ports: + - port: 9090 + protocol: TCP \ No newline at end of file diff --git a/src/test/helm/realm_name_length_test.yaml b/src/test/helm/realm_name_length_test.yaml new file mode 100644 index 000000000..ef87fd640 --- /dev/null +++ b/src/test/helm/realm_name_length_test.yaml @@ -0,0 +1,41 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test ozgcloud bezeichner length +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/ingress.yaml + +tests: + - it: should fail on bezeichner length longer than 46 characters + set: + ozgcloud: + bezeichner: test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 + environment: test + bundesland: by + asserts: + - failedTemplate: + errorMessage: Bezeichner test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 46 Zeichen) \ No newline at end of file diff --git a/src/test/helm/service_account_test.yaml b/src/test/helm/service_account_test.yaml new file mode 100644 index 000000000..3ae43770b --- /dev/null +++ b/src/test/helm/service_account_test.yaml @@ -0,0 +1,108 @@ +# +# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test service account +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/service_account.yaml +tests: + - it: should create default afm adapter service account name + set: + image.name: intelliform-adapter + serviceAccount: + create: true + asserts: + - isKind: + of: ServiceAccount + - isAPIVersion: + of: v1 + - equal: + path: metadata.name + value: afm-adapter-service-account + - equal: + path: metadata.namespace + value: sh-helm-test + + - it: should create default fs adapter service account name + set: + image.name: formsolutions-adapter + serviceAccount: + create: true + asserts: + - isKind: + of: ServiceAccount + - equal: + path: metadata.name + value: fs-adapter-service-account + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should create default formcycle adapter service account name + set: + image.name: formcycle-adapter + serviceAccount: + create: true + asserts: + - isKind: + of: ServiceAccount + - equal: + path: metadata.name + value: formcycle-adapter-service-account + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should create default enterprise adapter service account name + set: + image.name: enterprise-adapter + serviceAccount: + create: true + asserts: + - isKind: + of: ServiceAccount + - equal: + path: metadata.name + value: enterprise-adapter-service-account + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should create service account with name + set: + serviceAccount: + create: true + name: helm-service-account + asserts: + - isKind: + of: ServiceAccount + - equal: + path: metadata.name + value: helm-service-account + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should not create service account + asserts: + - hasDocuments: + count: 0 \ No newline at end of file diff --git a/src/test/helm/service_monitor_test.yaml b/src/test/helm/service_monitor_test.yaml new file mode 100644 index 000000000..c85a7a6b6 --- /dev/null +++ b/src/test/helm/service_monitor_test.yaml @@ -0,0 +1,96 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test service monitor +release: + name: afm-adapter + namespace: sh-helm-test +templates: + - templates/service_monitor.yaml +tests: + - it: should have basic info and the label component with value afm-adapter-service-monitor attached + asserts: + - isKind: + of: ServiceMonitor + - isAPIVersion: + of: monitoring.coreos.com/v1 + - equal: + path: metadata.name + value: afm-adapter + - equal: + path: metadata.namespace + value: sh-helm-test + - equal: + path: metadata.labels["component"] + value: afm-adapter-service-monitor + + - it: should contain default lables and component lables + asserts: + - equal: + path: metadata.labels + value: + app.kubernetes.io/instance: afm-adapter + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: afm-adapter + app.kubernetes.io/namespace: sh-helm-test + app.kubernetes.io/part-of: ozgcloud + app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS + component: afm-adapter-service-monitor + helm.sh/chart: Intelliform-Adapter-0.0.0-MANAGED-BY-JENKINS + ozg-component: eingangsadapter + + - it: should have the metrics endpoint configured by default + set: + env.springProfiles: oc,stage + asserts: + - contains: + path: spec.endpoints + content: + port: metrics + path: /actuator/prometheus + - it: should be able to enable the endpoint + asserts: + - contains: + path: spec.endpoints + content: + port: metrics + path: /actuator/prometheus + - it: namespace selector should contain the namespace + asserts: + - contains: + path: spec.namespaceSelector.matchNames + content: sh-helm-test + - it: selector should contain the component label with the value afm-adapter-service + asserts: + - equal: + path: spec.selector.matchLabels["component"] + value: afm-adapter-service + - it: selector should contain helm recommended labels name and namespace + asserts: + - equal: + path: spec.selector.matchLabels["app.kubernetes.io/name"] + value: afm-adapter + - equal: + path: spec.selector.matchLabels["app.kubernetes.io/namespace"] + value: sh-helm-test diff --git a/src/test/helm/service_test.yaml b/src/test/helm/service_test.yaml new file mode 100644 index 000000000..ebc38d5c4 --- /dev/null +++ b/src/test/helm/service_test.yaml @@ -0,0 +1,100 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test service +release: + name: afm-adapter + namespace: sh-helm-test +templates: + - templates/service.yaml +tests: + - it: should have basics and the label component with value afm-adapter-service attached + asserts: + - isKind: + of: Service + - isAPIVersion: + of: v1 + - equal: + path: metadata.labels["component"] + value: afm-adapter-service + - equal: + path: metadata.name + value: afm-adapter + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should be of type ClusterIP + asserts: + - equal: + path: spec.type + value: ClusterIP + - it: ports should contain the 8080 default http port + asserts: + - contains: + path: spec.ports + content: + name: http + port: 8080 + protocol: TCP + targetPort: 8080 + count: 1 + any: true + - it: ports should contain the metrics port + asserts: + - contains: + path: spec.ports + content: + name: metrics + port: 8081 + protocol: TCP + count: 1 + any: true + - it: selector should contain the component label with the value afm-adapter + asserts: + - equal: + path: spec.selector["component"] + value: afm-adapter + - it: selector should contain helm recommended labels name and namespace + asserts: + - equal: + path: spec.selector["app.kubernetes.io/name"] + value: afm-adapter + - equal: + path: spec.selector["app.kubernetes.io/namespace"] + value: sh-helm-test + + - it: should contain default lables and component lables + asserts: + - equal: + path: metadata.labels + value: + app.kubernetes.io/instance: afm-adapter + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: afm-adapter + app.kubernetes.io/namespace: sh-helm-test + app.kubernetes.io/part-of: ozgcloud + app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS + component: afm-adapter-service + helm.sh/chart: Intelliform-Adapter-0.0.0-MANAGED-BY-JENKINS + ozg-component: eingangsadapter \ No newline at end of file -- GitLab From acbc4f0d2bf21a5b475752f68565f4925155c86b Mon Sep 17 00:00:00 2001 From: Felix Reichenbach <felix.reichenbach@mgm-tp.com> Date: Fri, 7 Feb 2025 15:56:18 +0100 Subject: [PATCH 2/7] rename Jenkins stage --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index eba345c98..7cfd63a12 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -154,7 +154,7 @@ pipeline { } } - stage('Test, build and deploy Intelliform-Adapter Helm Chart') { + stage('Test, build and deploy Eingang-Adapter Helm Chart') { steps { script { FAILED_STAGE=env.STAGE_NAME -- GitLab From dced415338f8b4ecd4ce8daaf2de737a2a497b5d Mon Sep 17 00:00:00 2001 From: Felix Reichenbach <felix.reichenbach@mgm-tp.com> Date: Fri, 7 Feb 2025 15:58:40 +0100 Subject: [PATCH 3/7] rename helm chart name --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 7cfd63a12..38488fb06 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -165,7 +165,7 @@ pipeline { dir('src/main/helm') { sh "helm package --version=${HELM_CHART_VERSION} ." - deployHelmChart("Intelliform-Adapter", HELM_CHART_VERSION) + deployHelmChart("eingang-adapter", HELM_CHART_VERSION) } } } -- GitLab From 782a3e93e1b4f20a5055dba42bc02bd691758025 Mon Sep 17 00:00:00 2001 From: Felix Reichenbach <felix.reichenbach@mgm-tp.com> Date: Fri, 7 Feb 2025 16:17:43 +0100 Subject: [PATCH 4/7] replace intelliform adapter with eingang-adapter --- src/main/helm/Chart.yaml | 5 ++--- src/main/helm/templates/deployment.yaml | 4 ++-- src/main/helm/values.yaml | 3 +-- src/test/helm/deployment_63_chars_test.yaml | 6 +++--- src/test/helm/deployment_defaults_labels_test.yaml | 9 ++++----- .../deployment_defaults_spec_containers_test.yaml | 4 ++-- .../helm/deployment_routing_strategy_env_test.yaml | 4 ++-- src/test/helm/deployment_routing_zufi_test.yaml | 6 +++--- src/test/helm/ingress_test.yaml | 14 ++++++-------- src/test/helm/service_monitor_test.yaml | 4 ++-- src/test/helm/service_test.yaml | 4 ++-- 11 files changed, 29 insertions(+), 34 deletions(-) diff --git a/src/main/helm/Chart.yaml b/src/main/helm/Chart.yaml index 2b05d0cc4..118bc6f74 100644 --- a/src/main/helm/Chart.yaml +++ b/src/main/helm/Chart.yaml @@ -24,8 +24,7 @@ apiVersion: v1 appVersion: "1.1" -description: A Helm chart for Intelliform Adapter -name: Intelliform-Adapter +description: A Helm chart for Eingang Adapter +name: eingang-adapter version: 0.0.0-MANAGED-BY-JENKINS icon: https://simpleicons.org/icons/helm.svg - diff --git a/src/main/helm/templates/deployment.yaml b/src/main/helm/templates/deployment.yaml index b59bb1cc4..ff60598c9 100644 --- a/src/main/helm/templates/deployment.yaml +++ b/src/main/helm/templates/deployment.yaml @@ -62,7 +62,7 @@ spec: - name: SERVICE_BINDING_ROOT value: "/bindings" {{- range (.Values.env).grpc }} - - name: {{ .name }} + - name: {{ .name }} value: {{ .value }} {{- end }} - name: spring_profiles_active @@ -95,7 +95,7 @@ spec: {{- end }} image: "{{ .Values.image.repo }}/{{ .Values.image.name }}:{{ coalesce (.Values.image).tag "latest" }}" imagePullPolicy: Always - name: intelliform-adapter + name: eingang-adapter ports: - containerPort: 8080 name: 8080tcp1 diff --git a/src/main/helm/values.yaml b/src/main/helm/values.yaml index 118009532..541998250 100644 --- a/src/main/helm/values.yaml +++ b/src/main/helm/values.yaml @@ -26,10 +26,9 @@ baseUrl: test.sh.ozg-cloud.de image: repo: docker.ozg-sh.de - name: intelliform-adapter # [default: intelliform-adapter] + name: eingang-adapter # [default: eingang-adapter] tag: latest # [default: latest] - ingress: enabled: true # overrideHost: kiel-afm.dev.by.ozg-cloud.de diff --git a/src/test/helm/deployment_63_chars_test.yaml b/src/test/helm/deployment_63_chars_test.yaml index 417144739..a40e1b8e4 100644 --- a/src/test/helm/deployment_63_chars_test.yaml +++ b/src/test/helm/deployment_63_chars_test.yaml @@ -26,7 +26,7 @@ suite: test deyploment less than 63 chars release: name: eingang-manager namespace: sh-helm-test - + chart: name: eingang-manager set: @@ -50,7 +50,7 @@ tests: version: 1.0-test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 asserts: - failedTemplate: - errorMessage: .Chart.Name-.Chart.Version Intelliform-Adapter-1.0-test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 63 Zeichen) + errorMessage: .Chart.Name-.Chart.Version eingang-adapter-1.0-test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 63 Zeichen) - it: should not fail on .Chart.Name-.Chart.Version length less than 63 characters asserts: - - notFailedTemplate: {} \ No newline at end of file + - notFailedTemplate: {} diff --git a/src/test/helm/deployment_defaults_labels_test.yaml b/src/test/helm/deployment_defaults_labels_test.yaml index 4e2d5f7fd..89894411a 100644 --- a/src/test/helm/deployment_defaults_labels_test.yaml +++ b/src/test/helm/deployment_defaults_labels_test.yaml @@ -24,7 +24,7 @@ suite: test deployment default label release: - name: intelliform-adapter + name: eingang-adapter namespace: sh-helm-test templates: - templates/deployment.yaml @@ -37,13 +37,12 @@ tests: asserts: - equal: path: metadata.labels - value: + value: app.kubernetes.io/instance: afm-adapter app.kubernetes.io/managed-by: Helm - app.kubernetes.io/name: intelliform-adapter + app.kubernetes.io/name: eingang-adapter app.kubernetes.io/namespace: sh-helm-test app.kubernetes.io/part-of: ozgcloud app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS - helm.sh/chart: Intelliform-Adapter-0.0.0-MANAGED-BY-JENKINS + helm.sh/chart: eingang-adapter-0.0.0-MANAGED-BY-JENKINS ozg-component: eingangsadapter - diff --git a/src/test/helm/deployment_defaults_spec_containers_test.yaml b/src/test/helm/deployment_defaults_spec_containers_test.yaml index 07d4b6ee7..55f0afcf7 100644 --- a/src/test/helm/deployment_defaults_spec_containers_test.yaml +++ b/src/test/helm/deployment_defaults_spec_containers_test.yaml @@ -36,13 +36,13 @@ tests: asserts: - equal: path: spec.template.spec.containers[0].image - value: docker.ozg-sh.de/intelliform-adapter:latest + value: docker.ozg-sh.de/eingang-adapter:latest - equal: path: spec.template.spec.containers[0].imagePullPolicy value: Always - equal: path: spec.template.spec.containers[0].name - value: intelliform-adapter + value: eingang-adapter - equal: path: spec.template.spec.containers[0].ports[0].containerPort value: 8080 diff --git a/src/test/helm/deployment_routing_strategy_env_test.yaml b/src/test/helm/deployment_routing_strategy_env_test.yaml index e70cff6f1..92220ea51 100644 --- a/src/test/helm/deployment_routing_strategy_env_test.yaml +++ b/src/test/helm/deployment_routing_strategy_env_test.yaml @@ -24,7 +24,7 @@ suite: test deployment routing strategy release: - name: intelliform-adapter + name: eingang-adapter namespace: sh-helm-test templates: - deployment.yaml @@ -77,4 +77,4 @@ tests: path: spec.template.spec.containers[0].env content: name: grpc_client_vorgang-manager-vorgang-manager_negotiationType - value: PLAINTEXT \ No newline at end of file + value: PLAINTEXT diff --git a/src/test/helm/deployment_routing_zufi_test.yaml b/src/test/helm/deployment_routing_zufi_test.yaml index 85c3e1b73..a2d8aac38 100644 --- a/src/test/helm/deployment_routing_zufi_test.yaml +++ b/src/test/helm/deployment_routing_zufi_test.yaml @@ -24,7 +24,7 @@ suite: test deployment zufi routing release: - name: intelliform-adapter + name: eingang-adapter namespace: sh-helm-test templates: - deployment.yaml @@ -51,7 +51,7 @@ tests: content: name: grpc_client_zufi-manager_negotiationType value: "TLS" - + - it: should not set zufi routing values when zufi is disabled asserts: - notContains: @@ -86,4 +86,4 @@ tests: path: spec.template.spec.containers[0].env content: name: grpc_client_zufi-manager_negotiationType - value: "PLAINTEXT" \ No newline at end of file + value: "PLAINTEXT" diff --git a/src/test/helm/ingress_test.yaml b/src/test/helm/ingress_test.yaml index ee0b43da7..1b41eb85c 100644 --- a/src/test/helm/ingress_test.yaml +++ b/src/test/helm/ingress_test.yaml @@ -24,7 +24,7 @@ suite: test ingress creation release: - name: intelliform-adapter + name: eingang-adapter namespace: sh-helm-test templates: - templates/ingress.yaml @@ -39,7 +39,7 @@ tests: apiVersion: networking.k8s.io/v1 - equal: path: metadata.name - value: intelliform-adapter + value: eingang-adapter - equal: path: metadata.namespace value: sh-helm-test @@ -52,12 +52,12 @@ tests: asserts: - equal: path: spec.rules[0].http.paths[0].backend.service.name - value: intelliform-adapter + value: eingang-adapter - it: should match service path asserts: - equal: path: spec.rules[0].http.paths[0].path - value: '' + value: "" - it: should match service pathType asserts: - equal: @@ -72,7 +72,6 @@ tests: path: spec.tls[0].hosts[0] value: helm-afm.test.sh.ozg-cloud.de - - it: should create fs host set: image.name: formsolutions-adapter @@ -83,7 +82,7 @@ tests: - equal: path: spec.tls[0].hosts[0] value: helm-fs.test.sh.ozg-cloud.de - + - it: should create formcycle host set: image.name: formcycle-adapter @@ -95,7 +94,6 @@ tests: path: spec.tls[0].hosts[0] value: helm-formcycle.test.sh.ozg-cloud.de - - it: should create custom adapter host set: ingress.adapterBezeichner: test @@ -144,4 +142,4 @@ tests: asserts: - equal: path: metadata.annotations["nginx.ingress.kubernetes.io/proxy-body-size"] - value: 42m \ No newline at end of file + value: 42m diff --git a/src/test/helm/service_monitor_test.yaml b/src/test/helm/service_monitor_test.yaml index c85a7a6b6..8c4a1b5b0 100644 --- a/src/test/helm/service_monitor_test.yaml +++ b/src/test/helm/service_monitor_test.yaml @@ -44,7 +44,7 @@ tests: - equal: path: metadata.labels["component"] value: afm-adapter-service-monitor - + - it: should contain default lables and component lables asserts: - equal: @@ -57,7 +57,7 @@ tests: app.kubernetes.io/part-of: ozgcloud app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS component: afm-adapter-service-monitor - helm.sh/chart: Intelliform-Adapter-0.0.0-MANAGED-BY-JENKINS + helm.sh/chart: eingang-adapter-0.0.0-MANAGED-BY-JENKINS ozg-component: eingangsadapter - it: should have the metrics endpoint configured by default diff --git a/src/test/helm/service_test.yaml b/src/test/helm/service_test.yaml index ebc38d5c4..bec1a28db 100644 --- a/src/test/helm/service_test.yaml +++ b/src/test/helm/service_test.yaml @@ -96,5 +96,5 @@ tests: app.kubernetes.io/part-of: ozgcloud app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS component: afm-adapter-service - helm.sh/chart: Intelliform-Adapter-0.0.0-MANAGED-BY-JENKINS - ozg-component: eingangsadapter \ No newline at end of file + helm.sh/chart: eingang-adapter-0.0.0-MANAGED-BY-JENKINS + ozg-component: eingangsadapter -- GitLab From ebab2b2bee10d90f979b6654590b1f791f2a0363 Mon Sep 17 00:00:00 2001 From: Felix Reichenbach <felix.reichenbach@mgm-tp.com> Date: Fri, 7 Feb 2025 16:21:06 +0100 Subject: [PATCH 5/7] remove formsolutions from helm --- src/main/helm/templates/_helpers.tpl | 4 ---- .../helm/deployment_service_account_test.yaml | 11 +---------- src/test/helm/ingress_nginx_test.yaml | 13 ++----------- src/test/helm/ingress_test.yaml | 11 ----------- src/test/helm/service_account_test.yaml | 17 +---------------- 5 files changed, 4 insertions(+), 52 deletions(-) diff --git a/src/main/helm/templates/_helpers.tpl b/src/main/helm/templates/_helpers.tpl index 5578089ba..fdb9ddf34 100644 --- a/src/main/helm/templates/_helpers.tpl +++ b/src/main/helm/templates/_helpers.tpl @@ -91,8 +91,6 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }} {{- define "app.ingress.host" }} {{- if (.Values.ingress).adapterBezeichner }} {{- printf "%s-%s.%s" (include "app.ozgcloudBezeichner" .) .Values.ingress.adapterBezeichner .Values.baseUrl }} -{{- else if eq (.Values.image).name "formsolutions-adapter" }} -{{- printf "%s-fs.%s" (include "app.ozgcloudBezeichner" .) .Values.baseUrl }} {{- else if eq (.Values.image).name "formcycle-adapter" }} {{- printf "%s-formcycle.%s" (include "app.ozgcloudBezeichner" .) .Values.baseUrl }} {{- else }} @@ -105,8 +103,6 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }} {{- printf "%s" .Values.serviceAccount.name }} {{- else if eq (.Values.image).name "intelliform-adapter" }} {{- printf "afm-adapter-service-account" }} -{{- else if eq (.Values.image).name "formsolutions-adapter" }} -{{- printf "fs-adapter-service-account" }} {{- else if eq (.Values.image).name "formcycle-adapter" }} {{- printf "formcycle-adapter-service-account" }} {{- else if eq (.Values.image).name "enterprise-adapter" }} diff --git a/src/test/helm/deployment_service_account_test.yaml b/src/test/helm/deployment_service_account_test.yaml index 0110fb671..fbf9bf795 100644 --- a/src/test/helm/deployment_service_account_test.yaml +++ b/src/test/helm/deployment_service_account_test.yaml @@ -42,15 +42,6 @@ tests: - equal: path: spec.template.spec.serviceAccountName value: afm-adapter-service-account - - it: should use fs-adapter service account name - set: - image.name: formsolutions-adapter - serviceAccount: - create: true - asserts: - - equal: - path: spec.template.spec.serviceAccountName - value: fs-adapter-service-account - it: should use formcycle-adapter service account name set: image.name: formcycle-adapter @@ -81,4 +72,4 @@ tests: - it: should use default service account asserts: - isNull: - path: spec.template.spec.serviceAccountName \ No newline at end of file + path: spec.template.spec.serviceAccountName diff --git a/src/test/helm/ingress_nginx_test.yaml b/src/test/helm/ingress_nginx_test.yaml index 954319725..cd36fce3a 100644 --- a/src/test/helm/ingress_nginx_test.yaml +++ b/src/test/helm/ingress_nginx_test.yaml @@ -29,7 +29,7 @@ templates: set: ozgcloud: bezeichner: helm - + tests: - it: should create afm ingress tls release: @@ -38,15 +38,6 @@ tests: - equal: path: spec.tls[0].secretName value: helm-afm-adapter-tls - - it: should create afm ingress tls - release: - name: fs-adapter - set: - image.name: formsolutions-adapter - asserts: - - equal: - path: spec.tls[0].secretName - value: helm-fs-adapter-tls - it: should not set secretName set: @@ -65,4 +56,4 @@ tests: asserts: - equal: path: spec.ingressClassName - value: nginx \ No newline at end of file + value: nginx diff --git a/src/test/helm/ingress_test.yaml b/src/test/helm/ingress_test.yaml index 1b41eb85c..a5a2f64fa 100644 --- a/src/test/helm/ingress_test.yaml +++ b/src/test/helm/ingress_test.yaml @@ -72,17 +72,6 @@ tests: path: spec.tls[0].hosts[0] value: helm-afm.test.sh.ozg-cloud.de - - it: should create fs host - set: - image.name: formsolutions-adapter - asserts: - - equal: - path: spec.rules[0].host - value: helm-fs.test.sh.ozg-cloud.de - - equal: - path: spec.tls[0].hosts[0] - value: helm-fs.test.sh.ozg-cloud.de - - it: should create formcycle host set: image.name: formcycle-adapter diff --git a/src/test/helm/service_account_test.yaml b/src/test/helm/service_account_test.yaml index 3ae43770b..b64225463 100644 --- a/src/test/helm/service_account_test.yaml +++ b/src/test/helm/service_account_test.yaml @@ -42,21 +42,6 @@ tests: - equal: path: metadata.name value: afm-adapter-service-account - - equal: - path: metadata.namespace - value: sh-helm-test - - - it: should create default fs adapter service account name - set: - image.name: formsolutions-adapter - serviceAccount: - create: true - asserts: - - isKind: - of: ServiceAccount - - equal: - path: metadata.name - value: fs-adapter-service-account - equal: path: metadata.namespace value: sh-helm-test @@ -105,4 +90,4 @@ tests: - it: should not create service account asserts: - hasDocuments: - count: 0 \ No newline at end of file + count: 0 -- GitLab From 989a17c85b7f984e0812bcae7447c73c4e784c11 Mon Sep 17 00:00:00 2001 From: Felix Reichenbach <felix.reichenbach@mgm-tp.com> Date: Fri, 7 Feb 2025 16:29:16 +0100 Subject: [PATCH 6/7] rename afm to eingang --- src/main/helm/templates/_helpers.tpl | 6 +- src/main/helm/templates/deployment.yaml | 2 +- src/main/helm/templates/service.yaml | 4 +- src/main/helm/templates/service_monitor.yaml | 4 +- src/main/helm/values.yaml | 1 - .../helm/deployment_defaults_labels_test.yaml | 2 +- .../deployment_imagepull_secret_test.yaml | 4 +- src/test/helm/deployment_resources_test.yaml | 3 +- .../helm/deployment_service_account_test.yaml | 9 - src/test/helm/ingress_nginx_test.yaml | 6 +- src/test/helm/ingress_test.yaml | 6 +- src/test/helm/network_policy_test.yaml | 161 +++++++++--------- src/test/helm/service_account_test.yaml | 16 -- src/test/helm/service_monitor_test.yaml | 20 +-- src/test/helm/service_test.yaml | 20 +-- 15 files changed, 117 insertions(+), 147 deletions(-) diff --git a/src/main/helm/templates/_helpers.tpl b/src/main/helm/templates/_helpers.tpl index fdb9ddf34..b0f54ef2d 100644 --- a/src/main/helm/templates/_helpers.tpl +++ b/src/main/helm/templates/_helpers.tpl @@ -51,7 +51,7 @@ {{/* Default Labels: Helm recommended best-practice labels https://helm.sh/docs/chart_best_practices/labels/ */}} {{- define "app.defaultLabels" }} -app.kubernetes.io/instance: afm-adapter +app.kubernetes.io/instance: eingang-adapter app.kubernetes.io/managed-by: {{ include "app.managedBy" . }} app.kubernetes.io/name: {{ .Release.Name }} app.kubernetes.io/part-of: ozgcloud @@ -94,15 +94,13 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }} {{- else if eq (.Values.image).name "formcycle-adapter" }} {{- printf "%s-formcycle.%s" (include "app.ozgcloudBezeichner" .) .Values.baseUrl }} {{- else }} -{{- printf "%s-afm.%s" (include "app.ozgcloudBezeichner" .) .Values.baseUrl }} +{{- printf "%s-eingang.%s" (include "app.ozgcloudBezeichner" .) .Values.baseUrl }} {{- end }} {{- end -}} {{- define "app.serviceAccountName" -}} {{- if (.Values.serviceAccount).name }} {{- printf "%s" .Values.serviceAccount.name }} -{{- else if eq (.Values.image).name "intelliform-adapter" }} -{{- printf "afm-adapter-service-account" }} {{- else if eq (.Values.image).name "formcycle-adapter" }} {{- printf "formcycle-adapter-service-account" }} {{- else if eq (.Values.image).name "enterprise-adapter" }} diff --git a/src/main/helm/templates/deployment.yaml b/src/main/helm/templates/deployment.yaml index ff60598c9..4ea2406bb 100644 --- a/src/main/helm/templates/deployment.yaml +++ b/src/main/helm/templates/deployment.yaml @@ -45,7 +45,7 @@ spec: metadata: labels: {{- include "app.defaultLabels" . | indent 8 }} - component: afm-adapter + component: eingang-adapter spec: {{- if (.Values.serviceAccount).create }} serviceAccountName: {{ include "app.serviceAccountName" . }} diff --git a/src/main/helm/templates/service.yaml b/src/main/helm/templates/service.yaml index 93574b29b..78dc3c5b8 100644 --- a/src/main/helm/templates/service.yaml +++ b/src/main/helm/templates/service.yaml @@ -29,7 +29,7 @@ metadata: namespace: {{ include "app.namespace" . }} labels: {{- include "app.defaultLabels" . | indent 4 }} - component: afm-adapter-service + component: eingang-adapter-service spec: ports: - name: http @@ -42,4 +42,4 @@ spec: type: ClusterIP selector: {{- include "app.matchLabels" . | indent 4 }} - component: afm-adapter \ No newline at end of file + component: eingang-adapter \ No newline at end of file diff --git a/src/main/helm/templates/service_monitor.yaml b/src/main/helm/templates/service_monitor.yaml index 053a25810..70f64b42e 100644 --- a/src/main/helm/templates/service_monitor.yaml +++ b/src/main/helm/templates/service_monitor.yaml @@ -29,7 +29,7 @@ metadata: namespace: {{ include "app.namespace" . }} labels: {{- include "app.defaultLabels" . | indent 4 }} - component: afm-adapter-service-monitor + component: eingang-adapter-service-monitor spec: endpoints: - port: metrics @@ -40,4 +40,4 @@ spec: selector: matchLabels: {{- include "app.matchLabels" . | indent 6 }} - component: afm-adapter-service \ No newline at end of file + component: eingang-adapter-service \ No newline at end of file diff --git a/src/main/helm/values.yaml b/src/main/helm/values.yaml index 541998250..57e9ee218 100644 --- a/src/main/helm/values.yaml +++ b/src/main/helm/values.yaml @@ -31,7 +31,6 @@ image: ingress: enabled: true - # overrideHost: kiel-afm.dev.by.ozg-cloud.de routing: targetVorgangManagerName: vorgang-manager diff --git a/src/test/helm/deployment_defaults_labels_test.yaml b/src/test/helm/deployment_defaults_labels_test.yaml index 89894411a..bcc3c9bc5 100644 --- a/src/test/helm/deployment_defaults_labels_test.yaml +++ b/src/test/helm/deployment_defaults_labels_test.yaml @@ -38,7 +38,7 @@ tests: - equal: path: metadata.labels value: - app.kubernetes.io/instance: afm-adapter + app.kubernetes.io/instance: eingang-adapter app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: eingang-adapter app.kubernetes.io/namespace: sh-helm-test diff --git a/src/test/helm/deployment_imagepull_secret_test.yaml b/src/test/helm/deployment_imagepull_secret_test.yaml index 44d18840f..183933f71 100644 --- a/src/test/helm/deployment_imagepull_secret_test.yaml +++ b/src/test/helm/deployment_imagepull_secret_test.yaml @@ -24,7 +24,7 @@ suite: test deployment imagepullsecret release: - name: afm-adapter + name: eingang-adapter namespace: sh-helm-test templates: - templates/deployment.yaml @@ -41,4 +41,4 @@ tests: - it: should fail tempalte when not set asserts: - failedTemplate: - errorMessage: imagePullSecret must be set \ No newline at end of file + errorMessage: imagePullSecret must be set diff --git a/src/test/helm/deployment_resources_test.yaml b/src/test/helm/deployment_resources_test.yaml index 6404c0c9b..a938b0eef 100644 --- a/src/test/helm/deployment_resources_test.yaml +++ b/src/test/helm/deployment_resources_test.yaml @@ -24,7 +24,7 @@ suite: test deployment resources release: - name: afm-adapter + name: eingang-adapter templates: - templates/deployment.yaml set: @@ -58,4 +58,3 @@ tests: asserts: - isEmpty: path: spec.template.spec.containers[0].resources - diff --git a/src/test/helm/deployment_service_account_test.yaml b/src/test/helm/deployment_service_account_test.yaml index fbf9bf795..a3c43ba41 100644 --- a/src/test/helm/deployment_service_account_test.yaml +++ b/src/test/helm/deployment_service_account_test.yaml @@ -33,15 +33,6 @@ set: ozgcloud.environment: test imagePullSecret: image-pull-secret tests: - - it: should use afm-adapter service account name - set: - image.name: intelliform-adapter - serviceAccount: - create: true - asserts: - - equal: - path: spec.template.spec.serviceAccountName - value: afm-adapter-service-account - it: should use formcycle-adapter service account name set: image.name: formcycle-adapter diff --git a/src/test/helm/ingress_nginx_test.yaml b/src/test/helm/ingress_nginx_test.yaml index cd36fce3a..b46286a5d 100644 --- a/src/test/helm/ingress_nginx_test.yaml +++ b/src/test/helm/ingress_nginx_test.yaml @@ -31,13 +31,13 @@ set: bezeichner: helm tests: - - it: should create afm ingress tls + - it: should create eingang ingress tls release: - name: afm-adapter + name: eingang-adapter asserts: - equal: path: spec.tls[0].secretName - value: helm-afm-adapter-tls + value: helm-eingang-adapter-tls - it: should not set secretName set: diff --git a/src/test/helm/ingress_test.yaml b/src/test/helm/ingress_test.yaml index a5a2f64fa..24dc0871a 100644 --- a/src/test/helm/ingress_test.yaml +++ b/src/test/helm/ingress_test.yaml @@ -63,14 +63,14 @@ tests: - equal: path: spec.rules[0].http.paths[0].pathType value: ImplementationSpecific - - it: should create afm host + - it: should create eingang host asserts: - equal: path: spec.rules[0].host - value: helm-afm.test.sh.ozg-cloud.de + value: helm-eingang.test.sh.ozg-cloud.de - equal: path: spec.tls[0].hosts[0] - value: helm-afm.test.sh.ozg-cloud.de + value: helm-eingang.test.sh.ozg-cloud.de - it: should create formcycle host set: diff --git a/src/test/helm/network_policy_test.yaml b/src/test/helm/network_policy_test.yaml index 06a416e43..d10537996 100644 --- a/src/test/helm/network_policy_test.yaml +++ b/src/test/helm/network_policy_test.yaml @@ -24,7 +24,7 @@ suite: network policy test release: - name: afm-adapter + name: eingang-adapter namespace: by-helm-test templates: - templates/network_policy.yaml @@ -51,7 +51,7 @@ tests: - equal: path: metadata value: - name: network-policy-afm-adapter + name: network-policy-eingang-adapter namespace: by-helm-test - it: validate spec set: @@ -68,36 +68,36 @@ tests: - Ingress - Egress ingress: - - ports: - - port: 8080 - - from: - - namespaceSelector: - matchLabels: - name: openshift-user-workload-monitoring - ports: - - protocol: TCP - port: 8081 + - ports: + - port: 8080 + - from: + - namespaceSelector: + matchLabels: + name: openshift-user-workload-monitoring + ports: + - protocol: TCP + port: 8081 egress: - - to: - - podSelector: - matchLabels: - component: vorgang-manager - ports: - - port: 9090 - protocol: TCP - - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: test-dns-namespace - ports: - - port: 53 - protocol: UDP - - port: 53 - protocol: TCP - - port: 5353 - protocol: UDP - - port: 5353 - protocol: TCP + - to: + - podSelector: + matchLabels: + component: vorgang-manager + ports: + - port: 9090 + protocol: TCP + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: test-dns-namespace + ports: + - port: 53 + protocol: UDP + - port: 53 + protocol: TCP + - port: 5353 + protocol: UDP + - port: 5353 + protocol: TCP - it: should set monitoring namespace set: @@ -149,40 +149,39 @@ tests: - hasDocuments: count: 1 - - it: should add zufi rules when zufi-routing is enabled set: networkPolicy: dnsServerNamespace: test-dns-server-namespace routing: routingStrategy: ZUFI - zufiManager: + zufiManager: namespace: zufi-namespace asserts: - - contains: - path: spec.egress - content: - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: zufi-namespace - podSelector: - matchLabels: - component: zufi-server - ports: - - port: 9090 - protocol: TCP - - contains: - path: spec.egress - content: - to: - - namespaceSelector: {} - podSelector: - matchLabels: - component: vorgang-manager - ports: - - port: 9090 - protocol: TCP + - contains: + path: spec.egress + content: + to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: zufi-namespace + podSelector: + matchLabels: + component: zufi-server + ports: + - port: 9090 + protocol: TCP + - contains: + path: spec.egress + content: + to: + - namespaceSelector: {} + podSelector: + matchLabels: + component: vorgang-manager + ports: + - port: 9090 + protocol: TCP - it: should throw error when zufi is enabled but zufi namespace not set set: @@ -191,35 +190,35 @@ tests: routing: routingStrategy: ZUFI asserts: - - failedTemplate: - errorMessage: routing.zufiManager.namespace must be set if routingStrategy=ZUFI + - failedTemplate: + errorMessage: routing.zufiManager.namespace must be set if routingStrategy=ZUFI - it: should not add zufi rule when zufi-routing is disabled set: networkPolicy: dnsServerNamespace: test-dns-server-namespace routing: - zufiManager: + zufiManager: namespace: zufi-namespace asserts: - - notContains: - path: spec.egress - content: - to: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: zufi-namespace - podSelector: - matchLabels: - component: zufi-server - - notContains: - path: spec.egress - content: - to: - - namespaceSelector: {} - podSelector: - matchLabels: - component: vorgang-manager - ports: - - port: 9090 - protocol: TCP \ No newline at end of file + - notContains: + path: spec.egress + content: + to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: zufi-namespace + podSelector: + matchLabels: + component: zufi-server + - notContains: + path: spec.egress + content: + to: + - namespaceSelector: {} + podSelector: + matchLabels: + component: vorgang-manager + ports: + - port: 9090 + protocol: TCP diff --git a/src/test/helm/service_account_test.yaml b/src/test/helm/service_account_test.yaml index b64225463..e25b18bcf 100644 --- a/src/test/helm/service_account_test.yaml +++ b/src/test/helm/service_account_test.yaml @@ -29,22 +29,6 @@ release: templates: - templates/service_account.yaml tests: - - it: should create default afm adapter service account name - set: - image.name: intelliform-adapter - serviceAccount: - create: true - asserts: - - isKind: - of: ServiceAccount - - isAPIVersion: - of: v1 - - equal: - path: metadata.name - value: afm-adapter-service-account - - equal: - path: metadata.namespace - value: sh-helm-test - it: should create default formcycle adapter service account name set: image.name: formcycle-adapter diff --git a/src/test/helm/service_monitor_test.yaml b/src/test/helm/service_monitor_test.yaml index 8c4a1b5b0..ccc71edd8 100644 --- a/src/test/helm/service_monitor_test.yaml +++ b/src/test/helm/service_monitor_test.yaml @@ -24,12 +24,12 @@ suite: test service monitor release: - name: afm-adapter + name: eingang-adapter namespace: sh-helm-test templates: - templates/service_monitor.yaml tests: - - it: should have basic info and the label component with value afm-adapter-service-monitor attached + - it: should have basic info and the label component with value eingang-adapter-service-monitor attached asserts: - isKind: of: ServiceMonitor @@ -37,26 +37,26 @@ tests: of: monitoring.coreos.com/v1 - equal: path: metadata.name - value: afm-adapter + value: eingang-adapter - equal: path: metadata.namespace value: sh-helm-test - equal: path: metadata.labels["component"] - value: afm-adapter-service-monitor + value: eingang-adapter-service-monitor - it: should contain default lables and component lables asserts: - equal: path: metadata.labels value: - app.kubernetes.io/instance: afm-adapter + app.kubernetes.io/instance: eingang-adapter app.kubernetes.io/managed-by: Helm - app.kubernetes.io/name: afm-adapter + app.kubernetes.io/name: eingang-adapter app.kubernetes.io/namespace: sh-helm-test app.kubernetes.io/part-of: ozgcloud app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS - component: afm-adapter-service-monitor + component: eingang-adapter-service-monitor helm.sh/chart: eingang-adapter-0.0.0-MANAGED-BY-JENKINS ozg-component: eingangsadapter @@ -81,16 +81,16 @@ tests: - contains: path: spec.namespaceSelector.matchNames content: sh-helm-test - - it: selector should contain the component label with the value afm-adapter-service + - it: selector should contain the component label with the value eingang-adapter-service asserts: - equal: path: spec.selector.matchLabels["component"] - value: afm-adapter-service + value: eingang-adapter-service - it: selector should contain helm recommended labels name and namespace asserts: - equal: path: spec.selector.matchLabels["app.kubernetes.io/name"] - value: afm-adapter + value: eingang-adapter - equal: path: spec.selector.matchLabels["app.kubernetes.io/namespace"] value: sh-helm-test diff --git a/src/test/helm/service_test.yaml b/src/test/helm/service_test.yaml index bec1a28db..16119984f 100644 --- a/src/test/helm/service_test.yaml +++ b/src/test/helm/service_test.yaml @@ -24,12 +24,12 @@ suite: test service release: - name: afm-adapter + name: eingang-adapter namespace: sh-helm-test templates: - templates/service.yaml tests: - - it: should have basics and the label component with value afm-adapter-service attached + - it: should have basics and the label component with value eingang-adapter-service attached asserts: - isKind: of: Service @@ -37,10 +37,10 @@ tests: of: v1 - equal: path: metadata.labels["component"] - value: afm-adapter-service + value: eingang-adapter-service - equal: path: metadata.name - value: afm-adapter + value: eingang-adapter - equal: path: metadata.namespace value: sh-helm-test @@ -70,16 +70,16 @@ tests: protocol: TCP count: 1 any: true - - it: selector should contain the component label with the value afm-adapter + - it: selector should contain the component label with the value eingang-adapter asserts: - equal: path: spec.selector["component"] - value: afm-adapter + value: eingang-adapter - it: selector should contain helm recommended labels name and namespace asserts: - equal: path: spec.selector["app.kubernetes.io/name"] - value: afm-adapter + value: eingang-adapter - equal: path: spec.selector["app.kubernetes.io/namespace"] value: sh-helm-test @@ -89,12 +89,12 @@ tests: - equal: path: metadata.labels value: - app.kubernetes.io/instance: afm-adapter + app.kubernetes.io/instance: eingang-adapter app.kubernetes.io/managed-by: Helm - app.kubernetes.io/name: afm-adapter + app.kubernetes.io/name: eingang-adapter app.kubernetes.io/namespace: sh-helm-test app.kubernetes.io/part-of: ozgcloud app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS - component: afm-adapter-service + component: eingang-adapter-service helm.sh/chart: eingang-adapter-0.0.0-MANAGED-BY-JENKINS ozg-component: eingangsadapter -- GitLab From bd65c7168ab5757dd32bea9e842ddc20bac103dc Mon Sep 17 00:00:00 2001 From: Felix Reichenbach <felix.reichenbach@mgm-tp.com> Date: Fri, 7 Feb 2025 16:34:46 +0100 Subject: [PATCH 7/7] remove test connection charts --- .../tests/test-ingress-connection.yaml | 39 ------------------- .../tests/test-service-connection.yaml | 39 ------------------- 2 files changed, 78 deletions(-) delete mode 100644 src/main/helm/templates/tests/test-ingress-connection.yaml delete mode 100644 src/main/helm/templates/tests/test-service-connection.yaml diff --git a/src/main/helm/templates/tests/test-ingress-connection.yaml b/src/main/helm/templates/tests/test-ingress-connection.yaml deleted file mode 100644 index 6d33a4e54..000000000 --- a/src/main/helm/templates/tests/test-ingress-connection.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -apiVersion: v1 -kind: Pod -metadata: - name: "{{ .Release.Name }}-test-ingress" - labels: - {{- include "app.matchLabels" . | nindent 4 }} - annotations: - "helm.sh/hook": test -spec: - containers: - - name: wget - image: busybox - command: ['wget'] - args: ['https://{{ .Values.ingress.host }}/ws/intelliform_formDatas.wsdl'] - restartPolicy: Never diff --git a/src/main/helm/templates/tests/test-service-connection.yaml b/src/main/helm/templates/tests/test-service-connection.yaml deleted file mode 100644 index 62dda4f5e..000000000 --- a/src/main/helm/templates/tests/test-service-connection.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den -# Ministerpräsidenten des Landes Schleswig-Holstein -# Staatskanzlei -# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung -# -# Lizenziert unter der EUPL, Version 1.2 oder - sobald -# diese von der Europäischen Kommission genehmigt wurden - -# Folgeversionen der EUPL ("Lizenz"); -# Sie dürfen dieses Werk ausschließlich gemäß -# dieser Lizenz nutzen. -# Eine Kopie der Lizenz finden Sie hier: -# -# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 -# -# Sofern nicht durch anwendbare Rechtsvorschriften -# gefordert oder in schriftlicher Form vereinbart, wird -# die unter der Lizenz verbreitete Software "so wie sie -# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - -# ausdrücklich oder stillschweigend - verbreitet. -# Die sprachspezifischen Genehmigungen und Beschränkungen -# unter der Lizenz sind dem Lizenztext zu entnehmen. -# - -apiVersion: v1 -kind: Pod -metadata: - name: "{{ .Release.Name }}-test-connection" - labels: - {{- include "app.matchLabels" . | nindent 4 }} - annotations: - "helm.sh/hook": test -spec: - containers: - - name: wget - image: busybox - command: ['wget'] - args: ['{{ .Release.Name }}:8080/ws/intelliform_formDatas.wsdl'] - restartPolicy: Never -- GitLab