From 7aeea8d3524eea783e9dd2893801ce6407eaf768 Mon Sep 17 00:00:00 2001 From: Jan Zickermann <jan.zickermann@dataport.de> Date: Mon, 9 Dec 2024 17:16:45 +0100 Subject: [PATCH] #2 OZG-7121 helm: Add server certificate resource --- src/main/helm/templates/_helpers.tpl | 1 - src/main/helm/templates/certificate.yaml | 61 +++++++++++++++ src/main/helm/templates/default_secret.yaml | 10 +++ .../templates/selfsigned_cluster_issuer.yaml | 9 +++ src/main/helm/test-values.yaml | 20 +++++ src/test/helm/certificate_test.yaml | 78 +++++++++++++++++++ .../helm/deployment_defaults_labels_test.yaml | 2 - src/test/helm/deployment_test.yaml | 3 - src/test/helm/service_monitor_test.yaml | 1 - src/test/helm/service_test.yaml | 3 +- 10 files changed, 179 insertions(+), 9 deletions(-) create mode 100644 src/main/helm/templates/certificate.yaml create mode 100644 src/main/helm/templates/default_secret.yaml create mode 100644 src/main/helm/templates/selfsigned_cluster_issuer.yaml create mode 100644 src/main/helm/test-values.yaml create mode 100644 src/test/helm/certificate_test.yaml diff --git a/src/main/helm/templates/_helpers.tpl b/src/main/helm/templates/_helpers.tpl index df89c62..dc3b2fc 100644 --- a/src/main/helm/templates/_helpers.tpl +++ b/src/main/helm/templates/_helpers.tpl @@ -34,7 +34,6 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }} app.kubernetes.io/part-of: ozgcloud app.kubernetes.io/version: {{ .Chart.Version }} helm.sh/chart: {{ include "app.chart" . }} -ozgcloud-mongodb-client: "true" {{- end -}} {{- define "app.matchLabels" }} diff --git a/src/main/helm/templates/certificate.yaml b/src/main/helm/templates/certificate.yaml new file mode 100644 index 0000000..8d1bf81 --- /dev/null +++ b/src/main/helm/templates/certificate.yaml @@ -0,0 +1,61 @@ +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: {{ .Release.Name }}-tls-certificate + namespace: {{ include "app.namespace" . }} + labels: + {{- include "app.defaultLabels" . | indent 4 }} +spec: + isCA: false + secretName: {{ .Release.Name }}-tls-secret + privateKey: + algorithm: ECDSA + size: 256 + issuerRef: + name: xta-test-cluster-issuer + kind: ClusterIssuer + group: cert-manager.io + duration: 8760h0m0s # 1 Jahr + renewBefore: 5840h0m0s # 8 Monate + commonName: {{ .Release.Name }} + keystores: + jks: + create: true + passwordSecretRef: + name: xta-test-server-default-secret + key: keystorePassword + alias: xta-test-server + pkcs12: + create: true + passwordSecretRef: + name: xta-test-server-default-secret + key: keystorePassword + subject: + organisations: + - "XtaTestOrga" + countries: + - DE + organizationalUnits: + - "XtaTestUnit" + localities: + - Kiel + provinces: + - Schleswig-Holstein + steetAddresses: + - "Test-Str. 4" + postalCodes: + - "22222" + # critical, digitalSignature, nonRepudiation, keyEncipherment, keyAgreement + usages: + - server auth + - digital signature + - content commitment # https://cryptography.io/en/latest/x509/reference/#cryptography.x509.KeyUsage.content_commitment + - key encipherment + - key agreement + dnsNames: + - "*.{{ .Release.Name }}.{{ include "app.namespace" . }}.svc.cluster.local" + - "{{ .Release.Name }}.{{ include "app.namespace" . }}.svc.cluster.local" + - "{{ .Release.Name }}.{{ include "app.namespace" . }}.svc.cluster" + - "{{ .Release.Name }}.{{ include "app.namespace" . }}.svc" + - "{{ .Release.Name }}.{{ include "app.namespace" . }}" + - "{{ .Release.Name }}" \ No newline at end of file diff --git a/src/main/helm/templates/default_secret.yaml b/src/main/helm/templates/default_secret.yaml new file mode 100644 index 0000000..ae8b6f5 --- /dev/null +++ b/src/main/helm/templates/default_secret.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Secret +metadata: + name: xta-test-server-default-secret + namespace: {{ include "app.namespace" . }} + labels: + {{- include "app.defaultLabels" . | indent 4 }} +type: Opaque +data: + keystorePassword: password \ No newline at end of file diff --git a/src/main/helm/templates/selfsigned_cluster_issuer.yaml b/src/main/helm/templates/selfsigned_cluster_issuer.yaml new file mode 100644 index 0000000..a988ee3 --- /dev/null +++ b/src/main/helm/templates/selfsigned_cluster_issuer.yaml @@ -0,0 +1,9 @@ +apiVersion: cert-manager.io/v1 +kind: ClusterIssuer +metadata: + name: xta-test-cluster-issuer + namespace: {{ include "app.namespace" . }} + labels: + {{- include "app.defaultLabels" . | indent 4 }} +spec: + selfSigned: {} \ No newline at end of file diff --git a/src/main/helm/test-values.yaml b/src/main/helm/test-values.yaml new file mode 100644 index 0000000..a40b96d --- /dev/null +++ b/src/main/helm/test-values.yaml @@ -0,0 +1,20 @@ +replicaCount: 1 + +image: + repo: docker.ozg-sh.de + name: xta-test-server + tag: latest + +imagePullSecret: ozgcloud-image-pull-secret + +env: + overrideSpringProfiles: abc, test + +baseUrl: test.by.ozg-cloud.de + +ozgcloud: + bezeichner: xta-test-serverr + +networkPolicy: + disabled: false + dnsServerNamespace: openshift-dns \ No newline at end of file diff --git a/src/test/helm/certificate_test.yaml b/src/test/helm/certificate_test.yaml new file mode 100644 index 0000000..54c4401 --- /dev/null +++ b/src/test/helm/certificate_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 certificate.yaml +release: + name: xta-test-server-release-name + namespace: sh-helm-test +templates: + - templates/certificate.yaml +set: + ozgcloud: + bezeichner: helm + baseUrl: test.by.ozg-cloud.de + +tests: + - it: check Certificate kind + asserts: + - isKind: + of: Certificate + - it: should set metadata name + asserts: + - equal: + path: metadata.name + value: xta-test-server-release-name-tls-certificate + - it: should set secret name + asserts: + - equal: + path: spec.secretName + value: xta-test-server-release-name-tls-secret + - it: should set common name + asserts: + - equal: + path: spec.commonName + value: xta-test-server-release-name + - it: should set dns names + asserts: + - equal: + path: spec.dnsNames + value: + - "*.xta-test-server-release-name.sh-helm-test.svc.cluster.local" + - "xta-test-server-release-name.sh-helm-test.svc.cluster.local" + - "xta-test-server-release-name.sh-helm-test.svc.cluster" + - "xta-test-server-release-name.sh-helm-test.svc" + - "xta-test-server-release-name.sh-helm-test" + - "xta-test-server-release-name" + - it: should contain default lables and component lables + asserts: + - equal: + path: metadata.labels + value: + app.kubernetes.io/instance: xta-test-server + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: xta-test-server-release-name + 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: xta-test-server-0.0.0-MANAGED-BY-JENKINS \ 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 index 75de30f..5f38ba2 100644 --- a/src/test/helm/deployment_defaults_labels_test.yaml +++ b/src/test/helm/deployment_defaults_labels_test.yaml @@ -45,7 +45,6 @@ tests: app.kubernetes.io/part-of: ozgcloud app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS helm.sh/chart: xta-test-server-0.0.0-MANAGED-BY-JENKINS - ozgcloud-mongodb-client: "true" - it: should set spec.selector.matchLabels asserts: @@ -69,4 +68,3 @@ tests: app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS component: xta-test-server helm.sh/chart: xta-test-server-0.0.0-MANAGED-BY-JENKINS - ozgcloud-mongodb-client: "true" \ No newline at end of file diff --git a/src/test/helm/deployment_test.yaml b/src/test/helm/deployment_test.yaml index 6efc4a9..5dd2e12 100644 --- a/src/test/helm/deployment_test.yaml +++ b/src/test/helm/deployment_test.yaml @@ -82,9 +82,6 @@ tests: - equal: path: spec.template.metadata.labels.component value: "xta-test-server" - - equal: - path: metadata.labels["ozgcloud-mongodb-client"] - value: "true" - equal: path: spec.template.spec.topologySpreadConstraints[0].maxSkew value: 1 diff --git a/src/test/helm/service_monitor_test.yaml b/src/test/helm/service_monitor_test.yaml index 1572482..5d7ffe4 100644 --- a/src/test/helm/service_monitor_test.yaml +++ b/src/test/helm/service_monitor_test.yaml @@ -58,7 +58,6 @@ tests: app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS component: xta-test-server-service-monitor helm.sh/chart: xta-test-server-0.0.0-MANAGED-BY-JENKINS - ozgcloud-mongodb-client: "true" - it: should have the metrics endpoint configured by default asserts: diff --git a/src/test/helm/service_test.yaml b/src/test/helm/service_test.yaml index 585ea72..4c9156d 100644 --- a/src/test/helm/service_test.yaml +++ b/src/test/helm/service_test.yaml @@ -92,5 +92,4 @@ tests: app.kubernetes.io/part-of: ozgcloud app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS component: xta-test-server-service - helm.sh/chart: xta-test-server-0.0.0-MANAGED-BY-JENKINS - ozgcloud-mongodb-client: "true" \ No newline at end of file + helm.sh/chart: xta-test-server-0.0.0-MANAGED-BY-JENKINS \ No newline at end of file -- GitLab