mirror of
https://github.com/knightcrawler-stremio/knightcrawler.git
synced 2024-12-20 03:29:51 +00:00
helm chart [wip]
This commit is contained in:
6
deployment/k8s/Chart.yaml
Normal file
6
deployment/k8s/Chart.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
appVersion: 2.0.17
|
||||||
|
description: A helm chart for Knightcrawler
|
||||||
|
name: knightcrawler
|
||||||
|
type: application
|
||||||
|
version: 0.1.0
|
||||||
6
deployment/k8s/templates/NOTES.txt
Normal file
6
deployment/k8s/templates/NOTES.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
Congratulations,
|
||||||
|
|
||||||
|
Knightcrawler is now deployed. This may take a while to be up and responding.
|
||||||
|
|
||||||
|
|
||||||
27
deployment/k8s/templates/config/knightcrawler.configmap.yaml
Normal file
27
deployment/k8s/templates/config/knightcrawler.configmap.yaml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-config'
|
||||||
|
labels:
|
||||||
|
project: '{{ .Chart.Name }}'
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
data:
|
||||||
|
COLLECTOR_DEBRID_ENABLED: '{{ .Values.knightcrawler.debridcollector.enabled }}'
|
||||||
|
COLLECTOR_QBIT_ENABLED: '{{ .Values.knightcrawler.qbitcollector.enabled }}'
|
||||||
|
DEBUG_MODE: '{{ .Values.knightcrawler.debug }}'
|
||||||
|
METADATA_INSERT_BATCH_SIZE: '{{ .Values.environment.metadata.insertBatchSize }}'
|
||||||
|
POSTGRES_DB: '{{ .Values.environment.postgres.dbName }}'
|
||||||
|
POSTGRES_HOST: '{{ if .Values.environment.postgres.external }}{{ .Values.environment.postgres.host }}{{ else }}{{ .Release.Name }}-postgres{{ end }}'
|
||||||
|
POSTGRES_PORT: '{{ .Values.environment.postgres.port }}'
|
||||||
|
QBIT_HOST: '{{ .Values.environment.qbitcollector.qbitHost }}'
|
||||||
|
QBIT_TRACKERS_URL: '{{ .Values.environment.qbitcollector.trackersUrl }}'
|
||||||
|
RABBITMQ_CONSUMER_QUEUE_NAME: '{{ .Values.environment.producer.queueName }}'
|
||||||
|
RABBITMQ_DURABLE: '{{ .Values.environment.producer.durable }}'
|
||||||
|
RABBITMQ_HOST: '{{ if .Values.environment.lavinmq.external }}{{ .Values.environment.lavinmq.host }}{{ else }}{{ .Release.Name }}-lavinmq{{ end }}'
|
||||||
|
RABBITMQ_MAX_PUBLISH_BATCH_SIZE: '{{ .Values.environment.producer.maxPublishBatchSize }}'
|
||||||
|
RABBITMQ_MAX_QUEUE_SIZE: '{{ .Values.environment.producer.maxQueueSize }}'
|
||||||
|
RABBITMQ_PUBLISH_INTERVAL_IN_SECONDS: '{{ .Values.environment.producer.publishIntervalSeconds }}'
|
||||||
|
REDIS_EXTRA: '{{ .Values.environment.redis.extra }}'
|
||||||
|
REDIS_HOST: '{{ if .Values.environment.redis.external }}{{ .Values.environment.redis.host }}{{ else }}{{ .Release.Name }}-redis{{ end }}'
|
||||||
|
REDIS_PORT: '{{ .Values.environment.redis.port }}'
|
||||||
|
TZ: '{{ .Values.shared.timezone }}'
|
||||||
15
deployment/k8s/templates/config/knightcrawler.secrets.yaml
Normal file
15
deployment/k8s/templates/config/knightcrawler.secrets.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-secrets'
|
||||||
|
labels:
|
||||||
|
project: '{{ .Chart.Name }}'
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
type: Opaque
|
||||||
|
data:
|
||||||
|
GITHUB_PAT: '{{ .Values.environment.producer.githubPat | b64enc }}'
|
||||||
|
COLLECTOR_REAL_DEBRID_API_KEY: '{{ .Values.environment.debridcollector.realDebridApiKey | b64enc }}'
|
||||||
|
POSTGRES_USER: '{{ .Values.environment.postgres.user | b64enc }}'
|
||||||
|
POSTGRES_PASSWORD: '{{ .Values.environment.postgres.password | b64enc }}'
|
||||||
|
RABBITMQ_PASSWORD: '{{ .Values.environment.lavinmq.password | b64enc }}'
|
||||||
|
RABBITMQ_USER: '{{ .Values.environment.lavinmq.user | b64enc }}'
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{{ if .Values.infrastructure.lavinmq.enabled }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-lavinmq'
|
||||||
|
labels:
|
||||||
|
component: lavinmq
|
||||||
|
project: '{{ .Chart.Name }}'
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
component: lavinmq
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 5672
|
||||||
|
targetPort: 5672
|
||||||
|
- protocol: TCP
|
||||||
|
port: 15672
|
||||||
|
targetPort: 15672
|
||||||
|
- protocol: TCP
|
||||||
|
port: 15692
|
||||||
|
targetPort: 15692
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
{{ if .Values.infrastructure.lavinmq.enabled }}
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-lavinmq'
|
||||||
|
labels:
|
||||||
|
component: lavinmq
|
||||||
|
project: '{{ .Chart.Name }}'
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": post-install,post-upgrade
|
||||||
|
"helm.sh/hook-weight": "0"
|
||||||
|
spec:
|
||||||
|
serviceName: '{{ .Release.Name }}-lavinmq'
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
component: lavinmq
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
component: lavinmq
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: lavinmq
|
||||||
|
image: '{{ .Values.infrastructure.lavinmq.image }}:{{ .Values.infrastructure.lavinmq.tag }}'
|
||||||
|
ports:
|
||||||
|
- name: lavinmq
|
||||||
|
containerPort: 5672
|
||||||
|
- name: lavinmq-15672
|
||||||
|
containerPort: 15672
|
||||||
|
- name: lavinmq-15692
|
||||||
|
containerPort: 15692
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: '{{ .Release.Name }}-config'
|
||||||
|
- secretRef:
|
||||||
|
name: '{{ .Release.Name }}-secrets'
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /var/lib/lavinmq
|
||||||
|
name: lavinmq
|
||||||
|
livenessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- lavinmqctl status
|
||||||
|
periodSeconds: 10
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 3
|
||||||
|
volumeClaimTemplates:
|
||||||
|
- metadata:
|
||||||
|
name: lavinmq
|
||||||
|
spec:
|
||||||
|
accessModes: [ "ReadWriteOnce" ]
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: '{{ .Values.persistence.lavinmq.capacity }}'
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
{{ if .Values.infrastructure.postgres.enabled }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-postgres'
|
||||||
|
labels:
|
||||||
|
component: postgres
|
||||||
|
project: '{{ .Chart.Name }}'
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
component: postgres
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 5432
|
||||||
|
targetPort: 5432
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
{{ if .Values.infrastructure.postgres.enabled }}
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-postgres'
|
||||||
|
labels:
|
||||||
|
component: postgres
|
||||||
|
project: '{{ .Chart.Name }}'
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": post-install,post-upgrade
|
||||||
|
"helm.sh/hook-weight": "0"
|
||||||
|
spec:
|
||||||
|
serviceName: '{{ .Release.Name }}-postgres'
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
component: postgres
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
component: postgres
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: postgres
|
||||||
|
image: '{{ .Values.infrastructure.postgres.image }}:{{ .Values.infrastructure.postgres.tag }}'
|
||||||
|
ports:
|
||||||
|
- name: postgres
|
||||||
|
containerPort: 5432
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: '{{ .Release.Name }}-config'
|
||||||
|
- secretRef:
|
||||||
|
name: '{{ .Release.Name }}-secrets'
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /var/lib/postgresql/data
|
||||||
|
name: postgres
|
||||||
|
livenessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- sh
|
||||||
|
- -c
|
||||||
|
- pg_isready -h localhost -U $POSTGRES_USER
|
||||||
|
periodSeconds: 10
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 3
|
||||||
|
volumeClaimTemplates:
|
||||||
|
- metadata:
|
||||||
|
name: postgres
|
||||||
|
spec:
|
||||||
|
accessModes: [ "ReadWriteOnce" ]
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: '{{ .Values.persistence.postgres.capacity }}'
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
{{ if .Values.knightcrawler.qbitcollector.enabled }}
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-qbittorrent'
|
||||||
|
labels:
|
||||||
|
component: qbittorrent
|
||||||
|
project: '{{ .Chart.Name }}'
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": post-install,post-upgrade
|
||||||
|
"helm.sh/hook-weight": "0"
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
component: qbittorrent
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
component: qbittorrent
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: qbittorrent
|
||||||
|
image: '{{ .Values.infrastructure.qbittorrent.image }}:{{ .Values.infrastructure.qbittorrent.tag }}'
|
||||||
|
ports:
|
||||||
|
- name: qbittorrent
|
||||||
|
containerPort: 6881
|
||||||
|
- name: qbittorrent-6881
|
||||||
|
containerPort: 6881
|
||||||
|
- name: qbittorrent-8080
|
||||||
|
containerPort: 8080
|
||||||
|
env:
|
||||||
|
- name: PUID
|
||||||
|
value: '{{ .Values.environment.qbittorrent.puid }}'
|
||||||
|
- name: PGID
|
||||||
|
value: '{{ .Values.environment.qbittorrent.pgid }}'
|
||||||
|
- name: TORRENTING_PORT
|
||||||
|
value: '{{ .Values.environment.qbittorrent.torrentingPort }}'
|
||||||
|
- name: WEBUI_PORT
|
||||||
|
value: '{{ .Values.environment.qbittorrent.webuiPort }}'
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: '{{ .Release.Name }}-config'
|
||||||
|
- secretRef:
|
||||||
|
name: '{{ .Release.Name }}-secrets'
|
||||||
|
livenessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- curl --fail http://localhost:8080
|
||||||
|
periodSeconds: 10
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 3
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{{ if .Values.knightcrawler.qbitcollector.enabled }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-qbittorrent'
|
||||||
|
labels:
|
||||||
|
component: qbittorrent
|
||||||
|
project: '{{ .Chart.Name }}'
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
component: qbittorrent
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 6881
|
||||||
|
targetPort: 6881
|
||||||
|
- protocol: TCP
|
||||||
|
port: 6881
|
||||||
|
targetPort: 6881
|
||||||
|
- protocol: TCP
|
||||||
|
port: 8080
|
||||||
|
targetPort: 8080
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
{{ if .Values.infrastructure.redis.enabled }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-redis'
|
||||||
|
labels:
|
||||||
|
component: redis
|
||||||
|
project: '{{ .Chart.Name }}'
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
component: redis
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 6379
|
||||||
|
targetPort: 6379
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
{{ if .Values.infrastructure.redis.enabled }}
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-redis'
|
||||||
|
labels:
|
||||||
|
component: redis
|
||||||
|
project: '{{ .Chart.Name }}'
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": post-install,post-upgrade
|
||||||
|
"helm.sh/hook-weight": "0"
|
||||||
|
spec:
|
||||||
|
serviceName: '{{ .Release.Name }}-redis'
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
component: redis
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
component: redis
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: redis
|
||||||
|
image: '{{ .Values.infrastructure.redis.image }}:{{ .Values.infrastructure.redis.tag }}'
|
||||||
|
ports:
|
||||||
|
- name: redis
|
||||||
|
containerPort: 6379
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: '{{ .Release.Name }}-config'
|
||||||
|
- secretRef:
|
||||||
|
name: '{{ .Release.Name }}-secrets'
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /data
|
||||||
|
name: redis
|
||||||
|
livenessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- redis-cli ping
|
||||||
|
periodSeconds: 10
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 3
|
||||||
|
volumeClaimTemplates:
|
||||||
|
- metadata:
|
||||||
|
name: redis
|
||||||
|
spec:
|
||||||
|
accessModes: [ "ReadWriteOnce" ]
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: '{{ .Values.persistence.redis.capacity }}'
|
||||||
|
{{- end -}}
|
||||||
28
deployment/k8s/templates/jobs/metadata.job.yaml
Normal file
28
deployment/k8s/templates/jobs/metadata.job.yaml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
apiVersion: batch/v1
|
||||||
|
kind: Job
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-metadata'
|
||||||
|
labels:
|
||||||
|
component: metadata
|
||||||
|
project: '{{ .Chart.Name }}'
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": post-install,post-upgrade
|
||||||
|
"helm.sh/hook-weight": "2"
|
||||||
|
"helm.sh/hook-delete-policy": hook-succeeded
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
component: metadata
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
restartPolicy: OnFailure
|
||||||
|
containers:
|
||||||
|
- name: metadata
|
||||||
|
image: '{{ .Values.knightcrawler.metadata.image }}{{ if ne .Values.knightcrawler.globalImageTagOverride "" }}:{{ .Values.knightcrawler.globalImageTagOverride }}{{else}}:{{ .Values.knightcrawler.metadata.tag}}{{ end }}'
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: '{{ .Release.Name }}-config'
|
||||||
|
- secretRef:
|
||||||
|
name: '{{ .Release.Name }}-secrets'
|
||||||
28
deployment/k8s/templates/jobs/migrator.job.yaml
Normal file
28
deployment/k8s/templates/jobs/migrator.job.yaml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
apiVersion: batch/v1
|
||||||
|
kind: Job
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-migrator'
|
||||||
|
labels:
|
||||||
|
component: migrator
|
||||||
|
project: '{{ .Chart.Name }}'
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": post-install,post-upgrade
|
||||||
|
"helm.sh/hook-weight": "1"
|
||||||
|
"helm.sh/hook-delete-policy": hook-succeeded
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
component: migrator
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
restartPolicy: OnFailure
|
||||||
|
containers:
|
||||||
|
- name: migrator
|
||||||
|
image: '{{ .Values.knightcrawler.migrator.image }}{{ if ne .Values.knightcrawler.globalImageTagOverride "" }}:{{ .Values.knightcrawler.globalImageTagOverride }}{{else}}:{{ .Values.knightcrawler.migrator.tag}}{{ end }}'
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: '{{ .Release.Name }}-config'
|
||||||
|
- secretRef:
|
||||||
|
name: '{{ .Release.Name }}-secrets'
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-addon'
|
||||||
|
labels:
|
||||||
|
component: addon
|
||||||
|
project: '{{ .Chart.Name }}'
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": post-install,post-upgrade
|
||||||
|
"helm.sh/hook-weight": "4"
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.knightcrawler.addon.replicas }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
component: addon
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
component: addon
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: addon
|
||||||
|
image: '{{ .Values.knightcrawler.addon.image }}{{ if ne .Values.knightcrawler.globalImageTagOverride "" }}:{{ .Values.knightcrawler.globalImageTagOverride }}{{else}}:{{ .Values.knightcrawler.addon.tag}}{{ end }}'
|
||||||
|
ports:
|
||||||
|
- name: addon
|
||||||
|
containerPort: 7000
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: '{{ .Release.Name }}-config'
|
||||||
|
- secretRef:
|
||||||
|
name: '{{ .Release.Name }}-secrets'
|
||||||
|
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-consumer'
|
||||||
|
labels:
|
||||||
|
component: consumer
|
||||||
|
project: '{{ .Chart.Name }}'
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": post-install,post-upgrade
|
||||||
|
"helm.sh/hook-weight": "4"
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.knightcrawler.consumer.replicas }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
component: consumer
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
component: consumer
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: consumer
|
||||||
|
image: '{{ .Values.knightcrawler.consumer.image }}{{ if ne .Values.knightcrawler.globalImageTagOverride "" }}:{{ .Values.knightcrawler.globalImageTagOverride }}{{else}}:{{ .Values.knightcrawler.consumer.tag}}{{ end }}'
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: '{{ .Release.Name }}-config'
|
||||||
|
- secretRef:
|
||||||
|
name: '{{ .Release.Name }}-secrets'
|
||||||
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-debridcollector'
|
||||||
|
labels:
|
||||||
|
component: debridcollector
|
||||||
|
project: '{{ .Chart.Name }}'
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": post-install,post-upgrade
|
||||||
|
"helm.sh/hook-weight": "4"
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.knightcrawler.debridcollector.replicas }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
component: debridcollector
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
component: debridcollector
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: debridcollector
|
||||||
|
image: '{{ .Values.knightcrawler.debridcollector.image }}{{ if ne .Values.knightcrawler.globalImageTagOverride "" }}:{{ .Values.knightcrawler.globalImageTagOverride }}{{else}}:{{ .Values.knightcrawler.debridcollector.tag}}{{ end }}'
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: '{{ .Release.Name }}-config'
|
||||||
|
- secretRef:
|
||||||
|
name: '{{ .Release.Name }}-secrets'
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-producer'
|
||||||
|
labels:
|
||||||
|
component: producer
|
||||||
|
project: '{{ .Chart.Name }}'
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": post-install,post-upgrade
|
||||||
|
"helm.sh/hook-weight": "4"
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.knightcrawler.producer.replicas }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
component: producer
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
component: producer
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: producer
|
||||||
|
image: '{{ .Values.knightcrawler.producer.image }}{{ if ne .Values.knightcrawler.globalImageTagOverride "" }}:{{ .Values.knightcrawler.globalImageTagOverride }}{{else}}:{{ .Values.knightcrawler.producer.tag}}{{ end }}'
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: '{{ .Release.Name }}-config'
|
||||||
|
- secretRef:
|
||||||
|
name: '{{ .Release.Name }}-secrets'
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
{{ if .Values.knightcrawler.qbitcollector.enabled }}
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-qbitcollector'
|
||||||
|
labels:
|
||||||
|
component: qbitcollector
|
||||||
|
project: '{{ .Chart.Name }}'
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": post-install,post-upgrade
|
||||||
|
"helm.sh/hook-weight": "4"
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.knightcrawler.qbitcollector.replicas }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
component: qbitcollector
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
component: qbitcollector
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: qbitcollector
|
||||||
|
image: '{{ .Values.knightcrawler.qbitcollector.image }}{{ if ne .Values.knightcrawler.globalImageTagOverride "" }}:{{ .Values.knightcrawler.globalImageTagOverride }}{{else}}:{{ .Values.knightcrawler.qbitcollector.tag}}{{ end }}'
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: '{{ .Release.Name }}-config'
|
||||||
|
- secretRef:
|
||||||
|
name: '{{ .Release.Name }}-secrets'
|
||||||
|
{{- end -}}
|
||||||
17
deployment/k8s/templates/kc/services/addon.service.yaml
Normal file
17
deployment/k8s/templates/kc/services/addon.service.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-addon'
|
||||||
|
labels:
|
||||||
|
component: addon
|
||||||
|
project: '{{ .Chart.Name }}'
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
component: addon
|
||||||
|
release: '{{ .Release.Name }}'
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 7000
|
||||||
|
targetPort: 7000
|
||||||
100
deployment/k8s/values.yaml
Normal file
100
deployment/k8s/values.yaml
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
knightcrawler:
|
||||||
|
debug: false
|
||||||
|
globalImageTagOverride: ""
|
||||||
|
addon:
|
||||||
|
image: "gabisonfire/knightcrawler-addon"
|
||||||
|
tag: "2.0.17"
|
||||||
|
replicas: 1
|
||||||
|
consumer:
|
||||||
|
image: "gabisonfire/knightcrawler-consumer"
|
||||||
|
tag: "2.0.17"
|
||||||
|
replicas: 1
|
||||||
|
metadata:
|
||||||
|
image: "gabisonfire/knightcrawler-metadata"
|
||||||
|
tag: "2.0.17"
|
||||||
|
replicas: 1
|
||||||
|
migrator:
|
||||||
|
image: "gabisonfire/knightcrawler-migrator"
|
||||||
|
tag: "2.0.17"
|
||||||
|
replicas: 1
|
||||||
|
debridcollector:
|
||||||
|
image: "gabisonfire/knightcrawler-debrid-collector"
|
||||||
|
tag: "2.0.17"
|
||||||
|
enabled: true
|
||||||
|
replicas: 1
|
||||||
|
qbitcollector:
|
||||||
|
image: "gabisonfire/knightcrawler-qbit-collector"
|
||||||
|
tag: "2.0.17"
|
||||||
|
enabled: false
|
||||||
|
replicas: 1
|
||||||
|
producer:
|
||||||
|
image: "gabisonfire/knightcrawler-producer"
|
||||||
|
tag: "2.0.17"
|
||||||
|
replicas: 1
|
||||||
|
|
||||||
|
infrastructure:
|
||||||
|
lavinmq:
|
||||||
|
image: "cloudamqp/lavinmq"
|
||||||
|
tag: "latest"
|
||||||
|
enabled: true
|
||||||
|
postgres:
|
||||||
|
image: "postgres"
|
||||||
|
tag: "latest"
|
||||||
|
enabled: true
|
||||||
|
redis:
|
||||||
|
image: "redis/redis-stack-server"
|
||||||
|
tag: "latest"
|
||||||
|
enabled: true
|
||||||
|
qbittorrent:
|
||||||
|
image: "lscr.io/linuxserver/qbittorrent"
|
||||||
|
tag: "latest"
|
||||||
|
|
||||||
|
environment:
|
||||||
|
redis:
|
||||||
|
external: false
|
||||||
|
host: ""
|
||||||
|
port: "6379"
|
||||||
|
extra: "abortConnect=false,allowAdmin=true"
|
||||||
|
postgres:
|
||||||
|
external: false
|
||||||
|
host: ""
|
||||||
|
port: "5432"
|
||||||
|
dbName: "knightcrawler"
|
||||||
|
user: "postgres"
|
||||||
|
password: "postgres"
|
||||||
|
lavinmq:
|
||||||
|
external: false
|
||||||
|
host: ""
|
||||||
|
user: "guest"
|
||||||
|
password: "guest"
|
||||||
|
qbitcollector:
|
||||||
|
qbitHost: "http://qbittorrent:8080"
|
||||||
|
trackersUrl: "https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all_http.txt"
|
||||||
|
debridcollector:
|
||||||
|
realDebridApiKey: ""
|
||||||
|
producer:
|
||||||
|
githubPat: ""
|
||||||
|
queueName: "ingested"
|
||||||
|
durable: true
|
||||||
|
maxPublishBatchSize: 500
|
||||||
|
maxQueueSize: 0
|
||||||
|
publishIntervalSeconds: 10
|
||||||
|
metadata:
|
||||||
|
insertBatchSize: 50000
|
||||||
|
qbittorrent:
|
||||||
|
pgid: "1000"
|
||||||
|
puid: "1000"
|
||||||
|
torrentingPort: "6881"
|
||||||
|
webuiPort: "8080"
|
||||||
|
|
||||||
|
persistence:
|
||||||
|
storageClassName: ""
|
||||||
|
redis:
|
||||||
|
capacity: 1Gi
|
||||||
|
postgres:
|
||||||
|
capacity: 1Gi
|
||||||
|
lavinmq:
|
||||||
|
capacity: 1Gi
|
||||||
|
|
||||||
|
shared:
|
||||||
|
timezone: "London/Europe"
|
||||||
Reference in New Issue
Block a user