# ====================================================== # TANDOOR RECIPES - PRODUCTION (PINNED TO MIST) # ====================================================== # ------------------------- # POSTGRES PV # ------------------------- --- apiVersion: v1 kind: PersistentVolume metadata: name: tandoor-postgres-pv spec: capacity: storage: 2Gi accessModes: - ReadWriteOnce storageClassName: tandoor-local-storage persistentVolumeReclaimPolicy: Retain local: path: /home/kimjunte/k8s_storage/tandoor/postgres nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - mist --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: tandoor-postgres-pvc spec: accessModes: - ReadWriteOnce storageClassName: tandoor-local-storage resources: requests: storage: 2Gi # ------------------------- # MEDIA PV # ------------------------- --- apiVersion: v1 kind: PersistentVolume metadata: name: tandoor-media-pv spec: capacity: storage: 5Gi accessModes: - ReadWriteOnce storageClassName: tandoor-local-storage persistentVolumeReclaimPolicy: Retain local: path: /home/kimjunte/k8s_storage/tandoor/media nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - mist --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: tandoor-media-pvc spec: accessModes: - ReadWriteOnce storageClassName: tandoor-local-storage resources: requests: storage: 5Gi # ------------------------- # POSTGRES # ------------------------- --- apiVersion: apps/v1 kind: Deployment metadata: name: tandoor-postgres labels: app: tandoor-postgres spec: replicas: 1 selector: matchLabels: app: tandoor-postgres template: metadata: labels: app: tandoor-postgres spec: nodeSelector: kubernetes.io/hostname: mist containers: - name: postgres image: postgres:15-alpine env: - name: POSTGRES_USER value: tandoor - name: POSTGRES_PASSWORD value: tandoorpassword - name: POSTGRES_DB value: tandoor volumeMounts: - mountPath: /var/lib/postgresql/data name: postgres-storage volumes: - name: postgres-storage persistentVolumeClaim: claimName: tandoor-postgres-pvc --- apiVersion: v1 kind: Service metadata: name: tandoor-postgres spec: selector: app: tandoor-postgres ports: - port: 5432 # ------------------------- # REDIS # ------------------------- --- apiVersion: apps/v1 kind: Deployment metadata: name: tandoor-redis labels: app: tandoor-redis spec: replicas: 1 selector: matchLabels: app: tandoor-redis template: metadata: labels: app: tandoor-redis spec: nodeSelector: kubernetes.io/hostname: mist containers: - name: redis image: redis:7-alpine ports: - containerPort: 6379 --- apiVersion: v1 kind: Service metadata: name: tandoor-redis spec: selector: app: tandoor-redis ports: - port: 6379 # ------------------------- # TANDOOR APP # ------------------------- --- apiVersion: apps/v1 kind: Deployment metadata: name: tandoor labels: app: tandoor spec: replicas: 1 selector: matchLabels: app: tandoor template: metadata: labels: app: tandoor spec: nodeSelector: kubernetes.io/hostname: mist containers: - name: tandoor image: vabene1111/recipes:latest env: - name: SECRET_KEY value: replace-with-very-long-random-string - name: DB_ENGINE value: django.db.backends.postgresql - name: POSTGRES_HOST value: tandoor-postgres - name: POSTGRES_PORT value: "5432" - name: POSTGRES_USER value: tandoor - name: POSTGRES_PASSWORD value: tandoorpassword - name: POSTGRES_DB value: tandoor - name: REDIS_HOST value: tandoor-redis - name: REDIS_PORT value: "6379" - name: ALLOWED_HOSTS value: recipes.juntekim.com - name: DEBUG value: "0" ports: - containerPort: 8080 volumeMounts: - name: media-storage mountPath: /opt/recipes/mediafiles volumes: - name: media-storage persistentVolumeClaim: claimName: tandoor-media-pvc --- apiVersion: v1 kind: Service metadata: name: tandoor spec: selector: app: tandoor ports: - port: 80 targetPort: 8080 # ------------------------- # TRAEFIK INGRESS # ------------------------- --- apiVersion: traefik.io/v1alpha1 kind: IngressRoute metadata: name: tandoor-ingress spec: entryPoints: - websecure routes: - match: Host(`mealcraft.com`) kind: Rule services: - name: tandoor port: 80 passHostHeader: true tls: certResolver: myresolver