diff --git a/deployments/bazarr/deployment.yaml b/deployments/bazarr/deployment.yaml new file mode 100644 index 0000000..f386e5d --- /dev/null +++ b/deployments/bazarr/deployment.yaml @@ -0,0 +1,46 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: bazarr + namespace: media +spec: + replicas: 1 + selector: + matchLabels: + app: bazarr + template: + metadata: + labels: + app: bazarr + spec: + containers: + - name: bazarr + image: ghcr.io/linuxserver/bazarr:develop + ports: + - containerPort: 6767 + env: + - name: PUID + value: "1000" + - name: PGID + value: "1000" + - name: TZ + value: UTC + volumeMounts: + - name: config + mountPath: /config + - name: media + mountPath: /media + resources: + requests: + cpu: 100m + memory: 256Mi + limits: + cpu: 500m + memory: 512Mi + volumes: + - name: config + persistentVolumeClaim: + claimName: bazarr-config + - name: media + persistentVolumeClaim: + claimName: media-data diff --git a/deployments/bazarr/ingress.yaml b/deployments/bazarr/ingress.yaml new file mode 100644 index 0000000..9afe232 --- /dev/null +++ b/deployments/bazarr/ingress.yaml @@ -0,0 +1,26 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: bazarr + namespace: media + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + traefik.ingress.kubernetes.io/router.entrypoints: web,websecure + traefik.ingress.kubernetes.io/router.tls: "true" +spec: + ingressClassName: traefik + tls: + - hosts: + - bazarr.khalisio.com + secretName: bazarr-tls + rules: + - host: bazarr.khalisio.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: bazarr + port: + number: 6767 diff --git a/deployments/bazarr/pvc.yaml b/deployments/bazarr/pvc.yaml new file mode 100644 index 0000000..a569bf8 --- /dev/null +++ b/deployments/bazarr/pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: bazarr-config + namespace: media +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 2Gi diff --git a/deployments/bazarr/service.yaml b/deployments/bazarr/service.yaml new file mode 100644 index 0000000..9a58143 --- /dev/null +++ b/deployments/bazarr/service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: bazarr + namespace: media +spec: + selector: + app: bazarr + ports: + - port: 6767 + targetPort: 6767 + protocol: TCP diff --git a/deployments/emby/deployment.yaml b/deployments/emby/deployment.yaml new file mode 100644 index 0000000..6ec04bb --- /dev/null +++ b/deployments/emby/deployment.yaml @@ -0,0 +1,49 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: emby + namespace: media +spec: + replicas: 1 + selector: + matchLabels: + app: emby + template: + metadata: + labels: + app: emby + spec: + containers: + - name: emby + image: ghcr.io/linuxserver/emby:latest + ports: + - name: http + containerPort: 8096 + - name: https + containerPort: 8920 + env: + - name: PUID + value: "1000" + - name: PGID + value: "1000" + - name: TZ + value: UTC + volumeMounts: + - name: config + mountPath: /config + - name: media + mountPath: /media + resources: + requests: + cpu: 500m + memory: 1Gi + limits: + cpu: 4000m + memory: 4Gi + volumes: + - name: config + persistentVolumeClaim: + claimName: emby-config + - name: media + persistentVolumeClaim: + claimName: media-data diff --git a/deployments/emby/ingress.yaml b/deployments/emby/ingress.yaml new file mode 100644 index 0000000..79796de --- /dev/null +++ b/deployments/emby/ingress.yaml @@ -0,0 +1,26 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: emby + namespace: media + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + traefik.ingress.kubernetes.io/router.entrypoints: web,websecure + traefik.ingress.kubernetes.io/router.tls: "true" +spec: + ingressClassName: traefik + tls: + - hosts: + - emby.khalisio.com + secretName: emby-tls + rules: + - host: emby.khalisio.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: emby + port: + number: 8096 diff --git a/deployments/emby/pvc-emby-config.yaml b/deployments/emby/pvc-emby-config.yaml new file mode 100644 index 0000000..9b5960f --- /dev/null +++ b/deployments/emby/pvc-emby-config.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: emby-config + namespace: media +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 10Gi diff --git a/deployments/emby/pvc-media-data.yaml b/deployments/emby/pvc-media-data.yaml new file mode 100644 index 0000000..5288b7f --- /dev/null +++ b/deployments/emby/pvc-media-data.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: media-data + namespace: media +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 50Gi diff --git a/deployments/emby/service.yaml b/deployments/emby/service.yaml new file mode 100644 index 0000000..07162cd --- /dev/null +++ b/deployments/emby/service.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + name: emby + namespace: media +spec: + selector: + app: emby + ports: + - name: http + port: 8096 + targetPort: 8096 + protocol: TCP + - name: https + port: 8920 + targetPort: 8920 + protocol: TCP diff --git a/deployments/lidarr/deployment.yaml b/deployments/lidarr/deployment.yaml new file mode 100644 index 0000000..b2cb802 --- /dev/null +++ b/deployments/lidarr/deployment.yaml @@ -0,0 +1,46 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: lidarr + namespace: media +spec: + replicas: 1 + selector: + matchLabels: + app: lidarr + template: + metadata: + labels: + app: lidarr + spec: + containers: + - name: lidarr + image: ghcr.io/linuxserver/lidarr:develop + ports: + - containerPort: 8686 + env: + - name: PUID + value: "1000" + - name: PGID + value: "1000" + - name: TZ + value: UTC + volumeMounts: + - name: config + mountPath: /config + - name: media + mountPath: /media + resources: + requests: + cpu: 100m + memory: 512Mi + limits: + cpu: 1000m + memory: 1Gi + volumes: + - name: config + persistentVolumeClaim: + claimName: lidarr-config + - name: media + persistentVolumeClaim: + claimName: media-data diff --git a/deployments/lidarr/ingress.yaml b/deployments/lidarr/ingress.yaml new file mode 100644 index 0000000..40734fe --- /dev/null +++ b/deployments/lidarr/ingress.yaml @@ -0,0 +1,26 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: lidarr + namespace: media + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + traefik.ingress.kubernetes.io/router.entrypoints: web,websecure + traefik.ingress.kubernetes.io/router.tls: "true" +spec: + ingressClassName: traefik + tls: + - hosts: + - lidarr.khalisio.com + secretName: lidarr-tls + rules: + - host: lidarr.khalisio.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: lidarr + port: + number: 8686 diff --git a/deployments/lidarr/pvc.yaml b/deployments/lidarr/pvc.yaml new file mode 100644 index 0000000..73c6f5e --- /dev/null +++ b/deployments/lidarr/pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: lidarr-config + namespace: media +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 5Gi diff --git a/deployments/lidarr/service.yaml b/deployments/lidarr/service.yaml new file mode 100644 index 0000000..fa98d8a --- /dev/null +++ b/deployments/lidarr/service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: lidarr + namespace: media +spec: + selector: + app: lidarr + ports: + - port: 8686 + targetPort: 8686 + protocol: TCP diff --git a/deployments/namespace-media.yaml b/deployments/namespace-media.yaml new file mode 100644 index 0000000..13b1796 --- /dev/null +++ b/deployments/namespace-media.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: media + labels: + app.kubernetes.io/managed-by: orion diff --git a/deployments/prowlarr/deployment.yaml b/deployments/prowlarr/deployment.yaml new file mode 100644 index 0000000..0bcd3c3 --- /dev/null +++ b/deployments/prowlarr/deployment.yaml @@ -0,0 +1,41 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: prowlarr + namespace: media +spec: + replicas: 1 + selector: + matchLabels: + app: prowlarr + template: + metadata: + labels: + app: prowlarr + spec: + containers: + - name: prowlarr + image: ghcr.io/linuxserver/prowlarr:develop + ports: + - containerPort: 9696 + env: + - name: PUID + value: "1000" + - name: PGID + value: "1000" + - name: TZ + value: UTC + volumeMounts: + - name: config + mountPath: /config + resources: + requests: + cpu: 100m + memory: 256Mi + limits: + cpu: 500m + memory: 512Mi + volumes: + - name: config + persistentVolumeClaim: + claimName: prowlarr-config diff --git a/deployments/prowlarr/ingress.yaml b/deployments/prowlarr/ingress.yaml new file mode 100644 index 0000000..cf6e0cf --- /dev/null +++ b/deployments/prowlarr/ingress.yaml @@ -0,0 +1,26 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: prowlarr + namespace: media + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + traefik.ingress.kubernetes.io/router.entrypoints: web,websecure + traefik.ingress.kubernetes.io/router.tls: "true" +spec: + ingressClassName: traefik + tls: + - hosts: + - prowlarr.khalisio.com + secretName: prowlarr-tls + rules: + - host: prowlarr.khalisio.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: prowlarr + port: + number: 9696 diff --git a/deployments/prowlarr/pvc.yaml b/deployments/prowlarr/pvc.yaml new file mode 100644 index 0000000..d2e9f7d --- /dev/null +++ b/deployments/prowlarr/pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: prowlarr-config + namespace: media +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 2Gi diff --git a/deployments/prowlarr/service.yaml b/deployments/prowlarr/service.yaml new file mode 100644 index 0000000..c3c91f0 --- /dev/null +++ b/deployments/prowlarr/service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: prowlarr + namespace: media +spec: + selector: + app: prowlarr + ports: + - port: 9696 + targetPort: 9696 + protocol: TCP diff --git a/deployments/radarr/deployment.yaml b/deployments/radarr/deployment.yaml new file mode 100644 index 0000000..d91bc07 --- /dev/null +++ b/deployments/radarr/deployment.yaml @@ -0,0 +1,46 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: radarr + namespace: media +spec: + replicas: 1 + selector: + matchLabels: + app: radarr + template: + metadata: + labels: + app: radarr + spec: + containers: + - name: radarr + image: ghcr.io/linuxserver/radarr:develop + ports: + - containerPort: 7878 + env: + - name: PUID + value: "1000" + - name: PGID + value: "1000" + - name: TZ + value: UTC + volumeMounts: + - name: config + mountPath: /config + - name: media + mountPath: /media + resources: + requests: + cpu: 100m + memory: 512Mi + limits: + cpu: 1000m + memory: 1Gi + volumes: + - name: config + persistentVolumeClaim: + claimName: radarr-config + - name: media + persistentVolumeClaim: + claimName: media-data diff --git a/deployments/radarr/ingress.yaml b/deployments/radarr/ingress.yaml new file mode 100644 index 0000000..a409420 --- /dev/null +++ b/deployments/radarr/ingress.yaml @@ -0,0 +1,26 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: radarr + namespace: media + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + traefik.ingress.kubernetes.io/router.entrypoints: web,websecure + traefik.ingress.kubernetes.io/router.tls: "true" +spec: + ingressClassName: traefik + tls: + - hosts: + - radarr.khalisio.com + secretName: radarr-tls + rules: + - host: radarr.khalisio.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: radarr + port: + number: 7878 diff --git a/deployments/radarr/pvc.yaml b/deployments/radarr/pvc.yaml new file mode 100644 index 0000000..1bb9e41 --- /dev/null +++ b/deployments/radarr/pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: radarr-config + namespace: media +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 5Gi diff --git a/deployments/radarr/service.yaml b/deployments/radarr/service.yaml new file mode 100644 index 0000000..3868e8d --- /dev/null +++ b/deployments/radarr/service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: radarr + namespace: media +spec: + selector: + app: radarr + ports: + - port: 7878 + targetPort: 7878 + protocol: TCP diff --git a/deployments/readarr/deployment.yaml b/deployments/readarr/deployment.yaml new file mode 100644 index 0000000..363e5d8 --- /dev/null +++ b/deployments/readarr/deployment.yaml @@ -0,0 +1,46 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: readarr + namespace: media +spec: + replicas: 1 + selector: + matchLabels: + app: readarr + template: + metadata: + labels: + app: readarr + spec: + containers: + - name: readarr + image: ghcr.io/linuxserver/readarr:develop + ports: + - containerPort: 8787 + env: + - name: PUID + value: "1000" + - name: PGID + value: "1000" + - name: TZ + value: UTC + volumeMounts: + - name: config + mountPath: /config + - name: media + mountPath: /media + resources: + requests: + cpu: 100m + memory: 256Mi + limits: + cpu: 500m + memory: 512Mi + volumes: + - name: config + persistentVolumeClaim: + claimName: readarr-config + - name: media + persistentVolumeClaim: + claimName: media-data diff --git a/deployments/readarr/ingress.yaml b/deployments/readarr/ingress.yaml new file mode 100644 index 0000000..05a5fd6 --- /dev/null +++ b/deployments/readarr/ingress.yaml @@ -0,0 +1,26 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: readarr + namespace: media + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + traefik.ingress.kubernetes.io/router.entrypoints: web,websecure + traefik.ingress.kubernetes.io/router.tls: "true" +spec: + ingressClassName: traefik + tls: + - hosts: + - readarr.khalisio.com + secretName: readarr-tls + rules: + - host: readarr.khalisio.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: readarr + port: + number: 8787 diff --git a/deployments/readarr/pvc.yaml b/deployments/readarr/pvc.yaml new file mode 100644 index 0000000..dbc06e0 --- /dev/null +++ b/deployments/readarr/pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: readarr-config + namespace: media +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 2Gi diff --git a/deployments/readarr/service.yaml b/deployments/readarr/service.yaml new file mode 100644 index 0000000..9925044 --- /dev/null +++ b/deployments/readarr/service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: readarr + namespace: media +spec: + selector: + app: readarr + ports: + - port: 8787 + targetPort: 8787 + protocol: TCP diff --git a/deployments/sonarr/deployment.yaml b/deployments/sonarr/deployment.yaml new file mode 100644 index 0000000..cbc174c --- /dev/null +++ b/deployments/sonarr/deployment.yaml @@ -0,0 +1,46 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: sonarr + namespace: media +spec: + replicas: 1 + selector: + matchLabels: + app: sonarr + template: + metadata: + labels: + app: sonarr + spec: + containers: + - name: sonarr + image: ghcr.io/linuxserver/sonarr:develop + ports: + - containerPort: 8989 + env: + - name: PUID + value: "1000" + - name: PGID + value: "1000" + - name: TZ + value: UTC + volumeMounts: + - name: config + mountPath: /config + - name: media + mountPath: /media + resources: + requests: + cpu: 100m + memory: 512Mi + limits: + cpu: 1000m + memory: 1Gi + volumes: + - name: config + persistentVolumeClaim: + claimName: sonarr-config + - name: media + persistentVolumeClaim: + claimName: media-data diff --git a/deployments/sonarr/ingress.yaml b/deployments/sonarr/ingress.yaml new file mode 100644 index 0000000..c1f8e1d --- /dev/null +++ b/deployments/sonarr/ingress.yaml @@ -0,0 +1,26 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: sonarr + namespace: media + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + traefik.ingress.kubernetes.io/router.entrypoints: web,websecure + traefik.ingress.kubernetes.io/router.tls: "true" +spec: + ingressClassName: traefik + tls: + - hosts: + - sonarr.khalisio.com + secretName: sonarr-tls + rules: + - host: sonarr.khalisio.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: sonarr + port: + number: 8989 diff --git a/deployments/sonarr/pvc.yaml b/deployments/sonarr/pvc.yaml new file mode 100644 index 0000000..44c3747 --- /dev/null +++ b/deployments/sonarr/pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: sonarr-config + namespace: media +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 5Gi diff --git a/deployments/sonarr/service.yaml b/deployments/sonarr/service.yaml new file mode 100644 index 0000000..296102a --- /dev/null +++ b/deployments/sonarr/service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: sonarr + namespace: media +spec: + selector: + app: sonarr + ports: + - port: 8989 + targetPort: 8989 + protocol: TCP