mirror of
https://github.com/dat515-2025/Group-8.git
synced 2026-03-22 15:12:08 +01:00
Compare commits
5 Commits
a76138614b
...
merge/fron
| Author | SHA1 | Date | |
|---|---|---|---|
| 8c72091658 | |||
| 607c5eadd7 | |||
| 2617c640a8 | |||
| cb9ef5e461 | |||
| b0cabe027f |
5
.github/workflows/deploy-prod.yaml
vendored
5
.github/workflows/deploy-prod.yaml
vendored
@@ -85,7 +85,7 @@ jobs:
|
|||||||
BANKID_CLIENT_SECRET: ${{ secrets.BANKID_CLIENT_SECRET }}
|
BANKID_CLIENT_SECRET: ${{ secrets.BANKID_CLIENT_SECRET }}
|
||||||
MOJEID_CLIENT_ID: ${{ secrets.MOJEID_CLIENT_ID }}
|
MOJEID_CLIENT_ID: ${{ secrets.MOJEID_CLIENT_ID }}
|
||||||
MOJEID_CLIENT_SECRET: ${{ secrets.MOJEID_CLIENT_SECRET }}
|
MOJEID_CLIENT_SECRET: ${{ secrets.MOJEID_CLIENT_SECRET }}
|
||||||
|
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
|
||||||
run: |
|
run: |
|
||||||
helm upgrade --install myapp ./7project/charts/myapp-chart \
|
helm upgrade --install myapp ./7project/charts/myapp-chart \
|
||||||
-n prod --create-namespace \
|
-n prod --create-namespace \
|
||||||
@@ -101,4 +101,5 @@ jobs:
|
|||||||
--set-string oauth.bankid.clientId="$BANKID_CLIENT_ID" \
|
--set-string oauth.bankid.clientId="$BANKID_CLIENT_ID" \
|
||||||
--set-string oauth.bankid.clientSecret="$BANKID_CLIENT_SECRET" \
|
--set-string oauth.bankid.clientSecret="$BANKID_CLIENT_SECRET" \
|
||||||
--set-string oauth.mojeid.clientId="$MOJEID_CLIENT_ID" \
|
--set-string oauth.mojeid.clientId="$MOJEID_CLIENT_ID" \
|
||||||
--set-string oauth.mojeid.clientSecret="$MOJEID_CLIENT_SECRET"
|
--set-string oauth.mojeid.clientSecret="$MOJEID_CLIENT_SECRET" \
|
||||||
|
--set-string sentry_dsn="$SENTRY_DSN" \
|
||||||
@@ -14,6 +14,16 @@ from app.api.categories import router as categories_router
|
|||||||
from app.api.transactions import router as transactions_router
|
from app.api.transactions import router as transactions_router
|
||||||
from app.services.user_service import auth_backend, current_active_verified_user, fastapi_users, get_oauth_provider
|
from app.services.user_service import auth_backend, current_active_verified_user, fastapi_users, get_oauth_provider
|
||||||
|
|
||||||
|
|
||||||
|
from fastapi import FastAPI
|
||||||
|
import sentry_sdk
|
||||||
|
|
||||||
|
sentry_sdk.init(
|
||||||
|
dsn=os.getenv("SENTRY_DSN"),
|
||||||
|
send_default_pii=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
app = FastAPI()
|
||||||
fastApi = FastAPI()
|
fastApi = FastAPI()
|
||||||
|
|
||||||
# CORS for frontend dev server
|
# CORS for frontend dev server
|
||||||
@@ -45,7 +55,6 @@ async def log_traffic(request: Request, call_next):
|
|||||||
"request_url": str(request.url),
|
"request_url": str(request.url),
|
||||||
"request_size": request.headers.get("content-length"),
|
"request_size": request.headers.get("content-length"),
|
||||||
"request_headers": dict(request.headers),
|
"request_headers": dict(request.headers),
|
||||||
"request_body": await request.body(),
|
|
||||||
"response_status": response.status_code,
|
"response_status": response.status_code,
|
||||||
"response_size": response.headers.get("content-length"),
|
"response_size": response.headers.get("content-length"),
|
||||||
"response_headers": dict(response.headers),
|
"response_headers": dict(response.headers),
|
||||||
@@ -87,3 +96,7 @@ async def root():
|
|||||||
@fastApi.get("/authenticated-route")
|
@fastApi.get("/authenticated-route")
|
||||||
async def authenticated_route(user: User = Depends(current_active_verified_user)):
|
async def authenticated_route(user: User = Depends(current_active_verified_user)):
|
||||||
return {"message": f"Hello {user.email}!"}
|
return {"message": f"Hello {user.email}!"}
|
||||||
|
|
||||||
|
@fastApi.get("/sentry-debug")
|
||||||
|
async def trigger_error():
|
||||||
|
division_by_zero = 1 / 0
|
||||||
@@ -50,6 +50,7 @@ python-dateutil==2.9.0.post0
|
|||||||
python-dotenv==1.1.1
|
python-dotenv==1.1.1
|
||||||
python-multipart==0.0.20
|
python-multipart==0.0.20
|
||||||
PyYAML==6.0.2
|
PyYAML==6.0.2
|
||||||
|
sentry-sdk==2.42.0
|
||||||
six==1.17.0
|
six==1.17.0
|
||||||
sniffio==1.3.1
|
sniffio==1.3.1
|
||||||
SQLAlchemy==2.0.43
|
SQLAlchemy==2.0.43
|
||||||
@@ -58,6 +59,7 @@ tomli==2.2.1
|
|||||||
typing-inspection==0.4.1
|
typing-inspection==0.4.1
|
||||||
typing_extensions==4.15.0
|
typing_extensions==4.15.0
|
||||||
tzdata==2025.2
|
tzdata==2025.2
|
||||||
|
urllib3==2.5.0
|
||||||
uvicorn==0.37.0
|
uvicorn==0.37.0
|
||||||
uvloop==0.21.0
|
uvloop==0.21.0
|
||||||
vine==5.1.0
|
vine==5.1.0
|
||||||
|
|||||||
@@ -86,6 +86,11 @@ spec:
|
|||||||
value: {{ required "Set .Values.frontend_domain" .Values.frontend_domain | quote }}
|
value: {{ required "Set .Values.frontend_domain" .Values.frontend_domain | quote }}
|
||||||
- name: FRONTEND_DOMAIN_SCHEME
|
- name: FRONTEND_DOMAIN_SCHEME
|
||||||
value: {{ required "Set .Values.frontend_domain_scheme" .Values.frontend_domain_scheme | quote }}
|
value: {{ required "Set .Values.frontend_domain_scheme" .Values.frontend_domain_scheme | quote }}
|
||||||
|
- name: SENTRY_DSN
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: prod
|
||||||
|
key: SENTRY_DSN
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
httpGet:
|
httpGet:
|
||||||
path: /
|
path: /
|
||||||
|
|||||||
@@ -15,3 +15,4 @@ stringData:
|
|||||||
# RabbitMQ credentials
|
# RabbitMQ credentials
|
||||||
RABBITMQ_PASSWORD: {{ .Values.rabbitmq.password | default "" | quote }}
|
RABBITMQ_PASSWORD: {{ .Values.rabbitmq.password | default "" | quote }}
|
||||||
RABBITMQ_USERNAME: {{ .Values.rabbitmq.username | quote }}
|
RABBITMQ_USERNAME: {{ .Values.rabbitmq.username | quote }}
|
||||||
|
SENTRY_DSN: {{ .Values.sentry_dsn | quote }}
|
||||||
|
|||||||
@@ -65,3 +65,8 @@ spec:
|
|||||||
value: {{ .Values.rabbitmq.vhost | default "/" | quote }}
|
value: {{ .Values.rabbitmq.vhost | default "/" | quote }}
|
||||||
- name: MAIL_QUEUE
|
- name: MAIL_QUEUE
|
||||||
value: {{ .Values.worker.mailQueueName | default "mail_queue" | quote }}
|
value: {{ .Values.worker.mailQueueName | default "mail_queue" | quote }}
|
||||||
|
- name: SENTRY_DSN
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: prod
|
||||||
|
key: SENTRY_DSN
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ domain_scheme: ""
|
|||||||
frontend_domain: ""
|
frontend_domain: ""
|
||||||
frontend_domain_scheme: ""
|
frontend_domain_scheme: ""
|
||||||
|
|
||||||
|
sentry_dsn: ""
|
||||||
|
|
||||||
image:
|
image:
|
||||||
repository: lukastrkan/cc-app-demo
|
repository: lukastrkan/cc-app-demo
|
||||||
# You can use a tag or digest. If digest is provided, it takes precedence.
|
# You can use a tag or digest. If digest is provided, it takes precedence.
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
apiVersion: k8s.mariadb.com/v1alpha1
|
|
||||||
kind: Grant
|
|
||||||
metadata:
|
|
||||||
name: grant
|
|
||||||
spec:
|
|
||||||
mariaDbRef:
|
|
||||||
name: mariadb-repl
|
|
||||||
namespace: mariadb-operator
|
|
||||||
privileges:
|
|
||||||
- "ALL PRIVILEGES"
|
|
||||||
database: "app-demo-database"
|
|
||||||
table: "*"
|
|
||||||
username: "app-demo-user"
|
|
||||||
grantOption: true
|
|
||||||
host: "%"
|
|
||||||
# Delete the resource in the database whenever the CR gets deleted.
|
|
||||||
# Alternatively, you can specify Skip in order to omit deletion.
|
|
||||||
cleanupPolicy: Skip
|
|
||||||
requeueInterval: 10h
|
|
||||||
retryInterval: 30s
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: app-demo-database-secret
|
|
||||||
type: kubernetes.io/basic-auth
|
|
||||||
stringData:
|
|
||||||
password: "strongpassword"
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
apiVersion: k8s.mariadb.com/v1alpha1
|
|
||||||
kind: User
|
|
||||||
metadata:
|
|
||||||
name: app-demo-user
|
|
||||||
spec:
|
|
||||||
# If you want the user to be created with a different name than the resource name
|
|
||||||
# name: user-custom
|
|
||||||
mariaDbRef:
|
|
||||||
name: mariadb-repl
|
|
||||||
namespace: mariadb-operator
|
|
||||||
passwordSecretKeyRef:
|
|
||||||
name: app-demo-database-secret
|
|
||||||
key: password
|
|
||||||
maxUserConnections: 20
|
|
||||||
host: "%"
|
|
||||||
# Delete the resource in the database whenever the CR gets deleted.
|
|
||||||
# Alternatively, you can specify Skip in order to omit deletion.
|
|
||||||
cleanupPolicy: Skip
|
|
||||||
requeueInterval: 10h
|
|
||||||
retryInterval: 30s
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
apiVersion: k8s.mariadb.com/v1alpha1
|
|
||||||
kind: Database
|
|
||||||
metadata:
|
|
||||||
name: app-demo-database
|
|
||||||
spec:
|
|
||||||
mariaDbRef:
|
|
||||||
name: mariadb-repl
|
|
||||||
namespace: mariadb-operator
|
|
||||||
characterSet: utf8
|
|
||||||
collate: utf8_general_ci
|
|
||||||
# Delete the resource in the database whenever the CR gets deleted.
|
|
||||||
# Alternatively, you can specify Skip in order to omit deletion.
|
|
||||||
cleanupPolicy: Skip
|
|
||||||
requeueInterval: 10h
|
|
||||||
retryInterval: 30s
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: app-demo
|
|
||||||
spec:
|
|
||||||
replicas: 3
|
|
||||||
revisionHistoryLimit: 3
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: app-demo
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: app-demo
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- image: lukastrkan/cc-app-demo@sha256:75634b4d97282b6b8424fe17767c81adf44af5f7359c1d25883073b5629b3e05
|
|
||||||
name: app-demo
|
|
||||||
ports:
|
|
||||||
- containerPort: 8000
|
|
||||||
env:
|
|
||||||
- name: MARIADB_HOST
|
|
||||||
value: mariadb-repl.mariadb-operator.svc.cluster.local
|
|
||||||
- name: MARIADB_PORT
|
|
||||||
value: '3306'
|
|
||||||
- name: MARIADB_DB
|
|
||||||
value: app-demo-database
|
|
||||||
- name: MARIADB_USER
|
|
||||||
value: app-demo-user
|
|
||||||
- name: MARIADB_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: app-demo-database-secret
|
|
||||||
key: password
|
|
||||||
livenessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /
|
|
||||||
port: 8000
|
|
||||||
initialDelaySeconds: 10
|
|
||||||
periodSeconds: 10
|
|
||||||
failureThreshold: 3
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /
|
|
||||||
port: 8000
|
|
||||||
initialDelaySeconds: 10
|
|
||||||
periodSeconds: 10
|
|
||||||
failureThreshold: 3
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: app-demo
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: 8000
|
|
||||||
selector:
|
|
||||||
app: app-demo
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: app-demo-worker
|
|
||||||
spec:
|
|
||||||
replicas: 3
|
|
||||||
revisionHistoryLimit: 3
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: app-demo-worker
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: app-demo-worker
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- image: lukastrkan/cc-app-demo@sha256:75634b4d97282b6b8424fe17767c81adf44af5f7359c1d25883073b5629b3e05
|
|
||||||
name: app-demo-worker
|
|
||||||
command:
|
|
||||||
- celery
|
|
||||||
- -A
|
|
||||||
- app.celery_app
|
|
||||||
- worker
|
|
||||||
- -Q
|
|
||||||
- $(MAIL_QUEUE)
|
|
||||||
- --loglevel
|
|
||||||
- INFO
|
|
||||||
env:
|
|
||||||
- name: RABBITMQ_USERNAME
|
|
||||||
value: demo-app
|
|
||||||
- name: RABBITMQ_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: demo-app-user-credentials
|
|
||||||
key: password
|
|
||||||
- name: RABBITMQ_HOST
|
|
||||||
value: rabbitmq.rabbitmq.svc.cluster.local
|
|
||||||
- name: RABBITMQ_PORT
|
|
||||||
value: '5672'
|
|
||||||
- name: RABBITMQ_VHOST
|
|
||||||
value: "/"
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
apiVersion: networking.cfargotunnel.com/v1alpha1
|
|
||||||
kind: TunnelBinding
|
|
||||||
metadata:
|
|
||||||
name: guestbook-tunnel-binding
|
|
||||||
namespace: group-project
|
|
||||||
subjects:
|
|
||||||
- name: app-server
|
|
||||||
spec:
|
|
||||||
target: http://app-demo.group-project.svc.cluster.local
|
|
||||||
fqdn: demo.ltrk.cz
|
|
||||||
noTlsVerify: true
|
|
||||||
tunnelRef:
|
|
||||||
kind: ClusterTunnel
|
|
||||||
name: cluster-tunnel
|
|
||||||
Reference in New Issue
Block a user