From 47dcffc97a28b37dab66c347955df18a5ea43320 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Tue, 24 Feb 2026 05:29:01 +0000 Subject: [PATCH] got to exercise --- exercise/exercise.yaml | 248 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 248 insertions(+) create mode 100644 exercise/exercise.yaml diff --git a/exercise/exercise.yaml b/exercise/exercise.yaml new file mode 100644 index 0000000..e2c9b43 --- /dev/null +++ b/exercise/exercise.yaml @@ -0,0 +1,248 @@ +# ====================================================== +# WGER - PRODUCTION (exercise.juntekim.com) +# ====================================================== + +# ------------------------- +# POSTGRES PV +# ------------------------- +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: wger-postgres-pv +spec: + capacity: + storage: 2Gi + accessModes: + - ReadWriteOnce + storageClassName: wger-local-storage + persistentVolumeReclaimPolicy: Retain + local: + path: /home/kimjunte/k8s_storage/wger/postgres + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - mist + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: wger-postgres-pvc +spec: + accessModes: + - ReadWriteOnce + storageClassName: wger-local-storage + resources: + requests: + storage: 2Gi + +# ------------------------- +# MEDIA PV +# ------------------------- +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: wger-media-pv +spec: + capacity: + storage: 5Gi + accessModes: + - ReadWriteOnce + storageClassName: wger-local-storage + persistentVolumeReclaimPolicy: Retain + local: + path: /home/kimjunte/k8s_storage/wger/media + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - mist + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: wger-media-pvc +spec: + accessModes: + - ReadWriteOnce + storageClassName: wger-local-storage + resources: + requests: + storage: 5Gi + +# ------------------------- +# POSTGRES +# ------------------------- +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: wger-postgres +spec: + replicas: 1 + selector: + matchLabels: + app: wger-postgres + template: + metadata: + labels: + app: wger-postgres + spec: + nodeSelector: + kubernetes.io/hostname: mist + containers: + - name: postgres + image: postgres:15-alpine + env: + - name: POSTGRES_USER + value: wger + - name: POSTGRES_PASSWORD + value: wgerpassword + - name: POSTGRES_DB + value: wger + volumeMounts: + - mountPath: /var/lib/postgresql/data + name: postgres-storage + volumes: + - name: postgres-storage + persistentVolumeClaim: + claimName: wger-postgres-pvc + +--- +apiVersion: v1 +kind: Service +metadata: + name: wger-postgres +spec: + selector: + app: wger-postgres + ports: + - port: 5432 + +# ------------------------- +# REDIS +# ------------------------- +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: wger-redis +spec: + replicas: 1 + selector: + matchLabels: + app: wger-redis + template: + metadata: + labels: + app: wger-redis + spec: + nodeSelector: + kubernetes.io/hostname: mist + containers: + - name: redis + image: redis:7-alpine + ports: + - containerPort: 6379 + +--- +apiVersion: v1 +kind: Service +metadata: + name: wger-redis +spec: + selector: + app: wger-redis + ports: + - port: 6379 + +# ------------------------- +# WGER APP +# ------------------------- +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: wger +spec: + replicas: 1 + selector: + matchLabels: + app: wger + template: + metadata: + labels: + app: wger + spec: + nodeSelector: + kubernetes.io/hostname: mist + containers: + - name: wger + image: wger/server:latest + env: + - name: DJANGO_SECRET_KEY + value: replace-with-long-random-string + + - name: DATABASE_URL + value: postgres://wger:wgerpassword@wger-postgres:5432/wger + + - name: CACHE_URL + value: redis://wger-redis:6379/1 + + - name: ALLOWED_HOSTS + value: exercise.juntekim.com + + ports: + - containerPort: 8000 + + volumeMounts: + - name: media-storage + mountPath: /home/wger/media + + volumes: + - name: media-storage + persistentVolumeClaim: + claimName: wger-media-pvc + +--- +apiVersion: v1 +kind: Service +metadata: + name: wger +spec: + selector: + app: wger + ports: + - port: 80 + targetPort: 8000 + +# ------------------------- +# TRAEFIK INGRESS +# ------------------------- +--- +apiVersion: traefik.io/v1alpha1 +kind: IngressRoute +metadata: + name: wger-ingress +spec: + entryPoints: + - websecure + routes: + - match: Host(`exercise.juntekim.com`) + kind: Rule + services: + - name: wger + port: 80 + passHostHeader: true + tls: + certResolver: myresolver \ No newline at end of file