add ptp-chat configuration
All checks were successful
Mirror to GitHub / mirror (push) Successful in 7s

This commit is contained in:
jona.klaess
2026-06-06 15:21:00 +02:00
parent 67c0624079
commit 78cf3c8c8d
11 changed files with 392 additions and 0 deletions

4
ptp-chat/.env.example Normal file
View File

@@ -0,0 +1,4 @@
SPRING_DATASOURCE_USERNAME=
SPRING_DATASOURCE_PASSWORD=
KEYCLOAK_ADMIN_USER=
KEYCLOAK_ADMIN_PW=

View File

@@ -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

View File

@@ -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

View File

@@ -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

62
ptp-chat/ptp-chat-db.yaml Normal file
View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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