diff --git a/xta-adapter/run_helm_test.sh b/xta-adapter/run_helm_test.sh new file mode 100755 index 0000000000000000000000000000000000000000..9e10b8f0eafbab2eac176bd51e453caedabec7fa --- /dev/null +++ b/xta-adapter/run_helm_test.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +helm template ./src/main/helm/ -f src/main/helm/test-values.yaml +helm lint -f src/test/helm/values/unit-values.yaml ./src/main/helm/ +cd src/main/helm && helm unittest --helm3 -f '../../test/helm/*.yaml' -v '../../test/helm/values/unit-values.yaml' . \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/network_policy.yaml b/xta-adapter/src/main/helm/templates/network_policy.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6c806c791f303f964ff490aeeae6daa7e469098d --- /dev/null +++ b/xta-adapter/src/main/helm/templates/network_policy.yaml @@ -0,0 +1,68 @@ +# +# 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 not (.Values.networkPolicy).disabled }} +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: network-policy-xta-adapter + namespace: {{ .Release.Namespace }} +spec: + podSelector: + matchLabels: + ozg-component: xta-adapter + policyTypes: + - Egress + egress: + - to: + - podSelector: + matchLabels: + component: pluto + ports: + - port: 9090 + protocol: TCP + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: kube-system + podSelector: + matchLabels: + k8s-app: kube-dns + ports: + - port: 53 + protocol: UDP + - port: 53 + protocol: TCP + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: ssh-port-forward + ports: + - port: 9000 + protocol: TCP + {{- with (.Values.networkPolicy).additionalEgressConfig }} + - to: +{{ toYaml . | indent 8 }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml b/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml index 47aa8cd899a803aac2fa5105f738e8260d5c562a..371dda54180538f75faee51ae976f1f7fb7d1533 100644 --- a/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml +++ b/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml @@ -42,6 +42,7 @@ spec: metadata: labels: workload: xta-adapter-cronjob + ozg-component: xta-adapter spec: restartPolicy: Never containers: diff --git a/xta-adapter/src/test/helm/network_policy_test.yaml b/xta-adapter/src/test/helm/network_policy_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..79daaa6a8810843c21adccd3d0f001b220ae219b --- /dev/null +++ b/xta-adapter/src/test/helm/network_policy_test.yaml @@ -0,0 +1,140 @@ +# +# 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: network policy test +release: + namespace: by-helm-test +templates: + - templates/network_policy.yaml +tests: + - it: should match apiVersion + asserts: + - isAPIVersion: + of: networking.k8s.io/v1 + - it: should match kind + asserts: + - isKind: + of: NetworkPolicy + - it: validate metadata + asserts: + - equal: + path: metadata + value: + name: network-policy-xta-adapter + namespace: by-helm-test + - it: validate spec + asserts: + - equal: + path: spec + value: + podSelector: + matchLabels: + ozg-component: xta-adapter + policyTypes: + - Egress + egress: + - to: + - podSelector: + matchLabels: + component: pluto + ports: + - port: 9090 + protocol: TCP + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: kube-system + podSelector: + matchLabels: + k8s-app: kube-dns + ports: + - port: 53 + protocol: UDP + - port: 53 + protocol: TCP + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: ssh-port-forward + ports: + - port: 9000 + protocol: TCP + + - it: add ingress rule by values + set: + networkPolicy: + additionalEgressConfig: + - podSelector: + matchLabels: + component: client2 + asserts: + - equal: + path: spec.egress + value: + - to: + - podSelector: + matchLabels: + component: pluto + ports: + - port: 9090 + protocol: TCP + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: kube-system + podSelector: + matchLabels: + k8s-app: kube-dns + ports: + - port: 53 + protocol: UDP + - port: 53 + protocol: TCP + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: ssh-port-forward + ports: + - port: 9000 + protocol: TCP + - to: + - podSelector: + matchLabels: + component: client2 + + - it: test network policy disabled + set: + networkPolicy: + disabled: true + asserts: + - hasDocuments: + count: 0 + + - it: test network policy unset should be disabled + set: + networkPolicy: + disabled: false + asserts: + - hasDocuments: + count: 1 \ No newline at end of file diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml index 3e0ec759c0446fb34062e1934d8dc7bd775225e9..ba879bf700afd49f57a299118130cdd42e3d30c4 100644 --- a/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml +++ b/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml @@ -99,4 +99,13 @@ tests: value: false - equal: path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsNonRoot - value: false \ No newline at end of file + value: false + + - it: check pod labels + template: xta_adapter_cronjob.yaml + asserts: + - equal: + path: spec.jobTemplate.spec.template.metadata.labels + value: + ozg-component: xta-adapter + workload: xta-adapter-cronjob