Split manifests into infra/ and applications/

This commit is contained in:
2026-06-21 12:14:38 +02:00
parent 64e8bf7d78
commit c40577589d
360 changed files with 69 additions and 67 deletions

View File

@@ -0,0 +1,43 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: chrome
namespace: resume
labels:
app: chrome
spec:
replicas: 1
selector:
matchLabels:
app: chrome
template:
metadata:
labels:
app: chrome
spec:
containers:
- name: chrome
image: ghcr.io/browserless/chromium:latest
ports:
- containerPort: 3000
env:
- name: TIMEOUT
value: "10000"
- name: CONCURRENT
value: "10"
- name: TOKEN
valueFrom:
secretKeyRef:
name: resume-secrets
key: chrome_token
- name: EXIT_ON_HEALTH_FAILURE
value: "true"
- name: PRE_REQUEST_HEALTH_CHECK
value: "true"
resources:
limits:
memory: "1Gi"
cpu: "500m"
requests:
memory: "512Mi"
cpu: "250m"

View File

@@ -0,0 +1,13 @@
apiVersion: v1
kind: Service
metadata:
name: chrome
namespace: resume
spec:
selector:
app: chrome
ports:
- protocol: TCP
port: 3000
targetPort: 3000
type: ClusterIP

View File

@@ -0,0 +1,12 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
namespace: resume
name: resume-postgresql-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn-static
resources:
requests:
storage: 15Gi

View File

@@ -0,0 +1,14 @@
apiVersion: v1
kind: Service
metadata:
name: resume-postgresql
namespace: resume
spec:
selector:
app: resume-postgresql
type: ClusterIP
ports:
- name: resume-postgresql-port
protocol: TCP
port: 5432
targetPort: 5432

View File

@@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: resume
name: resume-postgresql
spec:
serviceName: resume-postgresql
replicas: 1
selector:
matchLabels:
app: resume-postgresql
template:
metadata:
labels:
app: resume-postgresql
spec:
terminationGracePeriodSeconds: 60
containers:
- name: resume-postgresql
image: postgres:18
ports:
- containerPort: 5432
resources:
limits:
cpu: "500m"
memory: "512Mi"
requests:
cpu: "250m"
memory: "256Mi"
volumeMounts:
- name: resume-postgresql-database
mountPath: /var/lib/postgresql
env:
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: resume-secrets
key: db_password
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: resume-secrets
key: db_user
- name: POSTGRES_DB
valueFrom:
secretKeyRef:
name: resume-secrets
key: db_name
volumes:
- name: resume-postgresql-database
persistentVolumeClaim:
claimName: resume-postgresql-pvc

View File

@@ -0,0 +1,51 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: resume-route
namespace: resume
spec:
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: gateway-internal
namespace: envoy-gateway
sectionName: resume
- group: gateway.networking.k8s.io
kind: Gateway
name: gateway-public
namespace: envoy-gateway
sectionName: resume
hostnames:
- "resume.jsme.be"
rules:
- matches:
- path:
type: PathPrefix
value: /
filters:
- type: RequestHeaderModifier
requestHeaderModifier:
set:
- name: X-Forwarded-Host
value: "resume.jsme.be"
- name: X-Forwarded-Proto
value: https
- type: ResponseHeaderModifier
responseHeaderModifier:
set:
- name: Strict-Transport-Security
value: "max-age=31536000; includeSubDomains"
- name: X-Content-Type-Options
value: nosniff
- name: X-Frame-Options
value: SAMEORIGIN
- name: Referrer-Policy
value: strict-origin-when-cross-origin
- name: Permissions-Policy
value: "camera=(), microphone=(), geolocation=(), payment=()"
backendRefs:
- name: resume
port: 3000
kind: Service
group: ""
weight: 1

View File

@@ -0,0 +1,134 @@
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: resume
name: resume
spec:
replicas: 1
selector:
matchLabels:
app: resume
template:
metadata:
labels:
app: resume
spec:
restartPolicy: Always
terminationGracePeriodSeconds: 10
containers:
- name: resume
image: ghcr.io/amruthpillai/reactive-resume:v5.0
ports:
- containerPort: 3000
resources:
limits:
cpu: "1000m"
memory: "2Gi"
requests:
cpu: "500m"
memory: "1Gi"
env:
- name: TZ
value: Europe/Brussels
- name: NODE_ENV
value: production
- name: PORT
value: "3000"
- name: APP_URL
value: https://resume.jsme.be
- name: STORAGE_URL
value: https://s3.jsme.be/resume
- name: CHROME_TOKEN
valueFrom:
secretKeyRef:
name: resume-secrets
key: chrome_token
- name: PRINTER_ENDPOINT
value: ws://chrome.resume.svc.cluster.local:3000?token=$(CHROME_TOKEN)
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: resume-secrets
key: db_url
- name: AUTH_SECRET
valueFrom:
secretKeyRef:
name: resume-secrets
key: auth_secret
- name: OAUTH_PROVIDER_NAME
valueFrom:
secretKeyRef:
name: resume-secrets
key: oauth_provider_name
- name: OAUTH_CLIENT_ID
valueFrom:
secretKeyRef:
name: resume-secrets
key: oauth_client_id
- name: OAUTH_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: resume-secrets
key: oauth_client_secret
- name: OAUTH_DISCOVERY_URL
valueFrom:
secretKeyRef:
name: resume-secrets
key: oauth_discovery_url
- name: SMTP_HOST
valueFrom:
secretKeyRef:
name: resume-secrets
key: smtp_host
- name: SMTP_PORT
valueFrom:
secretKeyRef:
name: resume-secrets
key: smtp_port
- name: SMTP_USER
valueFrom:
secretKeyRef:
name: resume-secrets
key: smtp_user
- name: SMTP_PASS
valueFrom:
secretKeyRef:
name: resume-secrets
key: smtp_pass
- name: SMTP_FROM
valueFrom:
secretKeyRef:
name: resume-secrets
key: smtp_from
- name: SMTP_SECURE
valueFrom:
secretKeyRef:
name: resume-secrets
key: smtp_secure
- name: S3_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: resume-secrets
key: s3_access_key_id
- name: S3_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: resume-secrets
key: s3_secret_access_key
- name: S3_REGION
valueFrom:
secretKeyRef:
name: resume-secrets
key: s3_region
- name: S3_ENDPOINT
valueFrom:
secretKeyRef:
name: resume-secrets
key: s3_endpoint
- name: S3_BUCKET
valueFrom:
secretKeyRef:
name: resume-secrets
key: s3_bucket
- name: S3_FORCE_PATH_STYLE
value: "true"

View File

@@ -0,0 +1,13 @@
apiVersion: v1
kind: Service
metadata:
name: resume
namespace: resume
spec:
selector:
app: resume
ports:
- protocol: TCP
port: 3000
targetPort: 3000
type: ClusterIP