atlas/kubernetes/apps/metube/deployment.yaml
2026-10-04 13:03:50 +03:00

87 lines
1.9 KiB
YAML

apiVersion: apps/v1
kind: StatefulSet
metadata:
name: metube
namespace: media
labels:
app: metube
spec:
serviceName: metube
replicas: 1
selector:
matchLabels:
app: metube
template:
metadata:
labels:
app: metube
spec:
containers:
- name: metube
image: ghcr.io/alexta69/metube:latest
ports:
- containerPort: 8081
name: http
env:
- name: OUTPUT_TEMPLATE
value: "%(playlist_title)s/%(title)s.%(ext)s"
- name: DOWNLOAD_DIR
value: "/downloads"
- name: STATE_DIR
value: "/downloads/.metube"
resources:
requests:
cpu: 50m
memory: 128Mi
limits:
cpu: 2000m
memory: 512Mi
volumeMounts:
- name: media-storage
mountPath: /downloads
volumes:
- name: media-storage
persistentVolumeClaim:
claimName: nfs-media-pvc
---
apiVersion: v1
kind: Service
metadata:
name: metube
namespace: media
spec:
type: ClusterIP
ports:
- port: 8081
targetPort: 8081
name: http
selector:
app: metube
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: metube
namespace: media
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.middlewares: traefik-authentik@kubernetescrd
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
ingressClassName: traefik
tls:
- hosts:
- metube.svo88.space
secretName: metube-svo88-tls
rules:
- host: metube.svo88.space
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: metube
port:
number: 8081