From 78cf3c8c8d7e6fa61414a376123c5857210fa018 Mon Sep 17 00:00:00 2001 From: "jona.klaess" Date: Sat, 6 Jun 2026 15:21:00 +0200 Subject: [PATCH] add ptp-chat configuration --- .gitignore | 2 + ptp-chat/.env.example | 4 ++ ptp-chat/kustomization.yaml | 35 +++++++++++ ptp-chat/ptp-chat-application.yaml | 23 +++++++ ptp-chat/ptp-chat-backend.yaml | 45 ++++++++++++++ ptp-chat/ptp-chat-db.yaml | 62 +++++++++++++++++++ ptp-chat/ptp-chat-frontend.yaml | 36 +++++++++++ ptp-chat/ptp-chat-hpa.yaml | 68 ++++++++++++++++++++ ptp-chat/ptp-chat-istio.yaml | 75 +++++++++++++++++++++++ ptp-chat/ptp-chat-pull-sealed-secret.yaml | 20 ++++++ ptp-chat/ptp-chat-sealed-secret.yaml | 22 +++++++ 11 files changed, 392 insertions(+) create mode 100644 .gitignore create mode 100644 ptp-chat/.env.example create mode 100644 ptp-chat/kustomization.yaml create mode 100644 ptp-chat/ptp-chat-application.yaml create mode 100644 ptp-chat/ptp-chat-backend.yaml create mode 100644 ptp-chat/ptp-chat-db.yaml create mode 100644 ptp-chat/ptp-chat-frontend.yaml create mode 100644 ptp-chat/ptp-chat-hpa.yaml create mode 100644 ptp-chat/ptp-chat-istio.yaml create mode 100644 ptp-chat/ptp-chat-pull-sealed-secret.yaml create mode 100644 ptp-chat/ptp-chat-sealed-secret.yaml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8243e41 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.env +*.unsealed.* \ No newline at end of file diff --git a/ptp-chat/.env.example b/ptp-chat/.env.example new file mode 100644 index 0000000..af77c1d --- /dev/null +++ b/ptp-chat/.env.example @@ -0,0 +1,4 @@ +SPRING_DATASOURCE_USERNAME= +SPRING_DATASOURCE_PASSWORD= +KEYCLOAK_ADMIN_USER= +KEYCLOAK_ADMIN_PW= \ No newline at end of file diff --git a/ptp-chat/kustomization.yaml b/ptp-chat/kustomization.yaml new file mode 100644 index 0000000..39f3ea1 --- /dev/null +++ b/ptp-chat/kustomization.yaml @@ -0,0 +1,35 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ptp-chat-backend.yaml + - ptp-chat-frontend.yaml + - ptp-chat-db.yaml + - ptp-chat-hpa.yaml + - ptp-chat-istio.yaml + - ptp-chat-sealed-secret.yaml + - ptp-chat-pull-sealed-secret.yaml + +patches: + - patch: |- + apiVersion: v1 + kind: Secret + metadata: + name: ptp-chat-secret + annotations: + argocd.argoproj.io/compare-options: IgnoreExtraneous + sealedsecrets.bitnami.com/managed: "true" + - patch: |- + apiVersion: v1 + kind: Secret + metadata: + name: pull-secret + annotations: + argocd.argoproj.io/compare-options: IgnoreExtraneous + sealedsecrets.bitnami.com/managed: "true" + +secretGenerator: + - name: ptp-chat-secret + type: Opaque + - name: pull-secret + type: kubernetes.io/dockerconfigjson diff --git a/ptp-chat/ptp-chat-application.yaml b/ptp-chat/ptp-chat-application.yaml new file mode 100644 index 0000000..32ff143 --- /dev/null +++ b/ptp-chat/ptp-chat-application.yaml @@ -0,0 +1,23 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: ptp-chat + namespace: ptp-chat +spec: + project: default + source: + repoURL: https://gitea.controller.bittehackmichnicht.de/argocd/kubernetes-config.git + targetRevision: main + path: ptp-chat + destination: + server: https://kubernetes.default.svc + namespace: ptp-chat + syncPolicy: + automated: + prune: true + selfHeal: true + enabled: true + ignoreDifferences: + - kind: Secret + jsonPointers: + - /data diff --git a/ptp-chat/ptp-chat-backend.yaml b/ptp-chat/ptp-chat-backend.yaml new file mode 100644 index 0000000..214092a --- /dev/null +++ b/ptp-chat/ptp-chat-backend.yaml @@ -0,0 +1,45 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ptp-chat-backend + namespace: ptp-chat + labels: + app: ptp-chat-backend +spec: + replicas: 1 + selector: + matchLabels: + app: ptp-chat-backend + template: + metadata: + labels: + app: ptp-chat-backend + spec: + containers: + - name: ptp-chat-backend + image: gitea.controller.bittehackmichnicht.de/apps/ptpchat-frontend/ptp-chat-backend:latest + imagePullPolicy: Always + envFrom: + - secretRef: + name: ptp-chat-secret + env: + - name: SPRING_DATASOURCE_URL + value: "jdbc:postgresql://ptp-chat-db.ptp-chat.svc.cluster.local:5432/praxistransfer" + - name: KEYCLOAK_ADMIN_URL + value: "https://keycloak.controller.bittehackmichnicht.de/" + ports: + - name: http + containerPort: 8081 + resources: + requests: + memory: 0.5Gi + cpu: 1 + limits: + memory: 1Gi + cpu: 2 + readinessProbe: + httpGet: + path: /actuator/health + port: 8081 + imagePullSecrets: + - name: pull-secret \ No newline at end of file diff --git a/ptp-chat/ptp-chat-db.yaml b/ptp-chat/ptp-chat-db.yaml new file mode 100644 index 0000000..376ed4c --- /dev/null +++ b/ptp-chat/ptp-chat-db.yaml @@ -0,0 +1,62 @@ +--- +# Source: portainer/templates/pvc.yaml +kind: "PersistentVolumeClaim" +apiVersion: "v1" +metadata: + name: ptp-chat-pvc + namespace: ptp-chat +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 2Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ptp-chat-db + namespace: ptp-chat + labels: + app: ptp-chat-db +spec: + replicas: 1 + selector: + matchLabels: + app: ptp-chat-db + template: + metadata: + labels: + app: ptp-chat-db + spec: + containers: + - name: ptp-chat-db + image: postgres:latest + envFrom: + - secretRef: + name: ptp-chat-secret + env: + - name: POSTGRES_USER + value: "${SPRING_DATASOURCE_USERNAME}" + - name: POSTGRES_PASSWORD + value: "${SPRING_DATASOURCE_PASSWORD}" + - name: POSTGRES_DB + value: "praxistransfer" + ports: + - name: http + containerPort: 5432 + resources: + requests: + memory: 0.5Gi + cpu: 1 + limits: + memory: 1Gi + cpu: 2 + volumeMounts: + - name: ptp-chat-pvc + mountPath: /var/lib/postgresql/data + readOnly: false + volumes: + - name: ptp-chat-pvc + persistentVolumeClaim: + claimName: ptp-chat-pvc diff --git a/ptp-chat/ptp-chat-frontend.yaml b/ptp-chat/ptp-chat-frontend.yaml new file mode 100644 index 0000000..a095c8f --- /dev/null +++ b/ptp-chat/ptp-chat-frontend.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ptp-chat-frontend + namespace: ptp-chat + labels: + app: ptp-chat-frontend +spec: + replicas: 1 + selector: + matchLabels: + app: ptp-chat-frontend + template: + metadata: + labels: + app: ptp-chat-frontend + spec: + containers: + - name: ptp-chat-frontend + image: gitea.controller.bittehackmichnicht.de/apps/ptpchat-frontend/ptp-chat-frontend:latest + imagePullPolicy: Always + ports: + - name: http + containerPort: 80 + resources: + requests: + memory: 0.5Gi + cpu: 1 + limits: + memory: 1Gi + cpu: 2 + readinessProbe: + httpGet: + port: 80 + imagePullSecrets: + - name: pull-secret \ No newline at end of file diff --git a/ptp-chat/ptp-chat-hpa.yaml b/ptp-chat/ptp-chat-hpa.yaml new file mode 100644 index 0000000..2156ac7 --- /dev/null +++ b/ptp-chat/ptp-chat-hpa.yaml @@ -0,0 +1,68 @@ +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: ptp-chat-frontend-hpa +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: ptp-chat-frontend + minReplicas: 1 + maxReplicas: 5 + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: 70 +--- +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: ptp-chat-backend-hpa +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: ptp-chat-backend + minReplicas: 2 + maxReplicas: 5 + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: 60 + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: 70 +--- +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: ptp-chat-db-hpa +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: ptp-chat-db + minReplicas: 1 + maxReplicas: 5 + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: 70 + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: 70 \ No newline at end of file diff --git a/ptp-chat/ptp-chat-istio.yaml b/ptp-chat/ptp-chat-istio.yaml new file mode 100644 index 0000000..4e629d9 --- /dev/null +++ b/ptp-chat/ptp-chat-istio.yaml @@ -0,0 +1,75 @@ +apiVersion: v1 +kind: Service +metadata: + name: ptp-chat-backend + namespace: ptp-chat + labels: + app: ptp-chat-backend +spec: + ports: + - name: http + port: 80 + targetPort: 8081 + selector: + app: ptp-chat-backend + type: NodePort +--- +apiVersion: v1 +kind: Service +metadata: + name: ptp-chat-frontend + namespace: ptp-chat + labels: + app: ptp-chat-frontend +spec: + ports: + - name: http + port: 80 + targetPort: 80 + selector: + app: ptp-chat-frontend + type: NodePort +--- +apiVersion: v1 +kind: Service +metadata: + name: ptp-chat-db + namespace: ptp-chat + labels: + app: ptp-chat-db +spec: + ports: + - name: http + port: 5432 + targetPort: 5432 + selector: + app: ptp-chat-db + type: NodePort +--- +apiVersion: networking.istio.io/v1beta1 +kind: VirtualService +metadata: + name: ptp-chat-vs + namespace: ptp-chat +spec: + hosts: + - ptpchat.k8s.bittehackmichnicht.de + http: + - match: + - uri: + prefix: / + route: + - destination: + host: ptp-chat-frontend.ptp-chat.svc.cluster.local + port: + number: 80 + - match: + - uri: + prefix: /api + rewrite: + uri: / + route: + - destination: + host: ptp-chat-backend.ptp-chat.svc.cluster.local + port: + number: 80 diff --git a/ptp-chat/ptp-chat-pull-sealed-secret.yaml b/ptp-chat/ptp-chat-pull-sealed-secret.yaml new file mode 100644 index 0000000..2a2e774 --- /dev/null +++ b/ptp-chat/ptp-chat-pull-sealed-secret.yaml @@ -0,0 +1,20 @@ +--- +apiVersion: bitnami.com/v1alpha1 +kind: SealedSecret +metadata: + annotations: + sealedsecrets.bitnami.com/namespace-wide: "true" + argocd.argoproj.io/sync-wave: "-1" + name: pull-secret + namespace: ptp-chat +spec: + encryptedData: + .dockerconfigjson: AgBVpTBqwWCXdxkHjXliJUwS1YJmizRe+RUAdoHdaNCvKjqsJqg9r0NRLeLjfPWDwNGNv91A2OF6nK/dSSBxphCSNCXy9ZUE1MwBTnk2lKGf3qMJlCQKCy5opuBOocI+Jw8gJz85klnZ36fRWZABWrwg0Ou3hiVHyrwSrW/O7jLtMGy/rmWAB69Zf6WzCkQrMBhzZ/fEqeD7eAhLi8JOyNtSFqVXnYT4musa/HSlQpKJW8AUetuIEmrzFa6yQxJ/sqVi3Y6I2M069QOhMunE1A8mJuWB9B6FWZ9nYtVXEGWeV/uMeYQKVDmoaWa9rf+l4rRNsPP98HFgLQ9G8wJ58wuvgntSm0x168RWV1til/lGW4YKqVQi3JzBch1K5lBMYPfxbq0ed5JLUng4wMMu6iBRT2Lvv3ha4PtzjsRcQzrjdTNFZzUIS50B/pLLw4issPk8Zqum1j2KnQOAqdzvarfQxBaKjz0pYAZdXICe8ZBCyWPYflRQQZ9WUNLt9U/9NM6iZziqo0W07zv8I1eTVLHaFdYm7RJJJQ/KbCIjtg5uVXO3gGa+pKSKbkerx+U89K98tde/5wl84gnG7lf8h4rNzb8I/+rLit8tSMeWqS9Mo0iToh07mJY4lch8zX9R0/LttqpEGCGPVrNvBQyMhEp26iwfhFEKnaFOMGDfPcElCEpZqpr/PDmG4pVi7IrVZ2WjlEd3jvZSgYq0WLNvDXPbiATn1GWmM4rLjCMaL+IRCURgKpsoJH//ujNv/JiFALuLgVIP49JjuO7xo3unxZrcQj4KRjc+NN89ARHOyt+sgtm5lizCGKTpbHsfhKwgy4Nj+eFfIc8f33Imw82a5J+3P4aBEiosdcol9x6F4/775AYusl4UDg1lM1rGp9PEFgKQz4akC4VXr4fb5C32wYWtevxADOSTSIhRURMnksRo5iU0tTGyu28bsYdtYfJraE0yzzJk + template: + metadata: + annotations: + sealedsecrets.bitnami.com/namespace-wide: "true" + sealedsecrets.bitnami.com/managed: "true" + name: pull-secret + namespace: ptp-chat + type: kubernetes.io/dockerconfigjson \ No newline at end of file diff --git a/ptp-chat/ptp-chat-sealed-secret.yaml b/ptp-chat/ptp-chat-sealed-secret.yaml new file mode 100644 index 0000000..79be21e --- /dev/null +++ b/ptp-chat/ptp-chat-sealed-secret.yaml @@ -0,0 +1,22 @@ +--- +apiVersion: bitnami.com/v1alpha1 +kind: SealedSecret +metadata: + annotations: + sealedsecrets.bitnami.com/namespace-wide: "true" + argocd.argoproj.io/sync-wave: "-1" + name: ptp-chat-secret + namespace: ptp-chat +spec: + encryptedData: + KEYCLOAK_ADMIN_PW: AgAVulRXEPrXs2Ik6kTM4IL5g0qyYptwhTuISC7Wu3xfOOKb/Xeu1IUTpumZfFm2sSB/sHy7c51illhZxatk2nR1uPKcEcRaaYspj1vEHVyNhNvDJSbeI/a5+VzAVT/yxK3ahibeoQAoJsBY343sZnG4uQCHWuDWRpsXSbXfSin+oPRh64yzR/iD3JltXuEbDLQXLWB/ACVqPBBH/lY0nv3+21Y6lm6SqjeWYN1zy1BBxmNQXiw/FHzWmsxeO3hN9vl2+hopSmU3hpWIycc92ePme3E8dhjof5SMBUChhBLiRr6A77ppKeFFUgwIt4190Z5nF175ryNVA1z9H82gqkr3Vfp8qqBsIYPw8tWpXioM6L5IgrWCAJcxtMbhG/ZJGEo7NhxXeyzC6hYpfghNoI3Md7rFyVNLk2xBV0TghVqL5yDhuxfxMLNPm0StH67HH+Ti/XUZKIfuYhmfJKTsttXzNpxWjGeTHVCGqscLgChY9CQrkvtNVSM/87lhllUSD2Vp61Fx6Z+Pga91Gl8pe/u9w8GVW+uuw8SMscVrBsNc8A3kJ1sd3tVvQQp96Ky8eYA3SjWRGfqENVZYvfxDnFdT7DtXPhrwRlHYcQYfx6HrebuCCFkKUcJ8am1EM+toewuDekf77ZfullBUnZHw6OF1yjaECJQ405S/owzbgV+WWVj+oxSn03EW4FTGZzavK5BX7+InsWqclU0/fiN02u84n7218A== + KEYCLOAK_ADMIN_USER: AgB7QpnrTyPGHnc8NGNCG0AFw3HH6n6qcwXWuwSyfAy3WrW0F6hhjoZ5tiNQPL+wjyMgDXl+IQL1o0EUHMEH/apYhE91vDOlbtxCKzhs2Qy5TjkMSn+bDTPgTpA/Qcx3d0LPBGBWP5U+DLpNuSn9I1Q+rffeNl7T5EfCeCiYB7YOtarL7c8HvDXFKIIoi2M6+xop4o5r5wkSMxw6KXRVap1F/I46VM+nMpwuMcFtIAYflBAfagDzR2oH/XDgJgaREczT6dZvEgVYXlcLArn5wEDkoPJJ1s3DYvl3+YKEm6vZZYGBmMAUZ9q/Gvq2I6VtDWqdO7Rbf75sB5lonWFqtLpzcqOOr7OmHcfuw5efSMZFy5HTuyoPaNHP1yjM7DirNXi6OIsUNbpLlTXnIW2vt6A9PStJvWGhnmMfFJFTUpXmLHfkSWVLy0Qv49TRIgzsCl1b19VGJ5UAAVNa01KhmGnbYhxqIUNKsgebF89+S5sQMqg67v2fa/KREo8Z5bdHIALSpVG3/b+Az6H6rNe+ctfZghqXX3cfAwzkNYmdgu5D7dk70R/ULyi3J661RH+kh3PZ6CxFgtusfCWJROiKTzon+adeo5BJlgvidjyfUolQYsWomXB9rpqABCjqkGXVkXbgi5g1W22BgdygWGluD0zW4Qsoaxzj68lUB3r2H+R0iyOfmeAV6HnDc4VzSIDpXdzGCo6WfQChMA== + SPRING_DATASOURCE_PASSWORD: AgC1aLM8AnmBn/t9+PrJ3CMkHZbVNT5zNuH+85O7qt3KdD2AxgIBo/6yHB4PUX9nwLneWrhOT7IA9+tGq70flIYciDSPyFoCfnxR2ggs7ozWEuo/V1FLKY0QtMkpCXgyPrdxstFNivkGv8EUzKYBND4E081k0pAPTWrPXW5DqMlEUwMfkcW/hfataRfeEKwasdorp23X+V0L/jkMeLSKlMsBljuBU8sCCjAUIes+Wk8nFTN41vJpf3x1jV1o+XGgN+ZrCndvY6iTEZGQ1iKxwh0VwrJ0x30boAfHTW/sGkGrE0ypoV3aJJpVh3OKvpUYFHNghgDU+fgJrt6ORXPGDae4gaLZsCWEG+Us+H/SC0817TbtV7NvNcT9sum+hS6tuoSzHY0xXg85mcUkCu/RWVMhvylLYdS6sQmcTuaMfvyNCYDUg8h1kjBZDq7989vrQOToC7LF4tN18rAJJtySOpGL9rHTuJun7NihsWJ2mLdAJSWyksibs5MkZi7QjYVM0ZLMlQ8lpxlTxkGIbcLqFzrEIxc77c18EIrC+rbIxTw5ehte5bBT8pRGNgePuIBVplsSxGYAQFwKSSLVtaN0Ne5S06XXueMaQ0VEsMpMZIDYw9hxZsGBv+0ol1d3exRmqzAoiKBdKz7CwumywvmzPkrdw2YXHisPAoqJhsogmKgRI1UU8v1Z/cQr34sJmO8zBnP89mMRzbs= + SPRING_DATASOURCE_USERNAME: AgCSVytiAHZTwlaOCRqGeIP6uvdgtDgDpG4sxPpEjtV3mES6mHHb9d9sz8frOqnnkyyE5TJUkgi5iQIn1Q8Ig9xvi/OIM1va56Uk+6u0ogMCB7PDzYZE6+b/MynFuebgnDBI1f5D3Bk51XVwDHPsUe+LIEEaHwgMgZ1/Goz+W1kjpgtZ43CyndW+9MyrxOSGm9ASTZbRlAU9jaHRkzYblC0gEqESiYjfzNMla+vLjhsQxeF+jUpDkoyCEq7uFDWzq5960RgmIlabRcPox7I9Ph4G1fSGhP//HsieAxCGwtnOTY4OsUBRa+y/ltbXnUqMrYY0frXIDy+Ql+ay3sjes/pBfa+9eUkHL6BoI/mTCa71d9pJgnnimXme8qPBhcyoTv7+EAZ+mMCgvnIHimZqmNyVs+i0nJ29lKE0oXSOdja9gK4r+jDf+GSn4gGyeLPnrh3SivYI8WPVRiSelpMVo064WCWAYf1Tn0Go04PiJLjF6HF+aWNc4SeQNRVAUO7OV84QuXlsoarLnO7L9xcKnYm5zbI6gtX2Y+53PTvBe5fKCBCbPIxgO2ln+d7Awts5LwtYwZ0xiKNKoXOxkTc12ZF6Dmyj38HQB5bOd4T4OewUruL6NbQtzyarKlfRD+wdg6quZqRxhiAyS0K8ws8ngebflO9Gft+pzBdkHJHc6PPzII7PL6rqYv6E/9AQrK2L15Gf1vqfvGVeYg== + template: + metadata: + annotations: + sealedsecrets.bitnami.com/namespace-wide: "true" + sealedsecrets.bitnami.com/managed: "true" + name: ptp-chat-secret + namespace: ptp-chat \ No newline at end of file