Skip to content
Snippets Groups Projects
Commit 92c43ec2 authored by Bastian Heppener's avatar Bastian Heppener
Browse files

Merge branch 'OZG-6716' into 'main'

Ozg 6716 add service_monitor

See merge request !1
parents 965ec8ca f27ba0c3
No related branches found
No related tags found
1 merge request!1Ozg 6716 add service_monitor
Showing with 245 additions and 18 deletions
......@@ -30,7 +30,7 @@
<parent>
<groupId>de.ozgcloud.common</groupId>
<artifactId>ozgcloud-common-dependencies</artifactId>
<version>4.5.0-SNAPSHOT</version>
<version>4.5.0</version>
<relativePath/>
</parent>
......
......@@ -31,7 +31,7 @@
<parent>
<groupId>de.ozgcloud.common</groupId>
<artifactId>ozgcloud-common-parent</artifactId>
<version>4.5.0-SNAPSHOT</version>
<version>4.5.0</version>
<relativePath/>
</parent>
......
......@@ -4,18 +4,25 @@
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/namespace: {{ include "app.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 -}}
{{/* error check 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec) */}}
{{/* Namespace */}}
{{- define "app.namespace" -}}
{{- if gt (len (.Release.Namespace)) 63 -}}
{{- fail (printf ".Release.Namespace %s ist zu lang (max. 63 Zeichen)" .Release.Namespace) -}}
{{- end -}}
{{ printf "%s" .Release.Namespace }}
{{- end -}}
{{- define "app.matchLabels" }}
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/namespace: {{ .Release.Namespace }}
component: bayernid-proxy
app.kubernetes.io/namespace: {{ include "app.namespace" . }}
{{- end -}}
{{- define "app.envSpringProfiles" }}
......
......@@ -26,7 +26,7 @@ apiVersion: v1
kind: ConfigMap
metadata:
name: bindings-type
namespace: {{ .Release.Namespace }}
namespace: {{ include "app.namespace" . }}
data:
type: |
ca-certificates
\ No newline at end of file
......@@ -26,9 +26,10 @@ apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
namespace: {{ include "app.namespace" . }}
labels:
{{- include "app.defaultLabels" . | indent 4 }}
component: bayernid-proxy
spec:
progressDeadlineSeconds: 600
replicas: {{ .Values.replicaCount }}
......@@ -36,6 +37,7 @@ spec:
selector:
matchLabels:
{{- include "app.matchLabels" . | indent 6 }}
component: bayernid-proxy
strategy:
rollingUpdate:
maxSurge: 1
......@@ -45,6 +47,7 @@ spec:
metadata:
labels:
{{- include "app.defaultLabels" . | indent 8 }}
component: bayernid-proxy
spec:
{{- if (.Values.serviceAccount).create }}
serviceAccountName: {{ include "app.serviceAccountName" . }}
......
......@@ -27,11 +27,11 @@ apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: bayernid-proxy-grpc-tls-certificate
namespace: {{ .Release.Namespace }}
namespace: {{ include "app.namespace" . }}
spec:
secretName: bayernid-proxy-grpc-tls-cert
issuerRef:
name: {{ .Release.Namespace }}-ca-issuer
name: {{ include "app.namespace" . }}-ca-issuer
kind: Issuer
duration: 8760h0m0s # 1 Jahr
renewBefore: 5840h0m0s # 8 Monate
......@@ -40,10 +40,10 @@ spec:
algorithm: RSA
encoding: PKCS8
dnsNames:
- "*.{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local"
- "{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local"
- "{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster"
- "{{ .Release.Name }}.{{ .Release.Namespace }}.svc"
- "{{ .Release.Name }}.{{ .Release.Namespace }}"
- "*.{{ .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 }}"
{{- end }}
\ No newline at end of file
......@@ -27,7 +27,7 @@ apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: network-policy-bayernid-proxy
namespace: {{ .Release.Namespace }}
namespace: {{ include "app.namespace" . }}
spec:
podSelector:
matchLabels:
......@@ -43,6 +43,13 @@ spec:
podSelector:
matchLabels:
component: vorgang-manager
- from:
- namespaceSelector:
matchLabels:
name: {{ (.Values.networkPolicy).monitoringNamespace | default "openshift-user-workload-monitoring" }}
ports:
- protocol: TCP
port: 8081
{{- with (.Values.networkPolicy).additionalIngressConfigLocal }}
{{ toYaml . | indent 2 }}
{{- end }}
......
......@@ -26,9 +26,10 @@ apiVersion: v1
kind: Service
metadata:
name: {{.Release.Name }}
namespace: {{ .Release.Namespace }}
namespace: {{ include "app.namespace" . }}
labels:
{{- include "app.defaultLabels" . | indent 4 }}
component: bayernid-proxy
spec:
type: ClusterIP
ports:
......@@ -40,3 +41,4 @@ spec:
protocol: TCP
selector:
{{- include "app.matchLabels" . | indent 4 }}
component: bayernid-proxy
......@@ -27,5 +27,5 @@ apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "app.serviceAccountName" . }}
namespace: {{ .Release.Namespace }}
namespace: {{ include "app.namespace" . }}
{{- end }}
\ No newline at end of file
#
# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
# Ministerpräsidenten des Landes Schleswig-Holstein
# Staatskanzlei
# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
#
# Lizenziert unter der EUPL, Version 1.2 oder - sobald
# diese von der Europäischen Kommission genehmigt wurden -
# Folgeversionen der EUPL ("Lizenz");
# Sie dürfen dieses Werk ausschließlich gemäß
# dieser Lizenz nutzen.
# Eine Kopie der Lizenz finden Sie hier:
#
# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
#
# Sofern nicht durch anwendbare Rechtsvorschriften
# gefordert oder in schriftlicher Form vereinbart, wird
# die unter der Lizenz verbreitete Software "so wie sie
# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
# ausdrücklich oder stillschweigend - verbreitet.
# Die sprachspezifischen Genehmigungen und Beschränkungen
# unter der Lizenz sind dem Lizenztext zu entnehmen.
#
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: {{ .Release.Name }}
namespace: {{ include "app.namespace" . }}
labels:
{{- include "app.defaultLabels" . | indent 4 }}
component: bayernid-proxy-service-monitor
spec:
endpoints:
- port: metrics
path: /actuator/prometheus
namespaceSelector:
matchNames:
- {{ include "app.namespace" . }}
selector:
matchLabels:
{{- include "app.matchLabels" . | indent 6 }}
component: bayernid-proxy
\ No newline at end of file
#
# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
# Ministerpräsidenten des Landes Schleswig-Holstein
# Staatskanzlei
# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
#
# Lizenziert unter der EUPL, Version 1.2 oder - sobald
# diese von der Europäischen Kommission genehmigt wurden -
# Folgeversionen der EUPL ("Lizenz");
# Sie dürfen dieses Werk ausschließlich gemäß
# dieser Lizenz nutzen.
# Eine Kopie der Lizenz finden Sie hier:
#
# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
#
# Sofern nicht durch anwendbare Rechtsvorschriften
# gefordert oder in schriftlicher Form vereinbart, wird
# die unter der Lizenz verbreitete Software "so wie sie
# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
# ausdrücklich oder stillschweigend - verbreitet.
# Die sprachspezifischen Genehmigungen und Beschränkungen
# unter der Lizenz sind dem Lizenztext zu entnehmen.
#
suite: test deyploment less than 63 chars
release:
name: bayernid-proxy
namespace: by-helm-test
templates:
- templates/deployment.yaml
set:
ozgcloud:
environment: dev
bayernid:
server: "https://test"
certificateSecretName: "bayernidCertificat"
tests:
- it: should fail on .Release.Namespace length longer than 63 characters
release:
namespace: test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890
asserts:
- failedTemplate:
errorMessage: .Release.Namespace test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 63 Zeichen)
- it: should not fail on .Release.Namespace length less than 63 characters
asserts:
- notFailedTemplate: {}
\ No newline at end of file
......@@ -77,6 +77,15 @@ tests:
podSelector:
matchLabels:
component: vorgang-manager
- from:
- namespaceSelector:
matchLabels:
name: openshift-user-workload-monitoring
ports:
- port: 8081
protocol: TCP
egress:
- to:
- namespaceSelector:
......@@ -91,6 +100,22 @@ tests:
protocol: UDP
- port: 5353
protocol: TCP
- it: should set rule for monitoring
set:
networkPolicy:
dnsServerNamespace: test-dns-namespace
monitoringNamespace: test-monitoring
asserts:
- contains:
path: spec.ingress
content:
from:
- namespaceSelector:
matchLabels:
name: test-monitoring
ports:
- port: 8081
protocol: TCP
- it: add ingress rule by values local
set:
......
#
# 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_monitor
release:
name: bayernid-proxy
namespace: sh-helm-test
templates:
- templates/service_monitor.yaml
tests:
- it: should have basic info and the label component with value bayernid-proxy-service-monitor attached
asserts:
- isKind:
of: ServiceMonitor
- isAPIVersion:
of: monitoring.coreos.com/v1
- equal:
path: metadata.name
value: bayernid-proxy
- equal:
path: metadata.namespace
value: sh-helm-test
- equal:
path: metadata.labels["component"]
value: bayernid-proxy-service-monitor
- it: should contain default lables and component lables
asserts:
- equal:
path: metadata.labels
value:
app.kubernetes.io/component: bayernid-proxy
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
component: bayernid-proxy-service-monitor
helm.sh/chart: bayernid-proxy-0.0.0-MANAGED-BY-JENKINS
- it: should have the metrics endpoint configured by default
set:
env.springProfiles: oc,stage
asserts:
- contains:
path: spec.endpoints
content:
port: metrics
path: /actuator/prometheus
- it: should be able to enable the endpoint
asserts:
- contains:
path: spec.endpoints
content:
port: metrics
path: /actuator/prometheus
- it: namespace selector should contain the namespace
asserts:
- contains:
path: spec.namespaceSelector.matchNames
content: sh-helm-test
- it: selector should contain helm recommended labels name and namespace
asserts:
- equal:
path: spec.selector.matchLabels
value:
app.kubernetes.io/name: bayernid-proxy
app.kubernetes.io/namespace: sh-helm-test
component: bayernid-proxy
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment