diff --git a/kubernetes/apps/downloads/prowlarr/app/externalsecret.yaml b/kubernetes/apps/downloads/prowlarr/app/externalsecret.yaml new file mode 100644 index 00000000..1486a7f2 --- /dev/null +++ b/kubernetes/apps/downloads/prowlarr/app/externalsecret.yaml @@ -0,0 +1,67 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/external-secrets.io/externalsecret_v1beta1.json +apiVersion: external-secrets.io/v1beta1 +kind: ExternalSecret +metadata: + name: &name prowlarr +spec: + target: + name: *name + deletionPolicy: Delete + template: + type: Opaque + data: + # App + PROWLARR__AUTH__APIKEY: "{{ .PROWLARR_API_KEY }}" + PROWLARR__POSTGRES__HOST: &dbHost postgres-rw.databases.svc.cluster.local + PROWLARR__POSTGRES__PORT: "5432" + PROWLARR__POSTGRES__USER: &dbUser "{{ .PROWLARR_POSTGRES_USER }}" + PROWLARR__POSTGRES__PASSWORD: &dbPass "{{ .PROWLARR_POSTGRES_PASSWORD }}" + PROWLARR__POSTGRES__MAINDB: &dbName prowlarr_main + # Postgres Init + INIT_POSTGRES_DBNAME: *dbName + INIT_POSTGRES_HOST: *dbHost + INIT_POSTGRES_USER: *dbUser + INIT_POSTGRES_PASS: *dbPass + INIT_POSTGRES_SUPER_PASS: "{{ .POSTGRES_ADMIN_PASS }}" + data: + - secretKey: PROWLARR_API_KEY + sourceRef: + storeRef: + name: bitwarden-login + kind: ClusterSecretStore + remoteRef: + key: &secretApiKey ae9d8486-9279-4790-ac34-64c8922bb414 + property: password + - secretKey: PROWLARR_POSTGRES_USER + sourceRef: + storeRef: + name: bitwarden-login + kind: ClusterSecretStore + remoteRef: + key: &secretDatabaseKey bce2ff77-66cd-47bd-a9e7-160c2d3bb616 + property: username + - secretKey: PROWLARR_POSTGRES_PASSWORD + sourceRef: + storeRef: + name: bitwarden-login + kind: ClusterSecretStore + remoteRef: + key: *secretDatabaseKey + property: password + - secretKey: POSTGRES_ADMIN_USER + sourceRef: + storeRef: + name: bitwarden-login + kind: ClusterSecretStore + remoteRef: + key: &secretAdminDatabaseKey 88217883-df53-4c96-aad7-f3b2142382de + property: username + - secretKey: POSTGRES_ADMIN_PASS + sourceRef: + storeRef: + name: bitwarden-login + kind: ClusterSecretStore + remoteRef: + key: *secretAdminDatabaseKey + property: password diff --git a/kubernetes/apps/downloads/prowlarr/app/helmrelease.yaml b/kubernetes/apps/downloads/prowlarr/app/helmrelease.yaml new file mode 100644 index 00000000..871af6ad --- /dev/null +++ b/kubernetes/apps/downloads/prowlarr/app/helmrelease.yaml @@ -0,0 +1,138 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/bjw-s/helm-charts/main/charts/other/app-template/schemas/helmrelease-helm-v2.schema.json +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: &app prowlarr +spec: + interval: 30m + chart: + spec: + chart: app-template + version: 3.5.1 + sourceRef: + kind: HelmRepository + name: bjw-s + namespace: flux-system + install: + remediation: + retries: 3 + upgrade: + cleanupOnFail: true + remediation: + strategy: rollback + retries: 3 + uninstall: + keepHistory: false + valuesFrom: + - kind: ConfigMap + name: authelia-ingress-hv + values: + controllers: + prowlarr: + annotations: + reloader.stakater.com/auto: "true" + initContainers: + init-db: + image: + repository: ghcr.io/onedr0p/postgres-init + tag: 16.4@sha256:e41c745b54485341e00efbd27556f0717623a119f0d5107e5ff831aa1322c76f + envFrom: &envFrom + - secretRef: + name: *app + containers: + app: + image: + repository: ghcr.io/onedr0p/prowlarr-develop + tag: 1.26.0@sha256:face4aa669a4eb68b041dcf73ed4848cfe8f673826ef3032398a5e267eb1eac0 + env: + TZ: "${TIMEZONE}" + PROWLARR__APP__INSTANCENAME: Prowlarr + PROWLARR__APP__THEME: dark + PROWLARR__AUTH__METHOD: External + PROWLARR__AUTH__REQUIRED: DisabledForLocalAddresses + PROWLARR__LOG__DBENABLED: "False" + PROWLARR__LOG__LEVEL: info + PROWLARR__SERVER__PORT: &port 80 + PROWLARR__UPDATE__BRANCH: develop + envFrom: *envFrom + probes: + liveness: &probes + enabled: true + custom: true + spec: + httpGet: + path: /ping + port: *port + initialDelaySeconds: 0 + periodSeconds: 10 + timeoutSeconds: 3 + failureThreshold: 5 + readiness: *probes + startup: + enabled: false + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + capabilities: { drop: [ "ALL" ] } + resources: + requests: + cpu: 10m + memory: 128Mi + limits: + memory: 512Mi + defaultPodOptions: + securityContext: + runAsNonRoot: true + runAsUser: 568 + runAsGroup: 568 + fsGroup: 568 + fsGroupChangePolicy: OnRootMismatch + seccompProfile: { type: RuntimeDefault } + service: + app: + controller: *app + ports: + http: + port: *port + ingress: + app: + enabled: true + className: internal + hosts: + - host: &host "{{ .Release.Name }}.k8s.home.arpa" + paths: + - path: / + pathType: Prefix + service: + identifier: app + port: http + tls: + - hosts: + - *host + secretName: "{{ .Release.Name }}-tls" + # app: + # className: internal + # annotations: + # external-dns.alpha.kubernetes.io/target: internal.${SECRET_INTERNAL_DOMAIN} + # # gethomepage.dev/enabled: "true" + # # gethomepage.dev/group: Downloads + # # gethomepage.dev/name: Prowlarr + # # gethomepage.dev/icon: prowlarr.png + # # gethomepage.dev/description: Torrent/NZB Indexer Management + # # gethomepage.dev/widget.type: prowlarr + # # gethomepage.dev/widget.url: http://prowlarr.downloads + # # gethomepage.dev/widget.key: "{{ `{{HOMEPAGE_VAR_PROWLARR_TOKEN}}` }}" + # # nginx.ingress.kubernetes.io/configuration-snippet: ${THEME_PARK_SNIPPET} + # hosts: + # - host: "{{ .Release.Name }}.${SECRET_INTERNAL_DOMAIN}" + # paths: + # - path: / + # service: + # identifier: app + # port: http + persistence: + config: + type: emptyDir + tmp: + type: emptyDir diff --git a/kubernetes/apps/downloads/prowlarr/app/kustomization.yaml b/kubernetes/apps/downloads/prowlarr/app/kustomization.yaml new file mode 100644 index 00000000..4fdb6edd --- /dev/null +++ b/kubernetes/apps/downloads/prowlarr/app/kustomization.yaml @@ -0,0 +1,8 @@ +--- +# yaml-language-server: $schema=https://json.schemastore.org/kustomization +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./externalsecret.yaml + - ./helmrelease.yaml + # - ../../../../templates/gatus/guarded diff --git a/kubernetes/apps/downloads/prowlarr/ks.yaml b/kubernetes/apps/downloads/prowlarr/ks.yaml new file mode 100644 index 00000000..19ce1ca1 --- /dev/null +++ b/kubernetes/apps/downloads/prowlarr/ks.yaml @@ -0,0 +1,27 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/kustomize.toolkit.fluxcd.io/kustomization_v1.json +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: &app prowlarr + namespace: flux-system +spec: + targetNamespace: downloads + commonMetadata: + labels: + app.kubernetes.io/name: *app + dependsOn: + - name: cloudnative-pg-cluster + - name: external-secrets + path: ./kubernetes/apps/downloads/prowlarr/app + prune: true + sourceRef: + kind: GitRepository + name: home-kubernetes + wait: false + interval: 30m + retryInterval: 1m + timeout: 5m + postBuild: + substitute: + APP: *app diff --git a/kubernetes/apps/downloads/radarr/app/helmrelease.yaml b/kubernetes/apps/downloads/radarr/app/helmrelease.yaml index 8e7ebfe9..b0381c9f 100644 --- a/kubernetes/apps/downloads/radarr/app/helmrelease.yaml +++ b/kubernetes/apps/downloads/radarr/app/helmrelease.yaml @@ -97,17 +97,6 @@ spec: app: enabled: true className: internal - # annotations: - # external-dns.alpha.kubernetes.io/target: internal.${SECRET_INTERNAL_DOMAIN} - # gethomepage.dev/enabled: "true" - # gethomepage.dev/group: Downloads - # gethomepage.dev/name: Radarr - # gethomepage.dev/icon: radarr.png - # gethomepage.dev/description: Movie Downloads - # gethomepage.dev/widget.type: radarr - # gethomepage.dev/widget.url: http://radarr.downloads - # gethomepage.dev/widget.key: "{{ `{{HOMEPAGE_VAR_RADARR_TOKEN}}` }}" - # nginx.ingress.kubernetes.io/configuration-snippet: ${THEME_PARK_SNIPPET} hosts: - host: &host "{{ .Release.Name }}.k8s.home.arpa" paths: @@ -120,6 +109,28 @@ spec: - hosts: - *host secretName: "{{ .Release.Name }}-tls" + # app: + # enabled: true + # className: internal + # annotations: + # external-dns.alpha.kubernetes.io/target: internal.${SECRET_INTERNAL_DOMAIN} + # # gethomepage.dev/enabled: "true" + # # gethomepage.dev/group: Downloads + # # gethomepage.dev/name: Radarr + # # gethomepage.dev/icon: radarr.png + # # gethomepage.dev/description: Movie Downloads + # # gethomepage.dev/widget.type: radarr + # # gethomepage.dev/widget.url: http://radarr.downloads + # # gethomepage.dev/widget.key: "{{ `{{HOMEPAGE_VAR_RADARR_TOKEN}}` }}" + # # nginx.ingress.kubernetes.io/configuration-snippet: ${THEME_PARK_SNIPPET} + # hosts: + # - host: &host "{{ .Release.Name }}.k8s.home.arpa" + # paths: + # - path: / + # pathType: Prefix + # service: + # identifier: app + # port: http persistence: config: existingClaim: cifs-appdata