From f8b58d6d07db4dd5a49d0efcb60a6eb46e323df8 Mon Sep 17 00:00:00 2001 From: banzuu <103417158+banzuu@users.noreply.github.com> Date: Fri, 23 Aug 2024 16:22:23 +0200 Subject: [PATCH 01/17] Chart erstellt --- charts/refarch-template/.helmignore | 23 ++++ charts/refarch-template/Chart.yaml | 14 +++ charts/refarch-template/README.md | 3 + .../charts/backend/.helmignore | 23 ++++ .../charts/backend/Chart.yaml | 5 + .../charts/backend/templates/configmap.yaml | 11 ++ .../charts/backend/templates/deployment.yaml | 76 +++++++++++++ .../charts/backend/templates/hpa.yaml | 32 ++++++ .../charts/backend/templates/service.yaml | 15 +++ .../templates/tests/test-connection.yaml | 15 +++ .../charts/backend/values.yaml | 99 +++++++++++++++++ .../charts/frontend/.helmignore | 23 ++++ .../charts/frontend/Chart.yaml | 5 + .../charts/frontend/templates/configmap.yaml | 11 ++ .../charts/frontend/templates/deployment.yaml | 76 +++++++++++++ .../charts/frontend/templates/hpa.yaml | 32 ++++++ .../charts/frontend/templates/ingress.yaml | 60 ++++++++++ .../charts/frontend/templates/service.yaml | 15 +++ .../templates/tests/test-connection.yaml | 15 +++ .../charts/frontend/values.yaml | 99 +++++++++++++++++ charts/refarch-template/ci/test-values.yaml | 5 + .../templates/serviceaccount.yaml | 13 +++ charts/refarch-template/values.yaml | 103 ++++++++++++++++++ 23 files changed, 773 insertions(+) create mode 100644 charts/refarch-template/.helmignore create mode 100644 charts/refarch-template/Chart.yaml create mode 100644 charts/refarch-template/README.md create mode 100644 charts/refarch-template/charts/backend/.helmignore create mode 100644 charts/refarch-template/charts/backend/Chart.yaml create mode 100644 charts/refarch-template/charts/backend/templates/configmap.yaml create mode 100644 charts/refarch-template/charts/backend/templates/deployment.yaml create mode 100644 charts/refarch-template/charts/backend/templates/hpa.yaml create mode 100644 charts/refarch-template/charts/backend/templates/service.yaml create mode 100644 charts/refarch-template/charts/backend/templates/tests/test-connection.yaml create mode 100644 charts/refarch-template/charts/backend/values.yaml create mode 100644 charts/refarch-template/charts/frontend/.helmignore create mode 100644 charts/refarch-template/charts/frontend/Chart.yaml create mode 100644 charts/refarch-template/charts/frontend/templates/configmap.yaml create mode 100644 charts/refarch-template/charts/frontend/templates/deployment.yaml create mode 100644 charts/refarch-template/charts/frontend/templates/hpa.yaml create mode 100644 charts/refarch-template/charts/frontend/templates/ingress.yaml create mode 100644 charts/refarch-template/charts/frontend/templates/service.yaml create mode 100644 charts/refarch-template/charts/frontend/templates/tests/test-connection.yaml create mode 100644 charts/refarch-template/charts/frontend/values.yaml create mode 100644 charts/refarch-template/ci/test-values.yaml create mode 100644 charts/refarch-template/templates/serviceaccount.yaml create mode 100644 charts/refarch-template/values.yaml diff --git a/charts/refarch-template/.helmignore b/charts/refarch-template/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/charts/refarch-template/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/refarch-template/Chart.yaml b/charts/refarch-template/Chart.yaml new file mode 100644 index 0000000..7cac6fb --- /dev/null +++ b/charts/refarch-template/Chart.yaml @@ -0,0 +1,14 @@ +apiVersion: v2 +name: refarch-template +description: Helm chart template for deploying it@M Reference Architecture based applications. +type: application +version: 1.0.0 +home: https://github.com/it-at-m/helm-charts/tree/main/charts/refarch-template +icon: https://opensource.muenchen.de/assets/itm-logo-256.png +sources: + - "https://github.com/it-at-m/helm-charts" +dependencies: + - name: backend + version: 1.0.0 + - name: frontend + version: 1.0.0 diff --git a/charts/refarch-template/README.md b/charts/refarch-template/README.md new file mode 100644 index 0000000..a5d9b9b --- /dev/null +++ b/charts/refarch-template/README.md @@ -0,0 +1,3 @@ +# RefArch Helm-Chart Template + +TODO diff --git a/charts/refarch-template/charts/backend/.helmignore b/charts/refarch-template/charts/backend/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/charts/refarch-template/charts/backend/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/refarch-template/charts/backend/Chart.yaml b/charts/refarch-template/charts/backend/Chart.yaml new file mode 100644 index 0000000..5bd9237 --- /dev/null +++ b/charts/refarch-template/charts/backend/Chart.yaml @@ -0,0 +1,5 @@ +apiVersion: v2 +name: backend +description: Backend sub-chart of refarch-template. +type: application +version: 1.0.0 diff --git a/charts/refarch-template/charts/backend/templates/configmap.yaml b/charts/refarch-template/charts/backend/templates/configmap.yaml new file mode 100644 index 0000000..a1e9c89 --- /dev/null +++ b/charts/refarch-template/charts/backend/templates/configmap.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} +data: + {{- with .Values.applicationYML }} + application.yml: | + {{- toYaml . | nindent 4 }} + {{- end }} diff --git a/charts/refarch-template/charts/backend/templates/deployment.yaml b/charts/refarch-template/charts/backend/templates/deployment.yaml new file mode 100644 index 0000000..e2c2b8c --- /dev/null +++ b/charts/refarch-template/charts/backend/templates/deployment.yaml @@ -0,0 +1,76 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + deployment + template: + metadata: + annotations: + {{- with .Values.podAnnotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} + labels: + app: {{ .Chart.Name }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ .Values.serviceAccount.name }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: {{ .Values.service.port }} + protocol: TCP + startupProbe: + {{- toYaml .Values.startupProbe | nindent 12 }} + livenessProbe: + {{- toYaml .Values.livenessProbe | nindent 12 }} + readinessProbe: + {{- toYaml .Values.readinessProbe | nindent 12 }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + env: + {{- toYaml .Values.env | nindent 12 }} + volumeMounts: + - name: config + mountPath: /deployments/config + {{- with .Values.volumeMounts }} + {{- toYaml . | nindent 12 }} + {{- end }} + volumes: + - name: config + configMap: + name: {{ .Chart.Name }} + defaultMode: 420 + {{- with .Values.volumes }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/charts/refarch-template/charts/backend/templates/hpa.yaml b/charts/refarch-template/charts/backend/templates/hpa.yaml new file mode 100644 index 0000000..024d8ca --- /dev/null +++ b/charts/refarch-template/charts/backend/templates/hpa.yaml @@ -0,0 +1,32 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ .Chart.Name }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/charts/refarch-template/charts/backend/templates/service.yaml b/charts/refarch-template/charts/backend/templates/service.yaml new file mode 100644 index 0000000..1fd3ca5 --- /dev/null +++ b/charts/refarch-template/charts/backend/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + deployment: {{ .Chart.Name }} diff --git a/charts/refarch-template/charts/backend/templates/tests/test-connection.yaml b/charts/refarch-template/charts/backend/templates/tests/test-connection.yaml new file mode 100644 index 0000000..deb106a --- /dev/null +++ b/charts/refarch-template/charts/backend/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Chart.Name . }}-test-connection" + labels: + app: {{ .Chart.Name }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ .Chart.Name }}:{{ .Values.service.port }}/actuator/info'] + restartPolicy: Never diff --git a/charts/refarch-template/charts/backend/values.yaml b/charts/refarch-template/charts/backend/values.yaml new file mode 100644 index 0000000..44908ff --- /dev/null +++ b/charts/refarch-template/charts/backend/values.yaml @@ -0,0 +1,99 @@ +replicaCount: 1 + +image: + registry: ghcr.io + repository: it-at-m/refarch/refarch-backend + pullPolicy: IfNotPresent + +imagePullSecrets: [] + +podAnnotations: {} +podLabels: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 8080 + +ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +startupProbe: + httpGet: + path: /actuator/health + port: http + initialDelaySeconds: 60 +livenessProbe: + httpGet: + path: /actuator/health/liveness + port: http +readinessProbe: + httpGet: + path: /actuator/health/readiness + port: http + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +# Additional volumes on the output Deployment definition. +volumes: [] +# - name: foo +# secret: +# secretName: mysecret +# optional: false + +# Additional volumeMounts on the output Deployment definition. +volumeMounts: [] +# - name: foo +# mountPath: "/etc/foo" +# readOnly: true + +# Additional env on the output Deployment definition. +env: [] + +nodeSelector: {} + +tolerations: [] + +affinity: {} + +applicationYML: diff --git a/charts/refarch-template/charts/frontend/.helmignore b/charts/refarch-template/charts/frontend/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/charts/refarch-template/charts/frontend/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/refarch-template/charts/frontend/Chart.yaml b/charts/refarch-template/charts/frontend/Chart.yaml new file mode 100644 index 0000000..ee71041 --- /dev/null +++ b/charts/refarch-template/charts/frontend/Chart.yaml @@ -0,0 +1,5 @@ +apiVersion: v2 +name: frontend +description: Frontend sub-chart of refarch-template. +type: application +version: 1.0.0 diff --git a/charts/refarch-template/charts/frontend/templates/configmap.yaml b/charts/refarch-template/charts/frontend/templates/configmap.yaml new file mode 100644 index 0000000..bf6e5e0 --- /dev/null +++ b/charts/refarch-template/charts/frontend/templates/configmap.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} +data: + {{- with .Values.applicationYML }} + application.yml: | + {{- toYaml . | nindent 4 }} + {{- end }} diff --git a/charts/refarch-template/charts/frontend/templates/deployment.yaml b/charts/refarch-template/charts/frontend/templates/deployment.yaml new file mode 100644 index 0000000..0506491 --- /dev/null +++ b/charts/refarch-template/charts/frontend/templates/deployment.yaml @@ -0,0 +1,76 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + deployment: {{ .Chart.Name }} + template: + metadata: + annotations: + {{- with .Values.podAnnotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} + labels: + app: {{ .Chart.Name }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ .Values.serviceAccount.name }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: {{ .Values.service.port }} + protocol: TCP + startupProbe: + {{- toYaml .Values.startupProbe | nindent 12 }} + livenessProbe: + {{- toYaml .Values.livenessProbe | nindent 12 }} + readinessProbe: + {{- toYaml .Values.readinessProbe | nindent 12 }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + env: + {{- toYaml .Values.env | nindent 12 }} + volumeMounts: + - name: config + mountPath: /deployments/config + {{- with .Values.volumeMounts }} + {{- toYaml . | nindent 12 }} + {{- end }} + volumes: + - name: config + configMap: + name: {{ .Chart.Name }} + defaultMode: 420 + {{- with .Values.volumes }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/charts/refarch-template/charts/frontend/templates/hpa.yaml b/charts/refarch-template/charts/frontend/templates/hpa.yaml new file mode 100644 index 0000000..024d8ca --- /dev/null +++ b/charts/refarch-template/charts/frontend/templates/hpa.yaml @@ -0,0 +1,32 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ .Chart.Name }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/charts/refarch-template/charts/frontend/templates/ingress.yaml b/charts/refarch-template/charts/frontend/templates/ingress.yaml new file mode 100644 index 0000000..6c885ac --- /dev/null +++ b/charts/refarch-template/charts/frontend/templates/ingress.yaml @@ -0,0 +1,60 @@ +{{- if .Values.ingress.enabled -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ .Chart.Name }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ .Chart.Name }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/refarch-template/charts/frontend/templates/service.yaml b/charts/refarch-template/charts/frontend/templates/service.yaml new file mode 100644 index 0000000..1fd3ca5 --- /dev/null +++ b/charts/refarch-template/charts/frontend/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + deployment: {{ .Chart.Name }} diff --git a/charts/refarch-template/charts/frontend/templates/tests/test-connection.yaml b/charts/refarch-template/charts/frontend/templates/tests/test-connection.yaml new file mode 100644 index 0000000..7d65bb0 --- /dev/null +++ b/charts/refarch-template/charts/frontend/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ .Chart.Name }}:{{ .Values.service.port }}/actuator/info'] + restartPolicy: Never diff --git a/charts/refarch-template/charts/frontend/values.yaml b/charts/refarch-template/charts/frontend/values.yaml new file mode 100644 index 0000000..4c12d67 --- /dev/null +++ b/charts/refarch-template/charts/frontend/values.yaml @@ -0,0 +1,99 @@ +replicaCount: 1 + +image: + registry: ghcr.io + repository: it-at-m/refarch/refarch-gateway + pullPolicy: IfNotPresent + +imagePullSecrets: [] + +podAnnotations: {} +podLabels: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 8080 + +ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +startupProbe: + httpGet: + path: /actuator/health + port: http + initialDelaySeconds: 60 +livenessProbe: + httpGet: + path: /actuator/health/liveness + port: http +readinessProbe: + httpGet: + path: /actuator/health/readiness + port: http + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +# Additional volumes on the output Deployment definition. +volumes: [] +# - name: foo +# secret: +# secretName: mysecret +# optional: false + +# Additional volumeMounts on the output Deployment definition. +volumeMounts: [] +# - name: foo +# mountPath: "/etc/foo" +# readOnly: true + +# Additional env on the output Deployment definition. +env: [] + +nodeSelector: {} + +tolerations: [] + +affinity: {} + +applicationYML: diff --git a/charts/refarch-template/ci/test-values.yaml b/charts/refarch-template/ci/test-values.yaml new file mode 100644 index 0000000..ed35d81 --- /dev/null +++ b/charts/refarch-template/ci/test-values.yaml @@ -0,0 +1,5 @@ +applicationYML: + SSO_ISSUER_URL: https://sso.muenchen.de/auth/realms/muenchen.de + spring: + profiles: + active: "no-security" diff --git a/charts/refarch-template/templates/serviceaccount.yaml b/charts/refarch-template/templates/serviceaccount.yaml new file mode 100644 index 0000000..98dd1d4 --- /dev/null +++ b/charts/refarch-template/templates/serviceaccount.yaml @@ -0,0 +1,13 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Values.serviceAccount.name }} + labels: + app: {{ .Chart.Name }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.serviceAccount.automount }} +{{- end }} diff --git a/charts/refarch-template/values.yaml b/charts/refarch-template/values.yaml new file mode 100644 index 0000000..b10d46e --- /dev/null +++ b/charts/refarch-template/values.yaml @@ -0,0 +1,103 @@ +replicaCount: 1 + +imagePullSecrets: [] + +serviceAccount: + # Specifies whether a service account should be created + create: false + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + name: "" + +podAnnotations: {} +podLabels: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 8080 + +ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +startupProbe: + httpGet: + path: /actuator/health + port: http + initialDelaySeconds: 60 +livenessProbe: + httpGet: + path: /actuator/health/liveness + port: http +readinessProbe: + httpGet: + path: /actuator/health/readiness + port: http + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +# Additional volumes on the output Deployment definition. +volumes: [] +# - name: foo +# secret: +# secretName: mysecret +# optional: false + +# Additional volumeMounts on the output Deployment definition. +volumeMounts: [] +# - name: foo +# mountPath: "/etc/foo" +# readOnly: true + +# Additional env on the output Deployment definition. +env: [] + +nodeSelector: {} + +tolerations: [] + +affinity: {} + +applicationYML: From 7af42e4a30bfc7e15409447b4a188487dda1036b Mon Sep 17 00:00:00 2001 From: Hans <11695964+hupling@users.noreply.github.com> Date: Wed, 11 Sep 2024 14:27:28 +0200 Subject: [PATCH 02/17] Update Chart.yaml --- charts/refarch-template/Chart.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/charts/refarch-template/Chart.yaml b/charts/refarch-template/Chart.yaml index 7cac6fb..26f46b5 100644 --- a/charts/refarch-template/Chart.yaml +++ b/charts/refarch-template/Chart.yaml @@ -12,3 +12,10 @@ dependencies: version: 1.0.0 - name: frontend version: 1.0.0 +maintainers: + - name: banzuu + url: https://github.com/banzuu + - name: hupling + url: https://github.com/hupling + - name: ejcsid + url: https://github.com/ejcsid From 1818902aa96ebfb71c1027f9633aa4bf6a9d5d65 Mon Sep 17 00:00:00 2001 From: Hans <11695964+hupling@users.noreply.github.com> Date: Wed, 11 Sep 2024 15:10:01 +0200 Subject: [PATCH 03/17] Update charts/refarch-template/Chart.yaml --- charts/refarch-template/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/refarch-template/Chart.yaml b/charts/refarch-template/Chart.yaml index 26f46b5..3d66f32 100644 --- a/charts/refarch-template/Chart.yaml +++ b/charts/refarch-template/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: refarch-template -description: Helm chart template for deploying it@M Reference Architecture based applications. +description: Helm Chart for deploying a it@M Reference Architecture based sample application. type: application version: 1.0.0 home: https://github.com/it-at-m/helm-charts/tree/main/charts/refarch-template From 9bf03c388d237b9d9e66c4967ad92c78db24e9f5 Mon Sep 17 00:00:00 2001 From: Hans <11695964+hupling@users.noreply.github.com> Date: Wed, 11 Sep 2024 15:10:43 +0200 Subject: [PATCH 04/17] Update charts/refarch-template/README.md --- charts/refarch-template/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/refarch-template/README.md b/charts/refarch-template/README.md index a5d9b9b..e6636a8 100644 --- a/charts/refarch-template/README.md +++ b/charts/refarch-template/README.md @@ -1,3 +1,3 @@ -# RefArch Helm-Chart Template +# Helm-Chart for Sample RefArch Application TODO From bca113222f409673d9211043b30b3c2b7669f49a Mon Sep 17 00:00:00 2001 From: Hans <11695964+hupling@users.noreply.github.com> Date: Wed, 11 Sep 2024 15:11:18 +0200 Subject: [PATCH 05/17] Update charts/refarch-template/Chart.yaml --- charts/refarch-template/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/refarch-template/Chart.yaml b/charts/refarch-template/Chart.yaml index 3d66f32..6d3f7ad 100644 --- a/charts/refarch-template/Chart.yaml +++ b/charts/refarch-template/Chart.yaml @@ -1,5 +1,5 @@ apiVersion: v2 -name: refarch-template +name: sps-sample description: Helm Chart for deploying a it@M Reference Architecture based sample application. type: application version: 1.0.0 From 4cdb7371e6728fb2b1969c4fcfefa74031447df2 Mon Sep 17 00:00:00 2001 From: Hans <11695964+hupling@users.noreply.github.com> Date: Wed, 11 Sep 2024 15:11:53 +0200 Subject: [PATCH 06/17] Update charts/refarch-template/charts/backend/Chart.yaml --- charts/refarch-template/charts/backend/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/refarch-template/charts/backend/Chart.yaml b/charts/refarch-template/charts/backend/Chart.yaml index 5bd9237..e7440ed 100644 --- a/charts/refarch-template/charts/backend/Chart.yaml +++ b/charts/refarch-template/charts/backend/Chart.yaml @@ -1,5 +1,5 @@ apiVersion: v2 name: backend -description: Backend sub-chart of refarch-template. +description: Backend sub-chart of sps-sample. type: application version: 1.0.0 From 3db0259107b8b750973615e319c1688dbb2712cf Mon Sep 17 00:00:00 2001 From: Hans <11695964+hupling@users.noreply.github.com> Date: Wed, 11 Sep 2024 15:12:40 +0200 Subject: [PATCH 07/17] Update charts/refarch-template/charts/frontend/Chart.yaml --- charts/refarch-template/charts/frontend/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/refarch-template/charts/frontend/Chart.yaml b/charts/refarch-template/charts/frontend/Chart.yaml index ee71041..4e97b87 100644 --- a/charts/refarch-template/charts/frontend/Chart.yaml +++ b/charts/refarch-template/charts/frontend/Chart.yaml @@ -1,5 +1,5 @@ apiVersion: v2 name: frontend -description: Frontend sub-chart of refarch-template. +description: Frontend sub-chart of sps-sample. type: application version: 1.0.0 From f596fa98f06da34ddd9a8758524df8507012aa06 Mon Sep 17 00:00:00 2001 From: Hans <11695964+hupling@users.noreply.github.com> Date: Wed, 11 Sep 2024 15:13:21 +0200 Subject: [PATCH 08/17] Update charts/refarch-template/Chart.yaml --- charts/refarch-template/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/refarch-template/Chart.yaml b/charts/refarch-template/Chart.yaml index 6d3f7ad..10e6bf2 100644 --- a/charts/refarch-template/Chart.yaml +++ b/charts/refarch-template/Chart.yaml @@ -3,7 +3,7 @@ name: sps-sample description: Helm Chart for deploying a it@M Reference Architecture based sample application. type: application version: 1.0.0 -home: https://github.com/it-at-m/helm-charts/tree/main/charts/refarch-template +home: https://github.com/it-at-m/helm-charts/tree/main/charts/sps-sample icon: https://opensource.muenchen.de/assets/itm-logo-256.png sources: - "https://github.com/it-at-m/helm-charts" From 5a7934e19cce2a0ad6381233d4c21fa3994dbc11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20M=C3=BCller?= <11695964+hupling@users.noreply.github.com> Date: Wed, 11 Sep 2024 15:15:05 +0200 Subject: [PATCH 09/17] rename folder --- charts/refarch-template/.helmignore | 23 ---- .../charts/backend/.helmignore | 23 ---- .../charts/backend/templates/configmap.yaml | 11 -- .../charts/backend/templates/deployment.yaml | 76 ------------- .../charts/backend/templates/hpa.yaml | 32 ------ .../charts/backend/templates/service.yaml | 15 --- .../templates/tests/test-connection.yaml | 15 --- .../charts/backend/values.yaml | 99 ----------------- .../charts/frontend/.helmignore | 23 ---- .../charts/frontend/templates/configmap.yaml | 11 -- .../charts/frontend/templates/deployment.yaml | 76 ------------- .../charts/frontend/templates/hpa.yaml | 32 ------ .../charts/frontend/templates/ingress.yaml | 60 ---------- .../charts/frontend/templates/service.yaml | 15 --- .../templates/tests/test-connection.yaml | 15 --- .../charts/frontend/values.yaml | 99 ----------------- charts/refarch-template/ci/test-values.yaml | 5 - .../templates/serviceaccount.yaml | 13 --- charts/refarch-template/values.yaml | 103 ------------------ .../Chart.yaml | 0 .../README.md | 0 .../charts/backend/Chart.yaml | 0 .../charts/frontend/Chart.yaml | 0 23 files changed, 746 deletions(-) delete mode 100644 charts/refarch-template/.helmignore delete mode 100644 charts/refarch-template/charts/backend/.helmignore delete mode 100644 charts/refarch-template/charts/backend/templates/configmap.yaml delete mode 100644 charts/refarch-template/charts/backend/templates/deployment.yaml delete mode 100644 charts/refarch-template/charts/backend/templates/hpa.yaml delete mode 100644 charts/refarch-template/charts/backend/templates/service.yaml delete mode 100644 charts/refarch-template/charts/backend/templates/tests/test-connection.yaml delete mode 100644 charts/refarch-template/charts/backend/values.yaml delete mode 100644 charts/refarch-template/charts/frontend/.helmignore delete mode 100644 charts/refarch-template/charts/frontend/templates/configmap.yaml delete mode 100644 charts/refarch-template/charts/frontend/templates/deployment.yaml delete mode 100644 charts/refarch-template/charts/frontend/templates/hpa.yaml delete mode 100644 charts/refarch-template/charts/frontend/templates/ingress.yaml delete mode 100644 charts/refarch-template/charts/frontend/templates/service.yaml delete mode 100644 charts/refarch-template/charts/frontend/templates/tests/test-connection.yaml delete mode 100644 charts/refarch-template/charts/frontend/values.yaml delete mode 100644 charts/refarch-template/ci/test-values.yaml delete mode 100644 charts/refarch-template/templates/serviceaccount.yaml delete mode 100644 charts/refarch-template/values.yaml rename charts/{refarch-template => sps-sample}/Chart.yaml (100%) rename charts/{refarch-template => sps-sample}/README.md (100%) rename charts/{refarch-template => sps-sample}/charts/backend/Chart.yaml (100%) rename charts/{refarch-template => sps-sample}/charts/frontend/Chart.yaml (100%) diff --git a/charts/refarch-template/.helmignore b/charts/refarch-template/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/charts/refarch-template/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/refarch-template/charts/backend/.helmignore b/charts/refarch-template/charts/backend/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/charts/refarch-template/charts/backend/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/refarch-template/charts/backend/templates/configmap.yaml b/charts/refarch-template/charts/backend/templates/configmap.yaml deleted file mode 100644 index a1e9c89..0000000 --- a/charts/refarch-template/charts/backend/templates/configmap.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Chart.Name }} - labels: - app: {{ .Chart.Name }} -data: - {{- with .Values.applicationYML }} - application.yml: | - {{- toYaml . | nindent 4 }} - {{- end }} diff --git a/charts/refarch-template/charts/backend/templates/deployment.yaml b/charts/refarch-template/charts/backend/templates/deployment.yaml deleted file mode 100644 index e2c2b8c..0000000 --- a/charts/refarch-template/charts/backend/templates/deployment.yaml +++ /dev/null @@ -1,76 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Chart.Name }} - labels: - app: {{ .Chart.Name }} -spec: - {{- if not .Values.autoscaling.enabled }} - replicas: {{ .Values.replicaCount }} - {{- end }} - selector: - matchLabels: - deployment - template: - metadata: - annotations: - {{- with .Values.podAnnotations }} - {{- toYaml . | nindent 8 }} - {{- end }} - checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} - labels: - app: {{ .Chart.Name }} - spec: - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ .Values.serviceAccount.name }} - securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} - containers: - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} - image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - ports: - - name: http - containerPort: {{ .Values.service.port }} - protocol: TCP - startupProbe: - {{- toYaml .Values.startupProbe | nindent 12 }} - livenessProbe: - {{- toYaml .Values.livenessProbe | nindent 12 }} - readinessProbe: - {{- toYaml .Values.readinessProbe | nindent 12 }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - env: - {{- toYaml .Values.env | nindent 12 }} - volumeMounts: - - name: config - mountPath: /deployments/config - {{- with .Values.volumeMounts }} - {{- toYaml . | nindent 12 }} - {{- end }} - volumes: - - name: config - configMap: - name: {{ .Chart.Name }} - defaultMode: 420 - {{- with .Values.volumes }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/charts/refarch-template/charts/backend/templates/hpa.yaml b/charts/refarch-template/charts/backend/templates/hpa.yaml deleted file mode 100644 index 024d8ca..0000000 --- a/charts/refarch-template/charts/backend/templates/hpa.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if .Values.autoscaling.enabled }} -apiVersion: autoscaling/v2 -kind: HorizontalPodAutoscaler -metadata: - name: {{ .Chart.Name }} - labels: - app: {{ .Chart.Name }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ .Chart.Name }} - minReplicas: {{ .Values.autoscaling.minReplicas }} - maxReplicas: {{ .Values.autoscaling.maxReplicas }} - metrics: - {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} - - type: Resource - resource: - name: cpu - target: - type: Utilization - averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} - {{- end }} - {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} - - type: Resource - resource: - name: memory - target: - type: Utilization - averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} - {{- end }} -{{- end }} diff --git a/charts/refarch-template/charts/backend/templates/service.yaml b/charts/refarch-template/charts/backend/templates/service.yaml deleted file mode 100644 index 1fd3ca5..0000000 --- a/charts/refarch-template/charts/backend/templates/service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ .Chart.Name }} - labels: - app: {{ .Chart.Name }} -spec: - type: {{ .Values.service.type }} - ports: - - port: {{ .Values.service.port }} - targetPort: http - protocol: TCP - name: http - selector: - deployment: {{ .Chart.Name }} diff --git a/charts/refarch-template/charts/backend/templates/tests/test-connection.yaml b/charts/refarch-template/charts/backend/templates/tests/test-connection.yaml deleted file mode 100644 index deb106a..0000000 --- a/charts/refarch-template/charts/backend/templates/tests/test-connection.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: "{{ .Chart.Name . }}-test-connection" - labels: - app: {{ .Chart.Name }} - annotations: - "helm.sh/hook": test -spec: - containers: - - name: wget - image: busybox - command: ['wget'] - args: ['{{ .Chart.Name }}:{{ .Values.service.port }}/actuator/info'] - restartPolicy: Never diff --git a/charts/refarch-template/charts/backend/values.yaml b/charts/refarch-template/charts/backend/values.yaml deleted file mode 100644 index 44908ff..0000000 --- a/charts/refarch-template/charts/backend/values.yaml +++ /dev/null @@ -1,99 +0,0 @@ -replicaCount: 1 - -image: - registry: ghcr.io - repository: it-at-m/refarch/refarch-backend - pullPolicy: IfNotPresent - -imagePullSecrets: [] - -podAnnotations: {} -podLabels: {} - -podSecurityContext: {} - # fsGroup: 2000 - -securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 - -service: - type: ClusterIP - port: 8080 - -ingress: - enabled: false - className: "" - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - hosts: - - host: chart-example.local - paths: - - path: / - pathType: ImplementationSpecific - tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - -resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -startupProbe: - httpGet: - path: /actuator/health - port: http - initialDelaySeconds: 60 -livenessProbe: - httpGet: - path: /actuator/health/liveness - port: http -readinessProbe: - httpGet: - path: /actuator/health/readiness - port: http - -autoscaling: - enabled: false - minReplicas: 1 - maxReplicas: 100 - targetCPUUtilizationPercentage: 80 - # targetMemoryUtilizationPercentage: 80 - -# Additional volumes on the output Deployment definition. -volumes: [] -# - name: foo -# secret: -# secretName: mysecret -# optional: false - -# Additional volumeMounts on the output Deployment definition. -volumeMounts: [] -# - name: foo -# mountPath: "/etc/foo" -# readOnly: true - -# Additional env on the output Deployment definition. -env: [] - -nodeSelector: {} - -tolerations: [] - -affinity: {} - -applicationYML: diff --git a/charts/refarch-template/charts/frontend/.helmignore b/charts/refarch-template/charts/frontend/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/charts/refarch-template/charts/frontend/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/refarch-template/charts/frontend/templates/configmap.yaml b/charts/refarch-template/charts/frontend/templates/configmap.yaml deleted file mode 100644 index bf6e5e0..0000000 --- a/charts/refarch-template/charts/frontend/templates/configmap.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Chart.Name }} - labels: - app: {{ .Chart.Name }} -data: - {{- with .Values.applicationYML }} - application.yml: | - {{- toYaml . | nindent 4 }} - {{- end }} diff --git a/charts/refarch-template/charts/frontend/templates/deployment.yaml b/charts/refarch-template/charts/frontend/templates/deployment.yaml deleted file mode 100644 index 0506491..0000000 --- a/charts/refarch-template/charts/frontend/templates/deployment.yaml +++ /dev/null @@ -1,76 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Chart.Name }} - labels: - app: {{ .Chart.Name }} -spec: - {{- if not .Values.autoscaling.enabled }} - replicas: {{ .Values.replicaCount }} - {{- end }} - selector: - matchLabels: - deployment: {{ .Chart.Name }} - template: - metadata: - annotations: - {{- with .Values.podAnnotations }} - {{- toYaml . | nindent 8 }} - {{- end }} - checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} - labels: - app: {{ .Chart.Name }} - spec: - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ .Values.serviceAccount.name }} - securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} - containers: - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} - image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - ports: - - name: http - containerPort: {{ .Values.service.port }} - protocol: TCP - startupProbe: - {{- toYaml .Values.startupProbe | nindent 12 }} - livenessProbe: - {{- toYaml .Values.livenessProbe | nindent 12 }} - readinessProbe: - {{- toYaml .Values.readinessProbe | nindent 12 }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - env: - {{- toYaml .Values.env | nindent 12 }} - volumeMounts: - - name: config - mountPath: /deployments/config - {{- with .Values.volumeMounts }} - {{- toYaml . | nindent 12 }} - {{- end }} - volumes: - - name: config - configMap: - name: {{ .Chart.Name }} - defaultMode: 420 - {{- with .Values.volumes }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/charts/refarch-template/charts/frontend/templates/hpa.yaml b/charts/refarch-template/charts/frontend/templates/hpa.yaml deleted file mode 100644 index 024d8ca..0000000 --- a/charts/refarch-template/charts/frontend/templates/hpa.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if .Values.autoscaling.enabled }} -apiVersion: autoscaling/v2 -kind: HorizontalPodAutoscaler -metadata: - name: {{ .Chart.Name }} - labels: - app: {{ .Chart.Name }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ .Chart.Name }} - minReplicas: {{ .Values.autoscaling.minReplicas }} - maxReplicas: {{ .Values.autoscaling.maxReplicas }} - metrics: - {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} - - type: Resource - resource: - name: cpu - target: - type: Utilization - averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} - {{- end }} - {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} - - type: Resource - resource: - name: memory - target: - type: Utilization - averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} - {{- end }} -{{- end }} diff --git a/charts/refarch-template/charts/frontend/templates/ingress.yaml b/charts/refarch-template/charts/frontend/templates/ingress.yaml deleted file mode 100644 index 6c885ac..0000000 --- a/charts/refarch-template/charts/frontend/templates/ingress.yaml +++ /dev/null @@ -1,60 +0,0 @@ -{{- if .Values.ingress.enabled -}} -{{- $svcPort := .Values.service.port -}} -{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} - {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} - {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} - {{- end }} -{{- end }} -{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} -apiVersion: networking.k8s.io/v1 -{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} -apiVersion: networking.k8s.io/v1beta1 -{{- else -}} -apiVersion: extensions/v1beta1 -{{- end }} -kind: Ingress -metadata: - name: {{ .Chart.Name }} - labels: - app: {{ .Chart.Name }} - {{- with .Values.ingress.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} - ingressClassName: {{ .Values.ingress.className }} - {{- end }} - {{- if .Values.ingress.tls }} - tls: - {{- range .Values.ingress.tls }} - - hosts: - {{- range .hosts }} - - {{ . | quote }} - {{- end }} - secretName: {{ .secretName }} - {{- end }} - {{- end }} - rules: - {{- range .Values.ingress.hosts }} - - host: {{ .host | quote }} - http: - paths: - {{- range .paths }} - - path: {{ .path }} - {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} - pathType: {{ .pathType }} - {{- end }} - backend: - {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} - service: - name: {{ .Chart.Name }} - port: - number: {{ $svcPort }} - {{- else }} - serviceName: {{ .Chart.Name }} - servicePort: {{ $svcPort }} - {{- end }} - {{- end }} - {{- end }} -{{- end }} diff --git a/charts/refarch-template/charts/frontend/templates/service.yaml b/charts/refarch-template/charts/frontend/templates/service.yaml deleted file mode 100644 index 1fd3ca5..0000000 --- a/charts/refarch-template/charts/frontend/templates/service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ .Chart.Name }} - labels: - app: {{ .Chart.Name }} -spec: - type: {{ .Values.service.type }} - ports: - - port: {{ .Values.service.port }} - targetPort: http - protocol: TCP - name: http - selector: - deployment: {{ .Chart.Name }} diff --git a/charts/refarch-template/charts/frontend/templates/tests/test-connection.yaml b/charts/refarch-template/charts/frontend/templates/tests/test-connection.yaml deleted file mode 100644 index 7d65bb0..0000000 --- a/charts/refarch-template/charts/frontend/templates/tests/test-connection.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: {{ .Chart.Name }} - labels: - app: {{ .Chart.Name }} - annotations: - "helm.sh/hook": test -spec: - containers: - - name: wget - image: busybox - command: ['wget'] - args: ['{{ .Chart.Name }}:{{ .Values.service.port }}/actuator/info'] - restartPolicy: Never diff --git a/charts/refarch-template/charts/frontend/values.yaml b/charts/refarch-template/charts/frontend/values.yaml deleted file mode 100644 index 4c12d67..0000000 --- a/charts/refarch-template/charts/frontend/values.yaml +++ /dev/null @@ -1,99 +0,0 @@ -replicaCount: 1 - -image: - registry: ghcr.io - repository: it-at-m/refarch/refarch-gateway - pullPolicy: IfNotPresent - -imagePullSecrets: [] - -podAnnotations: {} -podLabels: {} - -podSecurityContext: {} - # fsGroup: 2000 - -securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 - -service: - type: ClusterIP - port: 8080 - -ingress: - enabled: false - className: "" - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - hosts: - - host: chart-example.local - paths: - - path: / - pathType: ImplementationSpecific - tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - -resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -startupProbe: - httpGet: - path: /actuator/health - port: http - initialDelaySeconds: 60 -livenessProbe: - httpGet: - path: /actuator/health/liveness - port: http -readinessProbe: - httpGet: - path: /actuator/health/readiness - port: http - -autoscaling: - enabled: false - minReplicas: 1 - maxReplicas: 100 - targetCPUUtilizationPercentage: 80 - # targetMemoryUtilizationPercentage: 80 - -# Additional volumes on the output Deployment definition. -volumes: [] -# - name: foo -# secret: -# secretName: mysecret -# optional: false - -# Additional volumeMounts on the output Deployment definition. -volumeMounts: [] -# - name: foo -# mountPath: "/etc/foo" -# readOnly: true - -# Additional env on the output Deployment definition. -env: [] - -nodeSelector: {} - -tolerations: [] - -affinity: {} - -applicationYML: diff --git a/charts/refarch-template/ci/test-values.yaml b/charts/refarch-template/ci/test-values.yaml deleted file mode 100644 index ed35d81..0000000 --- a/charts/refarch-template/ci/test-values.yaml +++ /dev/null @@ -1,5 +0,0 @@ -applicationYML: - SSO_ISSUER_URL: https://sso.muenchen.de/auth/realms/muenchen.de - spring: - profiles: - active: "no-security" diff --git a/charts/refarch-template/templates/serviceaccount.yaml b/charts/refarch-template/templates/serviceaccount.yaml deleted file mode 100644 index 98dd1d4..0000000 --- a/charts/refarch-template/templates/serviceaccount.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Values.serviceAccount.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ .Values.serviceAccount.name }} - labels: - app: {{ .Chart.Name }} - {{- with .Values.serviceAccount.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -automountServiceAccountToken: {{ .Values.serviceAccount.automount }} -{{- end }} diff --git a/charts/refarch-template/values.yaml b/charts/refarch-template/values.yaml deleted file mode 100644 index b10d46e..0000000 --- a/charts/refarch-template/values.yaml +++ /dev/null @@ -1,103 +0,0 @@ -replicaCount: 1 - -imagePullSecrets: [] - -serviceAccount: - # Specifies whether a service account should be created - create: false - # Automatically mount a ServiceAccount's API credentials? - automount: true - # Annotations to add to the service account - annotations: {} - name: "" - -podAnnotations: {} -podLabels: {} - -podSecurityContext: {} - # fsGroup: 2000 - -securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 - -service: - type: ClusterIP - port: 8080 - -ingress: - enabled: false - className: "" - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - hosts: - - host: chart-example.local - paths: - - path: / - pathType: ImplementationSpecific - tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - -resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -startupProbe: - httpGet: - path: /actuator/health - port: http - initialDelaySeconds: 60 -livenessProbe: - httpGet: - path: /actuator/health/liveness - port: http -readinessProbe: - httpGet: - path: /actuator/health/readiness - port: http - -autoscaling: - enabled: false - minReplicas: 1 - maxReplicas: 100 - targetCPUUtilizationPercentage: 80 - # targetMemoryUtilizationPercentage: 80 - -# Additional volumes on the output Deployment definition. -volumes: [] -# - name: foo -# secret: -# secretName: mysecret -# optional: false - -# Additional volumeMounts on the output Deployment definition. -volumeMounts: [] -# - name: foo -# mountPath: "/etc/foo" -# readOnly: true - -# Additional env on the output Deployment definition. -env: [] - -nodeSelector: {} - -tolerations: [] - -affinity: {} - -applicationYML: diff --git a/charts/refarch-template/Chart.yaml b/charts/sps-sample/Chart.yaml similarity index 100% rename from charts/refarch-template/Chart.yaml rename to charts/sps-sample/Chart.yaml diff --git a/charts/refarch-template/README.md b/charts/sps-sample/README.md similarity index 100% rename from charts/refarch-template/README.md rename to charts/sps-sample/README.md diff --git a/charts/refarch-template/charts/backend/Chart.yaml b/charts/sps-sample/charts/backend/Chart.yaml similarity index 100% rename from charts/refarch-template/charts/backend/Chart.yaml rename to charts/sps-sample/charts/backend/Chart.yaml diff --git a/charts/refarch-template/charts/frontend/Chart.yaml b/charts/sps-sample/charts/frontend/Chart.yaml similarity index 100% rename from charts/refarch-template/charts/frontend/Chart.yaml rename to charts/sps-sample/charts/frontend/Chart.yaml From ef455a286ca50cd04024e5429d19828b21f74a79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20M=C3=BCller?= <11695964+hupling@users.noreply.github.com> Date: Wed, 11 Sep 2024 15:45:31 +0200 Subject: [PATCH 10/17] add dependency --- charts/sps-sample/Chart.lock | 12 ++++++++++++ charts/sps-sample/Chart.yaml | 3 +++ 2 files changed, 15 insertions(+) create mode 100644 charts/sps-sample/Chart.lock diff --git a/charts/sps-sample/Chart.lock b/charts/sps-sample/Chart.lock new file mode 100644 index 0000000..7aa00aa --- /dev/null +++ b/charts/sps-sample/Chart.lock @@ -0,0 +1,12 @@ +dependencies: +- name: backend + repository: "" + version: 1.0.0 +- name: frontend + repository: "" + version: 1.0.0 +- name: refarch-gateway + repository: https://it-at-m.github.io/helm-charts + version: 1.0.0 +digest: sha256:397d7ff033bd920edfa3e73415d5f72c53a421c095236944bb1fea867ac63eef +generated: "2024-09-11T15:39:42.3027911+02:00" diff --git a/charts/sps-sample/Chart.yaml b/charts/sps-sample/Chart.yaml index 10e6bf2..9269b62 100644 --- a/charts/sps-sample/Chart.yaml +++ b/charts/sps-sample/Chart.yaml @@ -12,6 +12,9 @@ dependencies: version: 1.0.0 - name: frontend version: 1.0.0 + - name: refarch-gateway + version: 1.0.0 + repository: "https://it-at-m.github.io/helm-charts" maintainers: - name: banzuu url: https://github.com/banzuu From cdaca80dff51c9903f61100e95d25baf9f588643 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20M=C3=BCller?= <11695964+hupling@users.noreply.github.com> Date: Wed, 11 Sep 2024 15:57:23 +0200 Subject: [PATCH 11/17] restore delete files --- charts/sps-sample/.helmignore | 23 ++++ charts/sps-sample/Chart.lock | 2 +- charts/sps-sample/charts/backend/.helmignore | 23 ++++ .../charts/backend/templates/configmap.yaml | 11 ++ .../charts/backend/templates/deployment.yaml | 76 +++++++++++++ .../charts/backend/templates/hpa.yaml | 32 ++++++ .../charts/backend/templates/service.yaml | 15 +++ .../templates/tests/test-connection.yaml | 15 +++ charts/sps-sample/charts/backend/values.yaml | 99 +++++++++++++++++ charts/sps-sample/charts/frontend/.helmignore | 23 ++++ .../charts/frontend/templates/configmap.yaml | 11 ++ .../charts/frontend/templates/deployment.yaml | 76 +++++++++++++ .../charts/frontend/templates/hpa.yaml | 32 ++++++ .../charts/frontend/templates/ingress.yaml | 60 ++++++++++ .../charts/frontend/templates/service.yaml | 15 +++ .../templates/tests/test-connection.yaml | 15 +++ charts/sps-sample/charts/frontend/values.yaml | 99 +++++++++++++++++ charts/sps-sample/ci/test-values.yaml | 5 + .../sps-sample/templates/serviceaccount.yaml | 13 +++ charts/sps-sample/values.yaml | 103 ++++++++++++++++++ 20 files changed, 747 insertions(+), 1 deletion(-) create mode 100644 charts/sps-sample/.helmignore create mode 100644 charts/sps-sample/charts/backend/.helmignore create mode 100644 charts/sps-sample/charts/backend/templates/configmap.yaml create mode 100644 charts/sps-sample/charts/backend/templates/deployment.yaml create mode 100644 charts/sps-sample/charts/backend/templates/hpa.yaml create mode 100644 charts/sps-sample/charts/backend/templates/service.yaml create mode 100644 charts/sps-sample/charts/backend/templates/tests/test-connection.yaml create mode 100644 charts/sps-sample/charts/backend/values.yaml create mode 100644 charts/sps-sample/charts/frontend/.helmignore create mode 100644 charts/sps-sample/charts/frontend/templates/configmap.yaml create mode 100644 charts/sps-sample/charts/frontend/templates/deployment.yaml create mode 100644 charts/sps-sample/charts/frontend/templates/hpa.yaml create mode 100644 charts/sps-sample/charts/frontend/templates/ingress.yaml create mode 100644 charts/sps-sample/charts/frontend/templates/service.yaml create mode 100644 charts/sps-sample/charts/frontend/templates/tests/test-connection.yaml create mode 100644 charts/sps-sample/charts/frontend/values.yaml create mode 100644 charts/sps-sample/ci/test-values.yaml create mode 100644 charts/sps-sample/templates/serviceaccount.yaml create mode 100644 charts/sps-sample/values.yaml diff --git a/charts/sps-sample/.helmignore b/charts/sps-sample/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/charts/sps-sample/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/sps-sample/Chart.lock b/charts/sps-sample/Chart.lock index 7aa00aa..7e67119 100644 --- a/charts/sps-sample/Chart.lock +++ b/charts/sps-sample/Chart.lock @@ -9,4 +9,4 @@ dependencies: repository: https://it-at-m.github.io/helm-charts version: 1.0.0 digest: sha256:397d7ff033bd920edfa3e73415d5f72c53a421c095236944bb1fea867ac63eef -generated: "2024-09-11T15:39:42.3027911+02:00" +generated: "2024-09-11T15:56:17.7384345+02:00" diff --git a/charts/sps-sample/charts/backend/.helmignore b/charts/sps-sample/charts/backend/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/charts/sps-sample/charts/backend/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/sps-sample/charts/backend/templates/configmap.yaml b/charts/sps-sample/charts/backend/templates/configmap.yaml new file mode 100644 index 0000000..a1e9c89 --- /dev/null +++ b/charts/sps-sample/charts/backend/templates/configmap.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} +data: + {{- with .Values.applicationYML }} + application.yml: | + {{- toYaml . | nindent 4 }} + {{- end }} diff --git a/charts/sps-sample/charts/backend/templates/deployment.yaml b/charts/sps-sample/charts/backend/templates/deployment.yaml new file mode 100644 index 0000000..e2c2b8c --- /dev/null +++ b/charts/sps-sample/charts/backend/templates/deployment.yaml @@ -0,0 +1,76 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + deployment + template: + metadata: + annotations: + {{- with .Values.podAnnotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} + labels: + app: {{ .Chart.Name }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ .Values.serviceAccount.name }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: {{ .Values.service.port }} + protocol: TCP + startupProbe: + {{- toYaml .Values.startupProbe | nindent 12 }} + livenessProbe: + {{- toYaml .Values.livenessProbe | nindent 12 }} + readinessProbe: + {{- toYaml .Values.readinessProbe | nindent 12 }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + env: + {{- toYaml .Values.env | nindent 12 }} + volumeMounts: + - name: config + mountPath: /deployments/config + {{- with .Values.volumeMounts }} + {{- toYaml . | nindent 12 }} + {{- end }} + volumes: + - name: config + configMap: + name: {{ .Chart.Name }} + defaultMode: 420 + {{- with .Values.volumes }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/charts/sps-sample/charts/backend/templates/hpa.yaml b/charts/sps-sample/charts/backend/templates/hpa.yaml new file mode 100644 index 0000000..024d8ca --- /dev/null +++ b/charts/sps-sample/charts/backend/templates/hpa.yaml @@ -0,0 +1,32 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ .Chart.Name }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/charts/sps-sample/charts/backend/templates/service.yaml b/charts/sps-sample/charts/backend/templates/service.yaml new file mode 100644 index 0000000..1fd3ca5 --- /dev/null +++ b/charts/sps-sample/charts/backend/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + deployment: {{ .Chart.Name }} diff --git a/charts/sps-sample/charts/backend/templates/tests/test-connection.yaml b/charts/sps-sample/charts/backend/templates/tests/test-connection.yaml new file mode 100644 index 0000000..deb106a --- /dev/null +++ b/charts/sps-sample/charts/backend/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Chart.Name . }}-test-connection" + labels: + app: {{ .Chart.Name }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ .Chart.Name }}:{{ .Values.service.port }}/actuator/info'] + restartPolicy: Never diff --git a/charts/sps-sample/charts/backend/values.yaml b/charts/sps-sample/charts/backend/values.yaml new file mode 100644 index 0000000..44908ff --- /dev/null +++ b/charts/sps-sample/charts/backend/values.yaml @@ -0,0 +1,99 @@ +replicaCount: 1 + +image: + registry: ghcr.io + repository: it-at-m/refarch/refarch-backend + pullPolicy: IfNotPresent + +imagePullSecrets: [] + +podAnnotations: {} +podLabels: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 8080 + +ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +startupProbe: + httpGet: + path: /actuator/health + port: http + initialDelaySeconds: 60 +livenessProbe: + httpGet: + path: /actuator/health/liveness + port: http +readinessProbe: + httpGet: + path: /actuator/health/readiness + port: http + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +# Additional volumes on the output Deployment definition. +volumes: [] +# - name: foo +# secret: +# secretName: mysecret +# optional: false + +# Additional volumeMounts on the output Deployment definition. +volumeMounts: [] +# - name: foo +# mountPath: "/etc/foo" +# readOnly: true + +# Additional env on the output Deployment definition. +env: [] + +nodeSelector: {} + +tolerations: [] + +affinity: {} + +applicationYML: diff --git a/charts/sps-sample/charts/frontend/.helmignore b/charts/sps-sample/charts/frontend/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/charts/sps-sample/charts/frontend/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/sps-sample/charts/frontend/templates/configmap.yaml b/charts/sps-sample/charts/frontend/templates/configmap.yaml new file mode 100644 index 0000000..bf6e5e0 --- /dev/null +++ b/charts/sps-sample/charts/frontend/templates/configmap.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} +data: + {{- with .Values.applicationYML }} + application.yml: | + {{- toYaml . | nindent 4 }} + {{- end }} diff --git a/charts/sps-sample/charts/frontend/templates/deployment.yaml b/charts/sps-sample/charts/frontend/templates/deployment.yaml new file mode 100644 index 0000000..0506491 --- /dev/null +++ b/charts/sps-sample/charts/frontend/templates/deployment.yaml @@ -0,0 +1,76 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + deployment: {{ .Chart.Name }} + template: + metadata: + annotations: + {{- with .Values.podAnnotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} + labels: + app: {{ .Chart.Name }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ .Values.serviceAccount.name }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: {{ .Values.service.port }} + protocol: TCP + startupProbe: + {{- toYaml .Values.startupProbe | nindent 12 }} + livenessProbe: + {{- toYaml .Values.livenessProbe | nindent 12 }} + readinessProbe: + {{- toYaml .Values.readinessProbe | nindent 12 }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + env: + {{- toYaml .Values.env | nindent 12 }} + volumeMounts: + - name: config + mountPath: /deployments/config + {{- with .Values.volumeMounts }} + {{- toYaml . | nindent 12 }} + {{- end }} + volumes: + - name: config + configMap: + name: {{ .Chart.Name }} + defaultMode: 420 + {{- with .Values.volumes }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/charts/sps-sample/charts/frontend/templates/hpa.yaml b/charts/sps-sample/charts/frontend/templates/hpa.yaml new file mode 100644 index 0000000..024d8ca --- /dev/null +++ b/charts/sps-sample/charts/frontend/templates/hpa.yaml @@ -0,0 +1,32 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ .Chart.Name }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/charts/sps-sample/charts/frontend/templates/ingress.yaml b/charts/sps-sample/charts/frontend/templates/ingress.yaml new file mode 100644 index 0000000..6c885ac --- /dev/null +++ b/charts/sps-sample/charts/frontend/templates/ingress.yaml @@ -0,0 +1,60 @@ +{{- if .Values.ingress.enabled -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ .Chart.Name }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ .Chart.Name }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/sps-sample/charts/frontend/templates/service.yaml b/charts/sps-sample/charts/frontend/templates/service.yaml new file mode 100644 index 0000000..1fd3ca5 --- /dev/null +++ b/charts/sps-sample/charts/frontend/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + deployment: {{ .Chart.Name }} diff --git a/charts/sps-sample/charts/frontend/templates/tests/test-connection.yaml b/charts/sps-sample/charts/frontend/templates/tests/test-connection.yaml new file mode 100644 index 0000000..7d65bb0 --- /dev/null +++ b/charts/sps-sample/charts/frontend/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: {{ .Chart.Name }} + labels: + app: {{ .Chart.Name }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ .Chart.Name }}:{{ .Values.service.port }}/actuator/info'] + restartPolicy: Never diff --git a/charts/sps-sample/charts/frontend/values.yaml b/charts/sps-sample/charts/frontend/values.yaml new file mode 100644 index 0000000..4c12d67 --- /dev/null +++ b/charts/sps-sample/charts/frontend/values.yaml @@ -0,0 +1,99 @@ +replicaCount: 1 + +image: + registry: ghcr.io + repository: it-at-m/refarch/refarch-gateway + pullPolicy: IfNotPresent + +imagePullSecrets: [] + +podAnnotations: {} +podLabels: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 8080 + +ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +startupProbe: + httpGet: + path: /actuator/health + port: http + initialDelaySeconds: 60 +livenessProbe: + httpGet: + path: /actuator/health/liveness + port: http +readinessProbe: + httpGet: + path: /actuator/health/readiness + port: http + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +# Additional volumes on the output Deployment definition. +volumes: [] +# - name: foo +# secret: +# secretName: mysecret +# optional: false + +# Additional volumeMounts on the output Deployment definition. +volumeMounts: [] +# - name: foo +# mountPath: "/etc/foo" +# readOnly: true + +# Additional env on the output Deployment definition. +env: [] + +nodeSelector: {} + +tolerations: [] + +affinity: {} + +applicationYML: diff --git a/charts/sps-sample/ci/test-values.yaml b/charts/sps-sample/ci/test-values.yaml new file mode 100644 index 0000000..ed35d81 --- /dev/null +++ b/charts/sps-sample/ci/test-values.yaml @@ -0,0 +1,5 @@ +applicationYML: + SSO_ISSUER_URL: https://sso.muenchen.de/auth/realms/muenchen.de + spring: + profiles: + active: "no-security" diff --git a/charts/sps-sample/templates/serviceaccount.yaml b/charts/sps-sample/templates/serviceaccount.yaml new file mode 100644 index 0000000..98dd1d4 --- /dev/null +++ b/charts/sps-sample/templates/serviceaccount.yaml @@ -0,0 +1,13 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Values.serviceAccount.name }} + labels: + app: {{ .Chart.Name }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.serviceAccount.automount }} +{{- end }} diff --git a/charts/sps-sample/values.yaml b/charts/sps-sample/values.yaml new file mode 100644 index 0000000..b10d46e --- /dev/null +++ b/charts/sps-sample/values.yaml @@ -0,0 +1,103 @@ +replicaCount: 1 + +imagePullSecrets: [] + +serviceAccount: + # Specifies whether a service account should be created + create: false + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + name: "" + +podAnnotations: {} +podLabels: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 8080 + +ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +startupProbe: + httpGet: + path: /actuator/health + port: http + initialDelaySeconds: 60 +livenessProbe: + httpGet: + path: /actuator/health/liveness + port: http +readinessProbe: + httpGet: + path: /actuator/health/readiness + port: http + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +# Additional volumes on the output Deployment definition. +volumes: [] +# - name: foo +# secret: +# secretName: mysecret +# optional: false + +# Additional volumeMounts on the output Deployment definition. +volumeMounts: [] +# - name: foo +# mountPath: "/etc/foo" +# readOnly: true + +# Additional env on the output Deployment definition. +env: [] + +nodeSelector: {} + +tolerations: [] + +affinity: {} + +applicationYML: From fae27704a048adcdfbe36d22dff1e63b6588ccea Mon Sep 17 00:00:00 2001 From: Hans <11695964+hupling@users.noreply.github.com> Date: Wed, 11 Sep 2024 16:17:31 +0200 Subject: [PATCH 12/17] Update release.yml --- .github/workflows/release.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ee6a55e..e383997 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,7 +21,9 @@ jobs: - name: Install Helm uses: azure/setup-helm@v4 - name: Add dependency repos - run: helm repo add bitnami https://charts.bitnami.com/bitnami + run: | + helm repo add bitnami https://charts.bitnami.com/bitnami + helm repo add bitnami https://it-at-m.github.io/helm-charts - name: Run chart-releaser uses: helm/chart-releaser-action@v1.6.0 env: From 0cdb50006636dd40a9b329c1021675f0be3eccb8 Mon Sep 17 00:00:00 2001 From: Hans <11695964+hupling@users.noreply.github.com> Date: Wed, 11 Sep 2024 16:18:29 +0200 Subject: [PATCH 13/17] Update release.yml --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e383997..b733d85 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,7 +23,7 @@ jobs: - name: Add dependency repos run: | helm repo add bitnami https://charts.bitnami.com/bitnami - helm repo add bitnami https://it-at-m.github.io/helm-charts + helm repo add it-at-m https://it-at-m.github.io/helm-charts - name: Run chart-releaser uses: helm/chart-releaser-action@v1.6.0 env: From dfefcc5306b58a94c7254db68c29c82cae02294c Mon Sep 17 00:00:00 2001 From: Hans <11695964+hupling@users.noreply.github.com> Date: Wed, 11 Sep 2024 16:20:10 +0200 Subject: [PATCH 14/17] Update release.yml From 483620ff05652ca5535021502de5c4d18f6229e3 Mon Sep 17 00:00:00 2001 From: Hans <11695964+hupling@users.noreply.github.com> Date: Wed, 11 Sep 2024 16:20:35 +0200 Subject: [PATCH 15/17] Update ci.yml --- .github/workflows/ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9a5c461..f466557 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,9 @@ jobs: - name: Set up chart-testing uses: helm/chart-testing-action@v2.6.1 - name: Add dependency repos - run: helm repo add bitnami https://charts.bitnami.com/bitnami + run: | + helm repo add bitnami https://charts.bitnami.com/bitnami + helm repo add it-at-m https://it-at-m.github.io/helm-charts - name: Run chart-testing (list-changed) id: list-changed run: | From 0e61f50a983a43e314112b918ffc9d6887175b02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20M=C3=BCller?= <11695964+hupling@users.noreply.github.com> Date: Thu, 12 Sep 2024 10:19:30 +0200 Subject: [PATCH 16/17] reset frontend --- charts/sps-sample/charts/frontend/Chart.yaml | 19 ++++++ .../charts/frontend/templates/NOTES.txt | 22 +++++++ .../charts/frontend/templates/_helpers.tpl | 62 +++++++++++++++++++ .../charts/frontend/templates/configmap.yaml | 11 ---- .../charts/frontend/templates/deployment.yaml | 34 ++++------ .../charts/frontend/templates/hpa.yaml | 6 +- .../charts/frontend/templates/ingress.yaml | 9 +-- .../charts/frontend/templates/service.yaml | 6 +- .../frontend}/templates/serviceaccount.yaml | 4 +- .../templates/tests/test-connection.yaml | 6 +- charts/sps-sample/charts/frontend/values.yaml | 48 ++++++++------ charts/sps-sample/ci/test-values.yaml | 5 -- 12 files changed, 162 insertions(+), 70 deletions(-) create mode 100644 charts/sps-sample/charts/frontend/templates/NOTES.txt create mode 100644 charts/sps-sample/charts/frontend/templates/_helpers.tpl delete mode 100644 charts/sps-sample/charts/frontend/templates/configmap.yaml rename charts/sps-sample/{ => charts/frontend}/templates/serviceaccount.yaml (73%) delete mode 100644 charts/sps-sample/ci/test-values.yaml diff --git a/charts/sps-sample/charts/frontend/Chart.yaml b/charts/sps-sample/charts/frontend/Chart.yaml index 4e97b87..d57954f 100644 --- a/charts/sps-sample/charts/frontend/Chart.yaml +++ b/charts/sps-sample/charts/frontend/Chart.yaml @@ -1,5 +1,24 @@ apiVersion: v2 name: frontend description: Frontend sub-chart of sps-sample. + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) version: 1.0.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.0.0" diff --git a/charts/sps-sample/charts/frontend/templates/NOTES.txt b/charts/sps-sample/charts/frontend/templates/NOTES.txt new file mode 100644 index 0000000..0df4965 --- /dev/null +++ b/charts/sps-sample/charts/frontend/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "frontend.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch its status by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "frontend.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "frontend.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "frontend.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/charts/sps-sample/charts/frontend/templates/_helpers.tpl b/charts/sps-sample/charts/frontend/templates/_helpers.tpl new file mode 100644 index 0000000..92c6c3b --- /dev/null +++ b/charts/sps-sample/charts/frontend/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "frontend.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "frontend.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "frontend.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "frontend.labels" -}} +helm.sh/chart: {{ include "frontend.chart" . }} +{{ include "frontend.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "frontend.selectorLabels" -}} +app.kubernetes.io/name: {{ include "frontend.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "frontend.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "frontend.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/charts/sps-sample/charts/frontend/templates/configmap.yaml b/charts/sps-sample/charts/frontend/templates/configmap.yaml deleted file mode 100644 index bf6e5e0..0000000 --- a/charts/sps-sample/charts/frontend/templates/configmap.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Chart.Name }} - labels: - app: {{ .Chart.Name }} -data: - {{- with .Values.applicationYML }} - application.yml: | - {{- toYaml . | nindent 4 }} - {{- end }} diff --git a/charts/sps-sample/charts/frontend/templates/deployment.yaml b/charts/sps-sample/charts/frontend/templates/deployment.yaml index 0506491..043eba0 100644 --- a/charts/sps-sample/charts/frontend/templates/deployment.yaml +++ b/charts/sps-sample/charts/frontend/templates/deployment.yaml @@ -1,65 +1,57 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: {{ .Chart.Name }} + name: {{ include "frontend.fullname" . }} labels: - app: {{ .Chart.Name }} + {{- include "frontend.labels" . | nindent 4 }} spec: {{- if not .Values.autoscaling.enabled }} replicas: {{ .Values.replicaCount }} {{- end }} selector: matchLabels: - deployment: {{ .Chart.Name }} + {{- include "frontend.selectorLabels" . | nindent 6 }} template: metadata: + {{- with .Values.podAnnotations }} annotations: - {{- with .Values.podAnnotations }} {{- toYaml . | nindent 8 }} - {{- end }} - checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} + {{- end }} labels: - app: {{ .Chart.Name }} + {{- include "frontend.labels" . | nindent 8 }} + {{- with .Values.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} spec: {{- with .Values.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} - serviceAccountName: {{ .Values.serviceAccount.name }} + serviceAccountName: {{ include "frontend.serviceAccountName" . }} securityContext: {{- toYaml .Values.podSecurityContext | nindent 8 }} containers: - name: {{ .Chart.Name }} securityContext: {{- toYaml .Values.securityContext | nindent 12 }} - image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.image.pullPolicy }} ports: - name: http containerPort: {{ .Values.service.port }} protocol: TCP - startupProbe: - {{- toYaml .Values.startupProbe | nindent 12 }} livenessProbe: {{- toYaml .Values.livenessProbe | nindent 12 }} readinessProbe: {{- toYaml .Values.readinessProbe | nindent 12 }} resources: {{- toYaml .Values.resources | nindent 12 }} - env: - {{- toYaml .Values.env | nindent 12 }} - volumeMounts: - - name: config - mountPath: /deployments/config {{- with .Values.volumeMounts }} + volumeMounts: {{- toYaml . | nindent 12 }} {{- end }} - volumes: - - name: config - configMap: - name: {{ .Chart.Name }} - defaultMode: 420 {{- with .Values.volumes }} + volumes: {{- toYaml . | nindent 8 }} {{- end }} {{- with .Values.nodeSelector }} diff --git a/charts/sps-sample/charts/frontend/templates/hpa.yaml b/charts/sps-sample/charts/frontend/templates/hpa.yaml index 024d8ca..535b347 100644 --- a/charts/sps-sample/charts/frontend/templates/hpa.yaml +++ b/charts/sps-sample/charts/frontend/templates/hpa.yaml @@ -2,14 +2,14 @@ apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: - name: {{ .Chart.Name }} + name: {{ include "frontend.fullname" . }} labels: - app: {{ .Chart.Name }} + {{- include "frontend.labels" . | nindent 4 }} spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment - name: {{ .Chart.Name }} + name: {{ include "frontend.fullname" . }} minReplicas: {{ .Values.autoscaling.minReplicas }} maxReplicas: {{ .Values.autoscaling.maxReplicas }} metrics: diff --git a/charts/sps-sample/charts/frontend/templates/ingress.yaml b/charts/sps-sample/charts/frontend/templates/ingress.yaml index 6c885ac..410043a 100644 --- a/charts/sps-sample/charts/frontend/templates/ingress.yaml +++ b/charts/sps-sample/charts/frontend/templates/ingress.yaml @@ -1,4 +1,5 @@ {{- if .Values.ingress.enabled -}} +{{- $fullName := include "frontend.fullname" . -}} {{- $svcPort := .Values.service.port -}} {{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} @@ -14,9 +15,9 @@ apiVersion: extensions/v1beta1 {{- end }} kind: Ingress metadata: - name: {{ .Chart.Name }} + name: {{ $fullName }} labels: - app: {{ .Chart.Name }} + {{- include "frontend.labels" . | nindent 4 }} {{- with .Values.ingress.annotations }} annotations: {{- toYaml . | nindent 4 }} @@ -48,11 +49,11 @@ spec: backend: {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} service: - name: {{ .Chart.Name }} + name: {{ $fullName }} port: number: {{ $svcPort }} {{- else }} - serviceName: {{ .Chart.Name }} + serviceName: {{ $fullName }} servicePort: {{ $svcPort }} {{- end }} {{- end }} diff --git a/charts/sps-sample/charts/frontend/templates/service.yaml b/charts/sps-sample/charts/frontend/templates/service.yaml index 1fd3ca5..708b0ed 100644 --- a/charts/sps-sample/charts/frontend/templates/service.yaml +++ b/charts/sps-sample/charts/frontend/templates/service.yaml @@ -1,9 +1,9 @@ apiVersion: v1 kind: Service metadata: - name: {{ .Chart.Name }} + name: {{ include "frontend.fullname" . }} labels: - app: {{ .Chart.Name }} + {{- include "frontend.labels" . | nindent 4 }} spec: type: {{ .Values.service.type }} ports: @@ -12,4 +12,4 @@ spec: protocol: TCP name: http selector: - deployment: {{ .Chart.Name }} + {{- include "frontend.selectorLabels" . | nindent 4 }} diff --git a/charts/sps-sample/templates/serviceaccount.yaml b/charts/sps-sample/charts/frontend/templates/serviceaccount.yaml similarity index 73% rename from charts/sps-sample/templates/serviceaccount.yaml rename to charts/sps-sample/charts/frontend/templates/serviceaccount.yaml index 98dd1d4..22facbd 100644 --- a/charts/sps-sample/templates/serviceaccount.yaml +++ b/charts/sps-sample/charts/frontend/templates/serviceaccount.yaml @@ -2,9 +2,9 @@ apiVersion: v1 kind: ServiceAccount metadata: - name: {{ .Values.serviceAccount.name }} + name: {{ include "frontend.serviceAccountName" . }} labels: - app: {{ .Chart.Name }} + {{- include "frontend.labels" . | nindent 4 }} {{- with .Values.serviceAccount.annotations }} annotations: {{- toYaml . | nindent 4 }} diff --git a/charts/sps-sample/charts/frontend/templates/tests/test-connection.yaml b/charts/sps-sample/charts/frontend/templates/tests/test-connection.yaml index 7d65bb0..372ac5e 100644 --- a/charts/sps-sample/charts/frontend/templates/tests/test-connection.yaml +++ b/charts/sps-sample/charts/frontend/templates/tests/test-connection.yaml @@ -1,9 +1,9 @@ apiVersion: v1 kind: Pod metadata: - name: {{ .Chart.Name }} + name: "{{ include "frontend.fullname" . }}-test-connection" labels: - app: {{ .Chart.Name }} + {{- include "frontend.labels" . | nindent 4 }} annotations: "helm.sh/hook": test spec: @@ -11,5 +11,5 @@ spec: - name: wget image: busybox command: ['wget'] - args: ['{{ .Chart.Name }}:{{ .Values.service.port }}/actuator/info'] + args: ['{{ include "frontend.fullname" . }}:{{ .Values.service.port }}'] restartPolicy: Never diff --git a/charts/sps-sample/charts/frontend/values.yaml b/charts/sps-sample/charts/frontend/values.yaml index 4c12d67..7adabcd 100644 --- a/charts/sps-sample/charts/frontend/values.yaml +++ b/charts/sps-sample/charts/frontend/values.yaml @@ -1,19 +1,39 @@ +# Default values for frontend. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + replicaCount: 1 image: - registry: ghcr.io - repository: it-at-m/refarch/refarch-gateway + repository: nginx pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" podAnnotations: {} podLabels: {} -podSecurityContext: {} +podSecurityContext: + {} # fsGroup: 2000 -securityContext: {} +securityContext: + {} # capabilities: # drop: # - ALL @@ -28,7 +48,8 @@ service: ingress: enabled: false className: "" - annotations: {} + annotations: + {} # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true" hosts: @@ -41,7 +62,8 @@ ingress: # hosts: # - chart-example.local -resources: {} +resources: + {} # We usually recommend not to specify default resources and to leave this as a conscious # choice for the user. This also increases chances charts run on environments with little # resources, such as Minikube. If you do want to specify resources, uncomment the following @@ -53,18 +75,13 @@ resources: {} # cpu: 100m # memory: 128Mi -startupProbe: - httpGet: - path: /actuator/health - port: http - initialDelaySeconds: 60 livenessProbe: httpGet: - path: /actuator/health/liveness + path: / port: http readinessProbe: httpGet: - path: /actuator/health/readiness + path: / port: http autoscaling: @@ -87,13 +104,8 @@ volumeMounts: [] # mountPath: "/etc/foo" # readOnly: true -# Additional env on the output Deployment definition. -env: [] - nodeSelector: {} tolerations: [] affinity: {} - -applicationYML: diff --git a/charts/sps-sample/ci/test-values.yaml b/charts/sps-sample/ci/test-values.yaml deleted file mode 100644 index ed35d81..0000000 --- a/charts/sps-sample/ci/test-values.yaml +++ /dev/null @@ -1,5 +0,0 @@ -applicationYML: - SSO_ISSUER_URL: https://sso.muenchen.de/auth/realms/muenchen.de - spring: - profiles: - active: "no-security" From 7362eff57c6cac650d79f354b37d15f6fd42eadf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20M=C3=BCller?= <11695964+hupling@users.noreply.github.com> Date: Thu, 12 Sep 2024 15:56:50 +0200 Subject: [PATCH 17/17] erste version deployt --- charts/sps-sample/charts/backend/Chart.yaml | 19 +++ .../charts/backend/templates/NOTES.txt | 22 +++ .../charts/backend/templates/_helpers.tpl | 62 +++++++ .../charts/backend/templates/configmap.yaml | 11 -- .../charts/backend/templates/deployment.yaml | 30 ++-- .../charts/backend/templates/hpa.yaml | 6 +- .../charts/backend/templates/ingress.yaml | 61 +++++++ .../charts/backend/templates/service.yaml | 6 +- .../backend/templates/serviceaccount.yaml | 13 ++ .../templates/tests/test-connection.yaml | 6 +- charts/sps-sample/charts/backend/values.yaml | 38 +++-- .../templates/tests/test-connection.yaml | 2 +- charts/sps-sample/values.yaml | 158 ++++++------------ 13 files changed, 283 insertions(+), 151 deletions(-) create mode 100644 charts/sps-sample/charts/backend/templates/NOTES.txt create mode 100644 charts/sps-sample/charts/backend/templates/_helpers.tpl delete mode 100644 charts/sps-sample/charts/backend/templates/configmap.yaml create mode 100644 charts/sps-sample/charts/backend/templates/ingress.yaml create mode 100644 charts/sps-sample/charts/backend/templates/serviceaccount.yaml diff --git a/charts/sps-sample/charts/backend/Chart.yaml b/charts/sps-sample/charts/backend/Chart.yaml index e7440ed..ff8c40d 100644 --- a/charts/sps-sample/charts/backend/Chart.yaml +++ b/charts/sps-sample/charts/backend/Chart.yaml @@ -1,5 +1,24 @@ apiVersion: v2 name: backend description: Backend sub-chart of sps-sample. + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) version: 1.0.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.0.0" diff --git a/charts/sps-sample/charts/backend/templates/NOTES.txt b/charts/sps-sample/charts/backend/templates/NOTES.txt new file mode 100644 index 0000000..f14419b --- /dev/null +++ b/charts/sps-sample/charts/backend/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "backend.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch its status by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "backend.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "backend.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "backend.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/charts/sps-sample/charts/backend/templates/_helpers.tpl b/charts/sps-sample/charts/backend/templates/_helpers.tpl new file mode 100644 index 0000000..471310f --- /dev/null +++ b/charts/sps-sample/charts/backend/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "backend.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "backend.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "backend.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "backend.labels" -}} +helm.sh/chart: {{ include "backend.chart" . }} +{{ include "backend.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "backend.selectorLabels" -}} +app.kubernetes.io/name: {{ include "backend.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "backend.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "backend.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/charts/sps-sample/charts/backend/templates/configmap.yaml b/charts/sps-sample/charts/backend/templates/configmap.yaml deleted file mode 100644 index a1e9c89..0000000 --- a/charts/sps-sample/charts/backend/templates/configmap.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Chart.Name }} - labels: - app: {{ .Chart.Name }} -data: - {{- with .Values.applicationYML }} - application.yml: | - {{- toYaml . | nindent 4 }} - {{- end }} diff --git a/charts/sps-sample/charts/backend/templates/deployment.yaml b/charts/sps-sample/charts/backend/templates/deployment.yaml index e2c2b8c..fa50b24 100644 --- a/charts/sps-sample/charts/backend/templates/deployment.yaml +++ b/charts/sps-sample/charts/backend/templates/deployment.yaml @@ -1,38 +1,40 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: {{ .Chart.Name }} + name: {{ include "backend.fullname" . }} labels: - app: {{ .Chart.Name }} + {{- include "backend.labels" . | nindent 4 }} spec: {{- if not .Values.autoscaling.enabled }} replicas: {{ .Values.replicaCount }} {{- end }} selector: matchLabels: - deployment + {{- include "backend.selectorLabels" . | nindent 6 }} template: metadata: + {{- with .Values.podAnnotations }} annotations: - {{- with .Values.podAnnotations }} {{- toYaml . | nindent 8 }} - {{- end }} - checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} + {{- end }} labels: - app: {{ .Chart.Name }} + {{- include "backend.labels" . | nindent 8 }} + {{- with .Values.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} spec: {{- with .Values.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} - serviceAccountName: {{ .Values.serviceAccount.name }} + serviceAccountName: {{ include "backend.serviceAccountName" . }} securityContext: {{- toYaml .Values.podSecurityContext | nindent 8 }} containers: - name: {{ .Chart.Name }} securityContext: {{- toYaml .Values.securityContext | nindent 12 }} - image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.image.pullPolicy }} ports: - name: http @@ -48,18 +50,12 @@ spec: {{- toYaml .Values.resources | nindent 12 }} env: {{- toYaml .Values.env | nindent 12 }} - volumeMounts: - - name: config - mountPath: /deployments/config {{- with .Values.volumeMounts }} + volumeMounts: {{- toYaml . | nindent 12 }} {{- end }} - volumes: - - name: config - configMap: - name: {{ .Chart.Name }} - defaultMode: 420 {{- with .Values.volumes }} + volumes: {{- toYaml . | nindent 8 }} {{- end }} {{- with .Values.nodeSelector }} diff --git a/charts/sps-sample/charts/backend/templates/hpa.yaml b/charts/sps-sample/charts/backend/templates/hpa.yaml index 024d8ca..c32d92b 100644 --- a/charts/sps-sample/charts/backend/templates/hpa.yaml +++ b/charts/sps-sample/charts/backend/templates/hpa.yaml @@ -2,14 +2,14 @@ apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: - name: {{ .Chart.Name }} + name: {{ include "backend.fullname" . }} labels: - app: {{ .Chart.Name }} + {{- include "backend.labels" . | nindent 4 }} spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment - name: {{ .Chart.Name }} + name: {{ include "backend.fullname" . }} minReplicas: {{ .Values.autoscaling.minReplicas }} maxReplicas: {{ .Values.autoscaling.maxReplicas }} metrics: diff --git a/charts/sps-sample/charts/backend/templates/ingress.yaml b/charts/sps-sample/charts/backend/templates/ingress.yaml new file mode 100644 index 0000000..c2a08c2 --- /dev/null +++ b/charts/sps-sample/charts/backend/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "backend.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "backend.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/sps-sample/charts/backend/templates/service.yaml b/charts/sps-sample/charts/backend/templates/service.yaml index 1fd3ca5..4fb4186 100644 --- a/charts/sps-sample/charts/backend/templates/service.yaml +++ b/charts/sps-sample/charts/backend/templates/service.yaml @@ -1,9 +1,9 @@ apiVersion: v1 kind: Service metadata: - name: {{ .Chart.Name }} + name: {{ include "backend.fullname" . }} labels: - app: {{ .Chart.Name }} + {{- include "backend.labels" . | nindent 4 }} spec: type: {{ .Values.service.type }} ports: @@ -12,4 +12,4 @@ spec: protocol: TCP name: http selector: - deployment: {{ .Chart.Name }} + {{- include "backend.selectorLabels" . | nindent 4 }} diff --git a/charts/sps-sample/charts/backend/templates/serviceaccount.yaml b/charts/sps-sample/charts/backend/templates/serviceaccount.yaml new file mode 100644 index 0000000..0977e16 --- /dev/null +++ b/charts/sps-sample/charts/backend/templates/serviceaccount.yaml @@ -0,0 +1,13 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "backend.serviceAccountName" . }} + labels: + {{- include "backend.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.serviceAccount.automount }} +{{- end }} diff --git a/charts/sps-sample/charts/backend/templates/tests/test-connection.yaml b/charts/sps-sample/charts/backend/templates/tests/test-connection.yaml index deb106a..4d38010 100644 --- a/charts/sps-sample/charts/backend/templates/tests/test-connection.yaml +++ b/charts/sps-sample/charts/backend/templates/tests/test-connection.yaml @@ -1,9 +1,9 @@ apiVersion: v1 kind: Pod metadata: - name: "{{ .Chart.Name . }}-test-connection" + name: "{{ include "backend.fullname" . }}-test-connection" labels: - app: {{ .Chart.Name }} + {{- include "backend.labels" . | nindent 4 }} annotations: "helm.sh/hook": test spec: @@ -11,5 +11,5 @@ spec: - name: wget image: busybox command: ['wget'] - args: ['{{ .Chart.Name }}:{{ .Values.service.port }}/actuator/info'] + args: ['{{ include "backend.fullname" . }}:{{ .Values.service.port }}/actuator/info'] restartPolicy: Never diff --git a/charts/sps-sample/charts/backend/values.yaml b/charts/sps-sample/charts/backend/values.yaml index 44908ff..f42eaa9 100644 --- a/charts/sps-sample/charts/backend/values.yaml +++ b/charts/sps-sample/charts/backend/values.yaml @@ -1,19 +1,39 @@ +# Default values for backend. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + replicaCount: 1 image: - registry: ghcr.io - repository: it-at-m/refarch/refarch-backend + repository: ghcr.io/it-at-m/refarch/refarch-backend pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "latest" imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" podAnnotations: {} podLabels: {} -podSecurityContext: {} +podSecurityContext: + {} # fsGroup: 2000 -securityContext: {} +securityContext: + {} # capabilities: # drop: # - ALL @@ -28,7 +48,8 @@ service: ingress: enabled: false className: "" - annotations: {} + annotations: + {} # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true" hosts: @@ -41,7 +62,8 @@ ingress: # hosts: # - chart-example.local -resources: {} +resources: + {} # We usually recommend not to specify default resources and to leave this as a conscious # choice for the user. This also increases chances charts run on environments with little # resources, such as Minikube. If you do want to specify resources, uncomment the following @@ -86,14 +108,10 @@ volumeMounts: [] # - name: foo # mountPath: "/etc/foo" # readOnly: true - # Additional env on the output Deployment definition. env: [] - nodeSelector: {} tolerations: [] affinity: {} - -applicationYML: diff --git a/charts/sps-sample/charts/frontend/templates/tests/test-connection.yaml b/charts/sps-sample/charts/frontend/templates/tests/test-connection.yaml index 372ac5e..ef3cc10 100644 --- a/charts/sps-sample/charts/frontend/templates/tests/test-connection.yaml +++ b/charts/sps-sample/charts/frontend/templates/tests/test-connection.yaml @@ -11,5 +11,5 @@ spec: - name: wget image: busybox command: ['wget'] - args: ['{{ include "frontend.fullname" . }}:{{ .Values.service.port }}'] + args: ['{{ include "frontend.fullname" . }}:{{ .Values.service.port }}/actuator/health'] restartPolicy: Never diff --git a/charts/sps-sample/values.yaml b/charts/sps-sample/values.yaml index b10d46e..b95dcec 100644 --- a/charts/sps-sample/values.yaml +++ b/charts/sps-sample/values.yaml @@ -1,103 +1,55 @@ -replicaCount: 1 - -imagePullSecrets: [] - -serviceAccount: - # Specifies whether a service account should be created - create: false - # Automatically mount a ServiceAccount's API credentials? - automount: true - # Annotations to add to the service account - annotations: {} - name: "" - -podAnnotations: {} -podLabels: {} - -podSecurityContext: {} - # fsGroup: 2000 - -securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 - -service: - type: ClusterIP - port: 8080 - -ingress: - enabled: false - className: "" - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - hosts: - - host: chart-example.local - paths: - - path: / - pathType: ImplementationSpecific - tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - -resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -startupProbe: - httpGet: - path: /actuator/health - port: http - initialDelaySeconds: 60 -livenessProbe: - httpGet: - path: /actuator/health/liveness - port: http -readinessProbe: - httpGet: - path: /actuator/health/readiness - port: http - -autoscaling: - enabled: false - minReplicas: 1 - maxReplicas: 100 - targetCPUUtilizationPercentage: 80 - # targetMemoryUtilizationPercentage: 80 - -# Additional volumes on the output Deployment definition. -volumes: [] -# - name: foo -# secret: -# secretName: mysecret -# optional: false - -# Additional volumeMounts on the output Deployment definition. -volumeMounts: [] -# - name: foo -# mountPath: "/etc/foo" -# readOnly: true - -# Additional env on the output Deployment definition. -env: [] - -nodeSelector: {} - -tolerations: [] - -affinity: {} - -applicationYML: +refarch-gateway: + env: + - name: SPRING_PROFILES_ACTIVE + value: no-security + - name: SSO_ISSUER_URL + value: https://sso.muenchen.de/auth/realms/muenchen.de + + - name: SPRING_CLOUD_GATEWAY_ROUTES_0_ID + value: backend + - name: SPRING_CLOUD_GATEWAY_ROUTES_0_URI + value: "http://a-backend:8080/" + - name: SPRING_CLOUD_GATEWAY_ROUTES_0_PREDICATES_0 + value: Path=/api/beispielprojekt-backend-service/** + - name: SPRING_CLOUD_GATEWAY_ROUTES_0_FILTERS_0 + value: RewritePath=/api/beispielprojekt-backend-service/(?.*), /$\{urlsegments} + - name: SPRING_CLOUD_GATEWAY_ROUTES_0_FILTERS_1 + value: RemoveResponseHeader=WWW-Authenticate + + - name: SPRING_CLOUD_GATEWAY_ROUTES_1_ID + value: frontend + - name: SPRING_CLOUD_GATEWAY_ROUTES_1_URI + value: "http://a-frontend:8080/" + - name: SPRING_CLOUD_GATEWAY_ROUTES_1_PREDICATES_0 + value: Path=/** + - name: SPRING_CLOUD_GATEWAY_ROUTES_1_FILTERS_0 + value: RewritePath=/(?.*), /$\{urlsegments} + - name: SPRING_CLOUD_GATEWAY_ROUTES_1_FILTERS_1 + value: RemoveResponseHeader=WWW-Authenticate + + ingress: + enabled: true + annotations: + route.openshift.io/termination: "edge" + className: openshift-default + hosts: + - host: sps-frontend-dev-spstest-test.apps.capk.muenchen.de + paths: + - path: / + pathType: "ImplementationSpecific" + backend: + serviceName: '{{ include "refarch-gateway.fullname" . }}' + servicePort: 8080 + +frontend: + image: + repository: ghcr.io/it-at-m/sps/sps-frontend + tag: "latest" + +backend: + image: + repository: ghcr.io/it-at-m/sps/sps-backend + tag: "latest" + env: + - name: SPRING_PROFILES_ACTIVE + value: no-security