diff --git a/Jenkinsfile b/Jenkinsfile index 265c7255e35a1caebe92443e6dfeb1be885001a7..bb1267ea8b7418658e16a9a869ae7eae4a4c449d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -29,7 +29,7 @@ pipeline { def interfaceVersion = getPomVersion('vorgang-manager-interface/pom.xml') def mailVersion = getPomVersion('nachrichten-manager/pom.xml') - if(env.BRANCH_NAME == 'release'){ + if(isReleaseBranch()){ if ( !(rootVersion ==~ RELEASE_REGEX) || !(serverVersion ==~ RELEASE_REGEX) || !(interfaceVersion ==~ RELEASE_REGEX) || !(mailVersion ==~ RELEASE_REGEX)) { error("Keine Release Version für Branch ${env.BRANCH_NAME}.") } @@ -42,6 +42,22 @@ pipeline { if( !(rootVersion == serverVersion && rootVersion == interfaceVersion && rootVersion == mailVersion)){ error("Versionen sind nicht identisch") } + + def bayernIdProxyParent = getPomVersion('nachrichten-bayernid-proxy/pom.xml') + def bayernIdProxyInterface = getPomVersion('nachrichten-bayernid-proxy/bayernid-proxy-interface/pom.xml') + + if(isReleaseBranch()){ + if ( !(bayernIdProxyParent ==~ RELEASE_REGEX) || !(bayernIdProxyInterface ==~ RELEASE_REGEX)) { + error("Keine Release Version für BayernIdProxy Branch ${env.BRANCH_NAME}.") + } + } else { + if ( !(bayernIdProxyParent ==~ SNAPSHOT_REGEX) || !(bayernIdProxyInterface ==~ SNAPSHOT_REGEX)) { + error("Keine Snapshot Version für BayernIdProxy Branch ${env.BRANCH_NAME}.") + } + } + if( !(bayernIdProxyParent == bayernIdProxyInterface)){ + error("Versionen BayernIdProxy sind nicht identisch") + } } } } @@ -75,7 +91,7 @@ pipeline { } } - stage('Build Docker image') { + stage('Build Docker image vorgang-manager') { steps { script { FAILED_STAGE=env.STAGE_NAME @@ -89,30 +105,63 @@ pipeline { } } - stage('Tag and Push Docker image') { + stage('Build Docker image nachrichten-bayernid-proxy') { + steps { + script { + FAILED_STAGE=env.STAGE_NAME + } + + configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { + dir('nachrichten-bayernid-proxy/bayernid-proxy-impl') { + sh 'mvn --no-transfer-progress -s $MAVEN_SETTINGS spring-boot:build-image -DskipTests -Dmaven.wagon.http.retryHandler.count=3' + } + } + } + } + + stage('Tag and Push Docker image vorgang-manager') { steps { script { FAILED_STAGE=env.STAGE_NAME - IMAGE_TAG = generateImageTag() + IMAGE_TAG = generateImageTag('pom.xml') - tagAndPushDockerImage(IMAGE_TAG) + tagAndPushDockerImage('vorgang-manager', IMAGE_TAG) if (env.BRANCH_NAME == 'master') { - tagAndPushDockerImage('snapshot-latest') - tagAndPushDockerImage('e2e-test') + tagAndPushDockerImage('vorgang-manager', 'snapshot-latest') + tagAndPushDockerImage('vorgang-manager', 'e2e-test') } else if (env.BRANCH_NAME == 'release') { - tagAndPushDockerImage('latest') + tagAndPushDockerImage('vorgang-manager', 'latest') } } } } - stage('Test, build and deploy Helm Chart') { + stage('Tag and Push Docker image nachrichten-bayernid-proxy') { steps { script { FAILED_STAGE=env.STAGE_NAME - HELM_CHART_VERSION = generateHelmChartVersion() + IMAGE_TAG_BAYERN_ID_PROXY = generateImageTag('nachrichten-bayernid-proxy/pom.xml') + + tagAndPushDockerImage('bayernid-proxy', IMAGE_TAG_BAYERN_ID_PROXY) + + if (env.BRANCH_NAME == 'master') { + tagAndPushDockerImage('bayernid-proxy', 'snapshot-latest') + tagAndPushDockerImage('bayernid-proxy', 'e2e-test') + } + else if (env.BRANCH_NAME == 'release') { + tagAndPushDockerImage('bayernid-proxy', 'latest') + } + } + } + } + + stage('Test, build and deploy Helm Chart vorgang-manager') { + steps { + script { + FAILED_STAGE=env.STAGE_NAME + HELM_CHART_VERSION = generateHelmChartVersion("pom.xml") sh "./run_helm_test.sh" @@ -120,12 +169,32 @@ pipeline { sh "helm package --version=${HELM_CHART_VERSION} ." - deployHelmChart(HELM_CHART_VERSION) + deployHelmChart("vorgang-manager", HELM_CHART_VERSION) } } } } + stage('Test, build and deploy Helm Chart bayernid-proxy') { + steps { + script { + FAILED_STAGE=env.STAGE_NAME + HELM_CHART_VERSION_BAYERN_ID_PROXY = generateHelmChartVersion("nachrichten-bayernid-proxy/pom.xml") + + dir('nachrichten-bayernid-proxy') { + sh "./run_helm_test.sh" + } + + dir('nachrichten-bayernid-proxy/src/main/helm') { + + sh "helm package --version=${HELM_CHART_VERSION_BAYERN_ID_PROXY} ." + + deployHelmChart("bayernid-proxy", HELM_CHART_VERSION_BAYERN_ID_PROXY) + } + } + } + } + stage('Trigger Dev rollout') { when { branch 'master' @@ -136,8 +205,8 @@ pipeline { cloneGitopsRepo() - setNewDevVorgangManagerVersion() - + setNewVorgangManagerGitopsVersion("dev") + setNewNachrichtenBayernIdProxyGitopsVersion("dev") pushDevGitopsRepo() } } @@ -153,7 +222,8 @@ pipeline { cloneGitopsRepo() - setNewTestVorgangManagerVersion() + setNewVorgangManagerGitopsVersion("test") + setNewNachrichtenBayernIdProxyGitopsVersion("test") pushTestGitopsRepo() } @@ -182,7 +252,7 @@ pipeline { branch 'master' } steps { - script { + script { FAILED_STAGE=env.STAGE_NAME configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { @@ -225,12 +295,23 @@ pipeline { unstable("SonarQube failed") } } + + dir('nachrichten-bayernid-proxy') { + try { + withSonarQubeEnv('sonarqube-ozg-sh'){ + sh 'mvn -s $MAVEN_SETTINGS sonar:sonar' + } + } catch (Exception e) { + unstable("SonarQube BayernIdProxy failed") + } + } } } - } + } } } + post { always{ junit testResults: '**/target/surefire-reports/*.xml', skipPublishingChecks: true @@ -246,14 +327,17 @@ pipeline { } +Boolean isReleaseBranch() { + return env.BRANCH_NAME == 'release' +} -Void deployHelmChart(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=@vorgang-manager-'''+helmChartVersion+'''.tgz''', returnStdout: true + 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 } else { - result = sh script: '''curl -u $USERNAME:$PASSWORD https://nexus.ozg-sh.de/service/rest/v1/components?repository=ozg-base-apps-snapshot -F file=@vorgang-manager-'''+helmChartVersion+'''.tgz''', returnStdout: true + result = sh script: '''curl -u $USERNAME:$PASSWORD https://nexus.ozg-sh.de/service/rest/v1/components?repository=ozg-base-apps-snapshot -F file=@'''+helmChartName+'''-'''+helmChartVersion+'''.tgz''', returnStdout: true } if (result != '') { @@ -262,8 +346,8 @@ Void deployHelmChart(String helmChartVersion) { } } -String generateHelmChartVersion() { - def chartVersion = getPomVersion('pom.xml') +String generateHelmChartVersion(String pomFile) { + def chartVersion = getPomVersion(pomFile) if (env.BRANCH_NAME == 'master') { chartVersion += "-${env.GIT_COMMIT.take(7)}" @@ -275,12 +359,12 @@ String generateHelmChartVersion() { return chartVersion.replaceAll("_", "-") } -Void tagAndPushDockerImage(String newTag){ +Void tagAndPushDockerImage(String imageName, String newTag){ withCredentials([usernamePassword(credentialsId: 'jenkins-nexus-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) { sh 'docker login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}' - sh "docker tag docker.ozg-sh.de/vorgang-manager:build-latest docker.ozg-sh.de/vorgang-manager:${newTag}" - sh "docker push docker.ozg-sh.de/vorgang-manager:${newTag}" + sh "docker tag docker.ozg-sh.de/${imageName}:build-latest docker.ozg-sh.de/${imageName}:${newTag}" + sh "docker push docker.ozg-sh.de/${imageName}:${newTag}" } } @@ -290,8 +374,8 @@ String getPomVersion(String pomFile){ return pom.version } -String generateImageTag() { - def imageTag = "${env.BRANCH_NAME}-${getPomVersion('pom.xml')}" +String generateImageTag(String pomFile) { + def imageTag = "${env.BRANCH_NAME}-${getPomVersion(pomFile)}" if (env.BRANCH_NAME == 'master') { imageTag += "-${env.GIT_COMMIT.take(7)}" @@ -318,18 +402,9 @@ Void cloneGitopsRepo() { configureGit() } -Void setNewDevVorgangManagerVersion() { - setNewVorgangManagerGitopsVersion("dev") -} - -Void setNewTestVorgangManagerVersion() { - setNewVorgangManagerGitopsVersion("test") -} - Void setNewVorgangManagerGitopsVersion(String environment) { dir("gitops") { def envFile = "${environment}/application/values/vorgang-manager-values.yaml" - def envVersions = readYaml file: envFile envVersions.vorgang_manager.image.tag = IMAGE_TAG @@ -339,6 +414,18 @@ Void setNewVorgangManagerGitopsVersion(String environment) { } } +Void setNewNachrichtenBayernIdProxyGitopsVersion(String environment) { + dir("gitops") { + def envFile = "${environment}/application/values/bayernid-proxy-values.yaml" + def envVersions = readYaml file: envFile + + envVersions.nachrichten_bayernid_proxy.image.tag = IMAGE_TAG_BAYERN_ID_PROXY + envVersions.nachrichten_bayernid_proxy.helm.version = HELM_CHART_VERSION_BAYERN_ID_PROXY + + writeYaml file: envFile, data: envVersions, overwrite: true + } +} + Void pushDevGitopsRepo() { pushNewGitopsVersion('dev') } diff --git a/nachrichten-bayernid-proxy/bayernid-proxy-impl/pom.xml b/nachrichten-bayernid-proxy/bayernid-proxy-impl/pom.xml index 042d81b0eabe82beb42556cb821ea681b3f609fa..9da99d3bf80c5c2e69013ca017986d7897fb5651 100644 --- a/nachrichten-bayernid-proxy/bayernid-proxy-impl/pom.xml +++ b/nachrichten-bayernid-proxy/bayernid-proxy-impl/pom.xml @@ -39,6 +39,8 @@ <name>OZG Cloud BayernID Proxy Implementation</name> <properties> + <jaxb-maven-plugin.version>4.0.0</jaxb-maven-plugin.version> + <spring-boot.build-image.imageName>docker.ozg-sh.de/bayernid-proxy:build-latest</spring-boot.build-image.imageName> </properties> @@ -55,8 +57,8 @@ <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-web</artifactId> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> diff --git a/nachrichten-bayernid-proxy/bayernid-proxy-impl/src/main/resources/application-dev.yml b/nachrichten-bayernid-proxy/bayernid-proxy-impl/src/main/resources/application-dev.yml index a77a3901c354302914dc89678013e7cd2622cfc8..df2f1cca69b93f18902100a3a93997030beb2000 100644 --- a/nachrichten-bayernid-proxy/bayernid-proxy-impl/src/main/resources/application-dev.yml +++ b/nachrichten-bayernid-proxy/bayernid-proxy-impl/src/main/resources/application-dev.yml @@ -1,3 +1,5 @@ ozgcloud: bayernid: - server: "https://infra-pre-id.bayernportal.de/bspx-postkorb-okkomm-ws/bspservices/postkorbkomm" + proxy: + server: "https://infra-pre-id.bayernportal.de/bspx-postkorb-okkomm-ws/bspservices/postkorbkomm" + postkorbId: "28721c6f-b78f-4d5c-a048-19fd2fc429d2" diff --git a/nachrichten-bayernid-proxy/bayernid-proxy-impl/src/main/resources/application.yml b/nachrichten-bayernid-proxy/bayernid-proxy-impl/src/main/resources/application.yml index 6c12151d0abfef8a50948c2218bb9042435d8ed9..69790c2b42e751213e739cf8ca6a87df6fd74068 100644 --- a/nachrichten-bayernid-proxy/bayernid-proxy-impl/src/main/resources/application.yml +++ b/nachrichten-bayernid-proxy/bayernid-proxy-impl/src/main/resources/application.yml @@ -2,3 +2,28 @@ logging: level: ROOT: WARN '[de.ozgcloud]': INFO + config: classpath:log4j2-local.xml + + +management: + server: + port: 8081 + health: + livenessState: + enabled: true + readinessState: + enabled: true + endpoint: + health: + group: + exploratory: + include: livenessState,readinessState,ping + show-details: always + probes: + enabled: true + prometheus: + enabled: true + endpoints: + web: + exposure: + include: "*" diff --git a/nachrichten-bayernid-proxy/run_helm_test.sh b/nachrichten-bayernid-proxy/run_helm_test.sh new file mode 100755 index 0000000000000000000000000000000000000000..21019cc23dab325f1ec88421dc73caa849af660f --- /dev/null +++ b/nachrichten-bayernid-proxy/run_helm_test.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +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' . + diff --git a/nachrichten-bayernid-proxy/src/main/helm/.helmignore b/nachrichten-bayernid-proxy/src/main/helm/.helmignore new file mode 100644 index 0000000000000000000000000000000000000000..3d0dbe446770be5127eb719b695414c427b09715 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/main/helm/.helmignore @@ -0,0 +1 @@ +tests/ \ No newline at end of file diff --git a/nachrichten-bayernid-proxy/src/main/helm/Chart.yaml b/nachrichten-bayernid-proxy/src/main/helm/Chart.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b04099d33913b9524a729a95a20dc769f5663839 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/main/helm/Chart.yaml @@ -0,0 +1,30 @@ +# +# 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.0" +description: A Helm chart for Bayernid-Proxy +name: bayernid-proxy +version: 0.0.0-MANAGED-BY-JENKINS +icon: https://simpleicons.org/icons/helm.svg diff --git a/nachrichten-bayernid-proxy/src/main/helm/templates/_helpers.tpl b/nachrichten-bayernid-proxy/src/main/helm/templates/_helpers.tpl new file mode 100644 index 0000000000000000000000000000000000000000..0ea6c8d8c9dd30157cc593c949f47a7be8a738a2 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/main/helm/templates/_helpers.tpl @@ -0,0 +1,47 @@ + +{{/* Default Labels: Helm recommended best-practice labels https://helm.sh/docs/chart_best_practices/labels/ */}} +{{- define "app.defaultLabels" }} +app.kubernetes.io/instance: bayernid-proxy +app.kubernetes.io/managed-by: {{ .Release.Service }} +app.kubernetes.io/name: {{ .Release.Name }} +app.kubernetes.io/namespace: {{ .Release.Namespace }} +app.kubernetes.io/part-of: ozgcloud +app.kubernetes.io/version: {{ .Chart.Version }} +helm.sh/chart: {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" }} +app.kubernetes.io/component: bayernid-proxy +component: bayernid-proxy +{{- end -}} + +{{- define "app.matchLabels" }} +app.kubernetes.io/name: {{ .Release.Name }} +app.kubernetes.io/namespace: {{ .Release.Namespace }} +component: bayernid-proxy +{{- 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 "ozgcloud.environment muss angegeben sein" (.Values.ozgcloud).environment -}} +{{- end -}} + + +{{ define "app.zertifikatPath" }} +{{- required "ozgcloud zertifikat path muss angegeben sein" (.Values.ozgcloud).bayernid.zertifikat.path -}} +{{- end -}} + + +{{ define "app.zertifikatFilename" }} +{{- required "ozgcloud zertifikat fileName muss angegeben sein" (.Values.ozgcloud).bayernid.zertifikat.fileName -}} +{{- end -}} + + +{{- define "app.serviceAccountName" -}} +{{ printf "%s" ( (.Values.serviceAccount).name | default "bayernid-proxy-service-account" ) }} +{{- end -}} + diff --git a/nachrichten-bayernid-proxy/src/main/helm/templates/configmap_bindings_type.yaml b/nachrichten-bayernid-proxy/src/main/helm/templates/configmap_bindings_type.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d56b2505d154567012dff38fe9ef5b50887b45a5 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/main/helm/templates/configmap_bindings_type.yaml @@ -0,0 +1,32 @@ +# +# 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: ConfigMap +metadata: + name: bindings-type + namespace: {{ .Release.Namespace }} +data: + type: | + ca-certificates \ No newline at end of file diff --git a/nachrichten-bayernid-proxy/src/main/helm/templates/deployment.yaml b/nachrichten-bayernid-proxy/src/main/helm/templates/deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b3169c97d56ffc2da535e79f0c7f929a69f2f07d --- /dev/null +++ b/nachrichten-bayernid-proxy/src/main/helm/templates/deployment.yaml @@ -0,0 +1,166 @@ +# +# 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: {{ .Release.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 }} + spec: + {{- if (.Values.serviceAccount).create }} + serviceAccountName: {{ include "app.serviceAccountName" . }} + {{- end }} + topologySpreadConstraints: + - maxSkew: 1 + topologyKey: kubernetes.io/hostname + whenUnsatisfiable: ScheduleAnyway + labelSelector: + matchLabels: + app.kubernetes.io/name: {{ .Release.Name }} + containers: + - env: + - name: SERVICE_BINDING_ROOT + value: "/bindings" + - name: spring_profiles_active + value: {{ include "app.envSpringProfiles" . }} + + {{- with (.Values.env).customList }} +{{ toYaml . | indent 10 }} + {{- end }} + + - name: ozgcloud_bayernid_server + value: {{ required "ozgcloud.bayernid.server must be set" (.Values.ozgcloud).bayernid.server }} + + - name: spring_ssl_bundle_jks_bayern-id-ca_keystore_location + value: "/keystore/bayernid/bayern-id-ca.p12" + - name: spring_ssl_bundle_jks_bayern-id-ca_keystore_type + value: PKCS12 + - name: spring_ssl_bundle_jks_bayern-id-ca_keystore_password + valueFrom: + secretKeyRef: + name: {{ required "ozgcloud.bayernid.certificateSecretName must be set" ((.Values.ozgcloud).bayernid).certificateSecretName }} + key: password + optional: false + + image: "{{ .Values.image.repo }}/{{ .Values.image.name }}:{{ coalesce (.Values.image).tag "latest" }}" + imagePullPolicy: Always + name: bayernid-proxy + ports: + - containerPort: 9090 + name: grpc-9090 + 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: + httpGet: + path: /actuator/health/readiness + port: 8081 + scheme: HTTP + failureThreshold: 10 + initialDelaySeconds: 20 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + 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 }} + stdin: true + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + tty: true + volumeMounts: + - name: bindings + mountPath: "/bindings/ca-certificates/type" + subPath: type + readOnly: true + - name: bayern-id-ca + mountPath: "/keystore/bayernid/bayern-id-ca.p12" + subPath: zertifikat + readOnly: true + - name: temp-dir + mountPath: "/tmp" + + volumes: + - name: bindings + configMap: + name: bindings-type + - name: bayern-id-ca + secret: + secretName: {{ required "ozgcloud.bayernid.certificateSecretName must be set" ((.Values.ozgcloud).bayernid).certificateSecretName }} + optional: false + - name: temp-dir + emptyDir: {} + 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 + securityContext: {} + terminationGracePeriodSeconds: 30 diff --git a/nachrichten-bayernid-proxy/src/main/helm/templates/network_policy.yaml b/nachrichten-bayernid-proxy/src/main/helm/templates/network_policy.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e0effc809597979a1cdb01c636f868c63574f617 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/main/helm/templates/network_policy.yaml @@ -0,0 +1,66 @@ +# +# 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. +# + +{{- if not (.Values.networkPolicy).disabled }} +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: network-policy-bayernid-proxy + namespace: {{ .Release.Namespace }} +spec: + podSelector: + matchLabels: + component: bayernid-proxy + policyTypes: + - Ingress + - Egress + ingress: + - ports: + - port: 9090 + from: + - podSelector: + matchLabels: + component: vorgang-manager +{{- with (.Values.networkPolicy).additionalIngressConfig }} +{{ toYaml . | indent 2 }} +{{- end }} + egress: + - 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 +{{- with (.Values.networkPolicy).additionalEgressConfig }} +{{ toYaml . | indent 2 }} +{{- end }} + +{{- end }} \ No newline at end of file diff --git a/nachrichten-bayernid-proxy/src/main/helm/templates/service.yaml b/nachrichten-bayernid-proxy/src/main/helm/templates/service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ed6467de511d8fddec146bd3fb2a96791f7f7a8f --- /dev/null +++ b/nachrichten-bayernid-proxy/src/main/helm/templates/service.yaml @@ -0,0 +1,42 @@ +# +# 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: {{ .Release.Namespace }} + labels: + {{- include "app.defaultLabels" . | indent 4 }} +spec: + type: ClusterIP + ports: + - name: grpc-9090 + port: 9090 + protocol: TCP + - name: metrics + port: 8081 + protocol: TCP + selector: + {{- include "app.matchLabels" . | indent 4 }} diff --git a/nachrichten-bayernid-proxy/src/main/helm/templates/service_account.yaml b/nachrichten-bayernid-proxy/src/main/helm/templates/service_account.yaml new file mode 100644 index 0000000000000000000000000000000000000000..231d53f52dfe67b27f474ebf552d1e10a052f042 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/main/helm/templates/service_account.yaml @@ -0,0 +1,31 @@ +# +# 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. +# + +{{- if (.Values.serviceAccount).create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "app.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} +{{- end }} \ No newline at end of file diff --git a/nachrichten-bayernid-proxy/src/main/helm/values.yaml b/nachrichten-bayernid-proxy/src/main/helm/values.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7873a672af6bddd71ca66f81988d8a80d5c0b0ca --- /dev/null +++ b/nachrichten-bayernid-proxy/src/main/helm/values.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. +# + + +replicaCount: 2 + + +image: + repo: docker.ozg-sh.de + name: bayernid-proxy + tag: latest # [default: latest] + + +vorgangmanagerName: vorgang-manager + +imagePullSecret: ozgcloud-image-pull-secret + + diff --git a/nachrichten-bayernid-proxy/src/test/helm-linter-values.yaml b/nachrichten-bayernid-proxy/src/test/helm-linter-values.yaml new file mode 100644 index 0000000000000000000000000000000000000000..35e31ef09343dc75bec9ea0fb5712ecaf73382ca --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm-linter-values.yaml @@ -0,0 +1,9 @@ +ozgcloud: + environment: test + bayernid: + server: "https://test" + certificateSecretName: "bayernidCertificat" + +networkPolicy: + dnsServerNamespace: test-dns-namespace + diff --git a/nachrichten-bayernid-proxy/src/test/helm/configmap_bindings_type_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/configmap_bindings_type_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..78236b32067b019da7497306962f0fd74d7d9307 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/configmap_bindings_type_test.yaml @@ -0,0 +1,46 @@ +# +# 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: Certificate ConfigMap Binding +release: + name: vorgang-manager + namespace: sh-helm-test +templates: + - templates/configmap_bindings_type.yaml +tests: + - it: validate configMap values + asserts: + - isKind: + of: ConfigMap + - equal: + path: metadata.name + value: bindings-type + - equal: + path: metadata.namespace + value: sh-helm-test + - equal: + path: data + value: + type: | + ca-certificates \ No newline at end of file diff --git a/nachrichten-bayernid-proxy/src/test/helm/deployment_actuator_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/deployment_actuator_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7fc4a5ff86f25c1d2dbda8e2cf0c6c068956e267 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/deployment_actuator_test.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. +# + +suite: test deployment actuator +release: + name: bayernid-proxy + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud: + environment: dev + bayernid: + server: "http://test" + certificateSecretName: "bayernidCertificat" +tests: + - it: testIsDeployment + template: deployment.yaml + asserts: + - equal: + path: spec.template.spec.containers[0].readinessProbe + value: + failureThreshold: 3 + httpGet: + path: /actuator/health/readiness + port: 8081 + scheme: HTTP + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 3 + - equal: + path: spec.template.spec.containers[0].startupProbe + value: + httpGet: + path: /actuator/health/readiness + port: 8081 + scheme: HTTP + failureThreshold: 10 + initialDelaySeconds: 20 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + + + + diff --git a/nachrichten-bayernid-proxy/src/test/helm/deployment_bayernid_certificate_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/deployment_bayernid_certificate_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b529f09ef6de4f74a95cf89f21595ea08d978128 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/deployment_bayernid_certificate_test.yaml @@ -0,0 +1,113 @@ +# +# 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 bayernid certificate +release: + name: bayernid-proxy + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud: + environment: dev + bayernid: + server: "https://test" + certificateSecretName: "bayernidCertificat" +tests: + - it: should contains bayernid server + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: ozgcloud_bayernid_server + value: "https://test" + + - it: should fail when bayernid server not set + set: + ozgcloud: + environment: dev + bayernid: + server: "" + asserts: + - failedTemplate: + errorMessage: "ozgcloud.bayernid.server must be set" + + + - it: should set variable keystore certificate + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: spring_ssl_bundle_jks_bayern-id-ca_keystore_location + value: /keystore/bayernid/bayern-id-ca.p12 + + - it: should set variable keystore type + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: spring_ssl_bundle_jks_bayern-id-ca_keystore_type + value: PKCS12 + + - it: should set variable keystore password secret reference + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: spring_ssl_bundle_jks_bayern-id-ca_keystore_password + valueFrom: + secretKeyRef: + name: bayernidCertificat + key: password + optional: false + + - it: should fail when secret name for bayernid certificat is not set + set: + ozgcloud: + environment: dev + bayernid: + server: "bayernIdServer" + asserts: + - failedTemplate: + errorMessage: "ozgcloud.bayernid.certificateSecretName must be set" + + - it: should have volumeMount for bayernid certificate keystore + asserts: + - contains: + path: spec.template.spec.containers[0].volumeMounts + content: + name: bayern-id-ca + mountPath: "/keystore/bayernid/bayern-id-ca.p12" + subPath: zertifikat + readOnly: true + + - it: should have volume for bayernid certificate keystore + asserts: + - contains: + path: spec.template.spec.volumes + content: + name: bayern-id-ca + secret: + secretName: bayernidCertificat + optional: false \ No newline at end of file diff --git a/nachrichten-bayernid-proxy/src/test/helm/deployment_bindings_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/deployment_bindings_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..cc051bf7be028d28fa6015d6a63ba39af6637da0 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/deployment_bindings_test.yaml @@ -0,0 +1,72 @@ +# +# 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: deployment bayernid-proxy bindings +release: + name: bayernid-proxy + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud: + environment: dev + bayernid: + server: "http://test" + certificateSecretName: "bayernidCertificat" +tests: + - it: should have volumeMounts for temp folder + asserts: + - contains: + path: spec.template.spec.containers[0].volumeMounts + content: + name: temp-dir + mountPath: "/tmp" + + - it: should have volume for temp folder + asserts: + - contains: + path: spec.template.spec.volumes + content: + name: temp-dir + emptyDir: {} + + - it: should have bindings-type volume + asserts: + - contains: + path: spec.template.spec.volumes + content: + name: bindings + configMap: + name: bindings-type + + - it: should have bindings-type volumeMount + asserts: + - contains: + path: spec.template.spec.containers[0].volumeMounts + content: + name: bindings + mountPath: "/bindings/ca-certificates/type" + subPath: type + readOnly: true + \ No newline at end of file diff --git a/nachrichten-bayernid-proxy/src/test/helm/deployment_container_basic_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/deployment_container_basic_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0da62e9e3341fbf78b3434d257fdf8b2a1fdffc2 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/deployment_container_basic_test.yaml @@ -0,0 +1,64 @@ +# +# 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 container basics +release: + name: bayernid-proxy + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud: + environment: dev + bayernid: + server: "http://test" + certificateSecretName: "bayernidCertificat" +tests: + - it: should have correct values for container image, name, imagePullPolicy + asserts: + - equal: + path: spec.template.spec.containers[0].image + value: docker.ozg-sh.de/bayernid-proxy:latest + - equal: + path: spec.template.spec.containers[0].name + value: bayernid-proxy + - equal: + path: spec.template.spec.containers[0].imagePullPolicy + value: Always + - it: should have correct values for container ports + asserts: + - contains: + path: spec.template.spec.containers[0].ports + content: + containerPort: 9090 + name: grpc-9090 + protocol: TCP + - contains: + path: spec.template.spec.containers[0].ports + content: + containerPort: 8081 + name: metrics + protocol: TCP + + diff --git a/nachrichten-bayernid-proxy/src/test/helm/deployment_container_other_values_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/deployment_container_other_values_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..8daa93f0c87ba344c70622e885c22a92a461f100 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/deployment_container_other_values_test.yaml @@ -0,0 +1,52 @@ + + # +# 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 container other values +release: + name: bayernid-proxy + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud: + environment: dev + bayernid: + server: "http://test" + certificateSecretName: "bayernidCertificat" +tests: + - it: should have correct values for container terminationMessagePolicy, terminationMessagePath, stdin, tty + asserts: + - equal: + path: spec.template.spec.containers[0].terminationMessagePolicy + value: File + - equal: + path: spec.template.spec.containers[0].terminationMessagePath + value: /dev/termination-log + - equal: + path: spec.template.spec.containers[0].stdin + value: true + - equal: + path: spec.template.spec.containers[0].tty + value: true \ No newline at end of file diff --git a/nachrichten-bayernid-proxy/src/test/helm/deployment_container_security_context_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/deployment_container_security_context_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5b6103b0ef2624acd8f70ffab8a370ec28401ba3 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/deployment_container_security_context_test.yaml @@ -0,0 +1,69 @@ +# +# 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 container security context +release: + name: bayernid-proxy + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud: + environment: dev + bayernid: + server: "http://test" + certificateSecretName: "bayernidCertificat" +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 + - 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 \ No newline at end of file diff --git a/nachrichten-bayernid-proxy/src/test/helm/deployment_defaults_labels_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/deployment_defaults_labels_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3e4455daed36fc9aadd506f6599b4c9c3a266f33 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/deployment_defaults_labels_test.yaml @@ -0,0 +1,75 @@ +# +# 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 labels +release: + name: bayernid-proxy + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud: + environment: dev + bayernid: + server: "http://test" + certificateSecretName: "bayernidCertificat" +tests: + - it: check metadata.labels + asserts: + - equal: + path: metadata.labels + value: + app.kubernetes.io/instance: bayernid-proxy + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: bayernid-proxy + 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: bayernid-proxy-0.0.0-MANAGED-BY-JENKINS + app.kubernetes.io/component: bayernid-proxy + component: bayernid-proxy + + - it: should set spec.selector.matchLabels + asserts: + - equal: + path: spec.selector.matchLabels + value: + app.kubernetes.io/name: bayernid-proxy + app.kubernetes.io/namespace: sh-helm-test + component: bayernid-proxy + + - it: should have correct deyploment spec.template.metadata.labels + asserts: + - equal: + path: spec.template.metadata.labels + value: + app.kubernetes.io/instance: bayernid-proxy + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: bayernid-proxy + 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: bayernid-proxy-0.0.0-MANAGED-BY-JENKINS + app.kubernetes.io/component: bayernid-proxy + component: bayernid-proxy diff --git a/nachrichten-bayernid-proxy/src/test/helm/deployment_env_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/deployment_env_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f94cc7c236928bbadcecf08ae2bef51a637d23db --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/deployment_env_test.yaml @@ -0,0 +1,53 @@ +# +# 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 container environments +templates: + - templates/deployment.yaml +set: + ozgcloud: + environment: dev + bayernid: + server: "https://test" + certificateSecretName: "bayernidCertificat" +tests: + - it: check customList + set: + env.customList: + - name: my_test_environment_name + value: "A test value" + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: my_test_environment_name + value: "A 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/nachrichten-bayernid-proxy/src/test/helm/deployment_imagepull_secret_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/deployment_imagepull_secret_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..69c1d1b6257a53596e6ab523422932fe5d61e41a --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/deployment_imagepull_secret_test.yaml @@ -0,0 +1,42 @@ +# +# 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 image pull secret +release: + name: bayernid-proxy + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud: + environment: dev + bayernid: + server: "http://test" + certificateSecretName: "bayernidCertificat" +tests: + - it: should use correct imagePull secret + asserts: + - equal: + path: spec.template.spec.imagePullSecrets[0].name + value: ozgcloud-image-pull-secret \ No newline at end of file diff --git a/nachrichten-bayernid-proxy/src/test/helm/deployment_ozgcloud_base_values_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/deployment_ozgcloud_base_values_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..00a0300659c67b9e1927870f63dcf26fe31321ee --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/deployment_ozgcloud_base_values_test.yaml @@ -0,0 +1,46 @@ +# +# 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 ozgcloud base values +release: + name: bayernid-proxy + namespace: sh-helm-test +templates: + - templates/deployment.yaml + +tests: + + - it: should fail on missing environment + asserts: + - failedTemplate: + errorMessage: ozgcloud.environment muss angegeben sein + - it: should not fail on not missing environment + set: + ozgcloud: + environment: dev + bayernid: + server: "http://test" + certificateSecretName: "bayernidCertificat" + asserts: + - notFailedTemplate: {} diff --git a/nachrichten-bayernid-proxy/src/test/helm/deployment_resources_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/deployment_resources_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..cb794dac0ffaff7f164ede6eb5193e6dc3ca0743 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/deployment_resources_test.yaml @@ -0,0 +1,63 @@ +# +# 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 container resources +release: + name: bayernid-proxy +templates: + - templates/deployment.yaml +set: + ozgcloud: + environment: dev + bayernid: + server: "http://test" + certificateSecretName: "bayernidCertificat" +tests: + - it: should generate resources when values set + 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: should not generate resources when values not set + asserts: + - isEmpty: + path: spec.template.spec.containers[0].resources + diff --git a/nachrichten-bayernid-proxy/src/test/helm/deployment_service_account_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/deployment_service_account_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..334d3f74c55057973868eefe40e1977ffe32b7de --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/deployment_service_account_test.yaml @@ -0,0 +1,57 @@ +# +# 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 service account +release: + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud: + environment: dev + bayernid: + server: "http://test" + certificateSecretName: "bayernidCertificat" +tests: + - it: should use service account with default name + set: + serviceAccount: + create: true + asserts: + - equal: + path: spec.template.spec.serviceAccountName + value: bayernid-proxy-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/nachrichten-bayernid-proxy/src/test/helm/deployment_springProfile_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/deployment_springProfile_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..70df4d35ce94b1fc4cd33fdaf7fd4752e8991435 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/deployment_springProfile_test.yaml @@ -0,0 +1,52 @@ +# +# 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 spring profiles +release: + name: bayernid-proxy +templates: + - templates/deployment.yaml +set: + ozgcloud: + environment: dev + bayernid: + server: "http://test" + certificateSecretName: "bayernidCertificat" +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 + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: spring_profiles_active + value: oc, dev \ No newline at end of file diff --git a/nachrichten-bayernid-proxy/src/test/helm/deployment_template_other_values_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/deployment_template_other_values_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9d9aff7d253c6a5151a768ccbe5e38c0ffb2b7fa --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/deployment_template_other_values_test.yaml @@ -0,0 +1,81 @@ +# +# 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 template other values +release: + name: bayernid-proxy + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud: + environment: dev + bayernid: + server: "http://test" + certificateSecretName: "bayernidCertificat" +tests: + - it: should have correct spec.template.spec.topologySpreadConstraints values + asserts: + - contains: + path: spec.template.spec.topologySpreadConstraints + content: + maxSkew: 1 + topologyKey: kubernetes.io/hostname + whenUnsatisfiable: ScheduleAnyway + labelSelector: + matchLabels: + app.kubernetes.io/name: bayernid-proxy + - it: should have correct deployment spec.template.spec.dnsConfig dnsPolicy restartPolicy schedulerName and terminationGracePeriodSeconds values + asserts: + - equal: + path: spec.template.spec.dnsConfig + value: {} + - equal: + path: spec.template.spec.dnsPolicy + value: ClusterFirst + - equal: + path: spec.template.spec.restartPolicy + value: Always + - equal: + path: spec.template.spec.terminationGracePeriodSeconds + value: 30 + - equal: + path: spec.template.spec.schedulerName + value: default-scheduler + - it: should not generate spec.template.spec.hostAlias when values set + set: + hostAliases: test-alias + asserts: + - equal: + path: spec.template.spec.hostAliases + value: test-alias + + + - it: should not generate spec.template.spec.hostAlias when values not set + asserts: + - isNull: + path: spec.template.spec.hostAliases + + + diff --git a/nachrichten-bayernid-proxy/src/test/helm/deyploment_general_value_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/deyploment_general_value_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..53eadc8ef118fcf0177192a5fa14f1cf1fafe6a1 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/deyploment_general_value_test.yaml @@ -0,0 +1,78 @@ +# +# 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 general values +release: + name: bayernid-proxy + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud: + environment: dev + bayernid: + server: "http://test" + certificateSecretName: "bayernidCertificat" + +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: bayernid-proxy + - 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: 2 + - 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/nachrichten-bayernid-proxy/src/test/helm/network_policy_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/network_policy_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7382ad0947be9db238ff1b5d7f9de08439716165 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/network_policy_test.yaml @@ -0,0 +1,163 @@ +# +# 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: network policy test +release: + 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: should match metadata + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - equal: + path: metadata + value: + name: network-policy-bayernid-proxy + namespace: by-helm-test + + - it: should generate spec + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - equal: + path: spec + value: + podSelector: + matchLabels: + component: bayernid-proxy + policyTypes: + - Ingress + - Egress + ingress: + - ports: + - port: 9090 + from: + - podSelector: + matchLabels: + component: vorgang-manager + egress: + - 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: add ingress rule by values + set: + networkPolicy: + ssoPublicIp: 51.89.117.53/32 + dnsServerNamespace: test-namespace-dns + additionalIngressConfig: + - from: + - podSelector: + matchLabels: + component: client2 + asserts: + - contains: + path: spec.ingress + content: + from: + - podSelector: + matchLabels: + component: client2 + + - it: add egress rules by values + set: + networkPolicy: + additionalEgressConfig: + - to: + - ipBlock: + cidr: 1.2.3.4/32 + - to: + - podSelector: + matchLabels: + component: ozg-testservice + ports: + - port: 12345 + protocol: TCP + + dnsServerNamespace: test-dns-namespace + asserts: + - contains: + path: spec.egress + content: + to: + - ipBlock: + cidr: 1.2.3.4/32 + - contains: + path: spec.egress + content: + to: + - podSelector: + matchLabels: + component: ozg-testservice + ports: + - port: 12345 + protocol: TCP + + - 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 \ No newline at end of file diff --git a/nachrichten-bayernid-proxy/src/test/helm/service_account_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/service_account_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..41565540d17ddc7998397ff62407b0e5bdf7c249 --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/service_account_test.yaml @@ -0,0 +1,65 @@ +# +# 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 service account +release: + namespace: sh-helm-test +templates: + - templates/service_account.yaml +tests: + - it: should create service account with default name + set: + serviceAccount: + create: true + asserts: + - isKind: + of: ServiceAccount + - isAPIVersion: + of: v1 + - equal: + path: metadata.name + value: bayernid-proxy-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/nachrichten-bayernid-proxy/src/test/helm/service_test.yaml b/nachrichten-bayernid-proxy/src/test/helm/service_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..533bdd32b941ed3982480d0198f9941b81b80f2f --- /dev/null +++ b/nachrichten-bayernid-proxy/src/test/helm/service_test.yaml @@ -0,0 +1,85 @@ +# +# 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: bayernid-proxy + namespace: sh-helm-test +templates: + - templates/service.yaml +tests: + - it: should have the label component with correct value + asserts: + - isKind: + of: Service + - isAPIVersion: + of: v1 + - equal: + path: metadata.labels.component + value: bayernid-proxy + - it: should be of type ClusterIP + asserts: + - equal: + path: spec.type + value: ClusterIP + - it: ports should contain the grpc port + asserts: + - contains: + path: spec.ports + content: + name: grpc-9090 + port: 9090 + protocol: TCP + 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 correct value + asserts: + - equal: + path: spec.selector.component + value: bayernid-proxy + + - it: selector should contain helm recommended labels name and namespace + asserts: + - equal: + path: spec.selector + value: + app.kubernetes.io/name: bayernid-proxy + app.kubernetes.io/namespace: sh-helm-test + component: bayernid-proxy + + - it: check component label for service + asserts: + - equal: + path: metadata.labels["component"] + value: bayernid-proxy \ No newline at end of file diff --git a/src/main/helm/templates/network_policy.yaml b/src/main/helm/templates/network_policy.yaml index b80e28782dcf18de0d1b2bcae9da257f83015613..45db7211db6101cfd216f948d70ddbcae7ac8eeb 100644 --- a/src/main/helm/templates/network_policy.yaml +++ b/src/main/helm/templates/network_policy.yaml @@ -73,6 +73,13 @@ spec: ports: - port: 9000 protocol: TCP + - to: + - podSelector: + matchLabels: + component: nachrichten-bayernid-proxy + ports: + - port: 9090 + protocol: TCP - to: - namespaceSelector: matchLabels: diff --git a/src/test/helm/network_policy_test.yaml b/src/test/helm/network_policy_test.yaml index 5a76e0ad2c0c36023bc95e736a594dcbc8fc4be8..3280407398331229256ffbc36619650cade77a28 100644 --- a/src/test/helm/network_policy_test.yaml +++ b/src/test/helm/network_policy_test.yaml @@ -55,22 +55,45 @@ tests: name: network-policy-vorgang-manager namespace: by-helm-test - - it: validate spec + - it: should set policy target matchLabel set: networkPolicy: dnsServerNamespace: test-dns-namespace asserts: - equal: - path: spec + path: spec.podSelector value: - podSelector: - matchLabels: - component: vorgang-manager - policyTypes: - - Ingress - - Egress - ingress: - - ports: + matchLabels: + component: vorgang-manager + + + - it: should add policyType Egress + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - contains: + path: spec.policyTypes + content: Egress + + - it: should add policyType Ingress + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - contains: + path: spec.policyTypes + content: Ingress + + - it: should add ingress rule for eingangsmanager and alfa + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - contains: + path: spec.ingress + content: + ports: - port: 9090 from: - podSelector: @@ -79,8 +102,17 @@ tests: - podSelector: matchLabels: ozg-component: eingangsadapter - egress: - - to: + + + - it: should add egress rule to elasticsearch + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - contains: + path: spec.egress + content: + to: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: elastic-system @@ -90,21 +122,48 @@ tests: ports: - port: 9200 protocol: TCP - - to: + + - it: should add egress rule to mongodb + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - contains: + path: spec.egress + content: + to: - podSelector: matchLabels: component: ozgcloud-mongodb ports: - port: 27017 protocol: TCP - - to: + + - it: should add egress rule to user-manager + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - contains: + path: spec.egress + content: + to: - podSelector: matchLabels: component: user-manager ports: - port: 9000 protocol: TCP - - to: + + - it: should add egress rule to dns service + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - contains: + path: spec.egress + content: + to: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: test-dns-namespace @@ -118,6 +177,22 @@ tests: - port: 5353 protocol: TCP + - it: should add egress rule to nachrichten-bayernid-proxy + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - contains: + path: spec.egress + content: + to: + - podSelector: + matchLabels: + component: nachrichten-bayernid-proxy + ports: + - port: 9090 + protocol: TCP + - it: add ingress rule by values set: networkPolicy: