From b0e92fbde99310bb7c6d0f6f3d2e963f68ebbc4c Mon Sep 17 00:00:00 2001 From: auricom <27022259+auricom@users.noreply.github.com> Date: Thu, 29 Dec 2022 18:57:15 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20changedetection?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/backups/kustomization.yaml | 7 ++ .../app/backups/replicationsource.yaml | 23 ++++++ .../app/backups/restic.sops.yaml | 34 +++++++++ .../changedetection/app/helmrelease.yaml | 73 +++++++++++++++++++ .../changedetection/app/kustomization.yaml | 11 +++ .../changedetection/app/patches/browser.yaml | 35 +++++++++ .../default/changedetection/app/volume.yaml | 17 +++++ .../apps/default/changedetection/ks.yaml | 26 +++++++ kubernetes/apps/default/kustomization.yaml | 1 + 9 files changed, 227 insertions(+) create mode 100644 kubernetes/apps/default/changedetection/app/backups/kustomization.yaml create mode 100644 kubernetes/apps/default/changedetection/app/backups/replicationsource.yaml create mode 100644 kubernetes/apps/default/changedetection/app/backups/restic.sops.yaml create mode 100644 kubernetes/apps/default/changedetection/app/helmrelease.yaml create mode 100644 kubernetes/apps/default/changedetection/app/kustomization.yaml create mode 100644 kubernetes/apps/default/changedetection/app/patches/browser.yaml create mode 100644 kubernetes/apps/default/changedetection/app/volume.yaml create mode 100644 kubernetes/apps/default/changedetection/ks.yaml diff --git a/kubernetes/apps/default/changedetection/app/backups/kustomization.yaml b/kubernetes/apps/default/changedetection/app/backups/kustomization.yaml new file mode 100644 index 000000000..57bca902d --- /dev/null +++ b/kubernetes/apps/default/changedetection/app/backups/kustomization.yaml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://json.schemastore.org/kustomization +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./replicationsource.yaml + - ./restic.sops.yaml diff --git a/kubernetes/apps/default/changedetection/app/backups/replicationsource.yaml b/kubernetes/apps/default/changedetection/app/backups/replicationsource.yaml new file mode 100644 index 000000000..ccfb60c47 --- /dev/null +++ b/kubernetes/apps/default/changedetection/app/backups/replicationsource.yaml @@ -0,0 +1,23 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/replicationsource_v1alpha1.json +apiVersion: volsync.backube/v1alpha1 +kind: ReplicationSource +metadata: + name: changedetection + namespace: default +spec: + sourcePVC: changedetection-config + trigger: + schedule: "0 0 * * *" + restic: + copyMethod: Snapshot + pruneIntervalDays: 10 + repository: changedetection-restic + cacheCapacity: 2Gi + volumeSnapshotClassName: csi-ceph-blockpool + storageClassName: rook-ceph-block + retain: + hourly: 0 + daily: 10 + weekly: 0 + monthly: 0 diff --git a/kubernetes/apps/default/changedetection/app/backups/restic.sops.yaml b/kubernetes/apps/default/changedetection/app/backups/restic.sops.yaml new file mode 100644 index 000000000..deb68e39e --- /dev/null +++ b/kubernetes/apps/default/changedetection/app/backups/restic.sops.yaml @@ -0,0 +1,34 @@ +apiVersion: v1 +kind: Secret +metadata: + name: changedetection-restic +type: Opaque +stringData: + #ENC[AES256_GCM,data:WTM0Lkqp+sxjbUgkNzAVZQnC5g==,iv:4y8R8GpLy2Ogh3Lt3v6ibVbJF7jy8K1BOGi+ONt7S5c=,tag:wRhEBfRNHp0PBvIjM60iSA==,type:comment] + RESTIC_REPOSITORY: ENC[AES256_GCM,data:HmPWvXXr22DmHh2XypxfFMIi32R15/Czlna0V+b6mUCY+cyO/jOfG+GqPen0Ygn2bzlSnw+1c/Yvgs7v+9yAfxc=,iv:kJ5KSpAv7Dh2tYx2UjVtC4rYRAGsyuJC1H3ii1btMWQ=,tag:7vKCtcIoVVVNq16j20M/og==,type:str] + #ENC[AES256_GCM,data:cRvGVeuDnEbJs01G+Und5ls1EgaC9Q2vj61IE/2R,iv:qSjv4bGEX9QWABhXgnCJsoj0p1kjgYaQwQX0Oyu9RHk=,tag:x8i1WXbAvdpC+Iv8pn/drw==,type:comment] + RESTIC_PASSWORD: ENC[AES256_GCM,data:6VI/lJQFZg6hu5r0SqNAKQAQGYY=,iv:UYRMnkHB4jsXcV1tyLDTAqh6dxsd18hYWsDoSpjJarA=,tag:d6hgK6LSgu7vZbLfquKcyA==,type:str] + #ENC[AES256_GCM,data:YIIHR5DwXv3YE9fFvNSAfrm47ZsshZMcY31LbaJ4gwXo0yOOHe6qDEc=,iv:axSMsvrIOkJFlErvw9fcAwLNSEWDh6mUU6dWZu6icIo=,tag:MDNlk43vcI9S4o6tMiWVmw==,type:comment] + #ENC[AES256_GCM,data:8Wspw6gPIPBsumfRS/5dlZrAQQqBJEDMgcpip4a3HCfHq8SeVDv4Gl0j3hyZqUsP5af8nN69Y/9bas7z1hnIERkrb8DqYg==,iv:WqCz9vBfg1JxUEpd97J37YztSW3HkcOHa6nIJI4VK8I=,tag:+LxnOzGidF39ojPKSOrVsg==,type:comment] + AWS_ACCESS_KEY_ID: ENC[AES256_GCM,data:I9vuuPEGS6A135zwKUNXvSIAjwk=,iv:dByy2WuuhO6OluWXYRwkdMutK33yKwOcWkR9hvY5bsg=,tag:xHU7Hbx+sxuZ9CRymA55JQ==,type:str] + AWS_SECRET_ACCESS_KEY: ENC[AES256_GCM,data:kRdbENGS1F32JzkvktYkbfhMGBSrUpFSfyCdIpJwLOc+/2TyHAMrxA==,iv:Q+UKNT9aRo+A0KWu/FiST/4bOQKTOBJKHhpP8JXD3ao=,tag:7VE8lx2QAdNutcUj5kMNNA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1hhurqwmfvl9m3vh3hk8urulfzcdsrep2ax2neazqt435yhpamu3qj20asg + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA4RE9wTDZVRlExcnVKYjVZ + THNtblNXbGlSUitoS0FYV2k3dlg3aWZEMWxjCmZETUFGSnR0c3JZU2FHNnFneHdB + TEdlYjJTcjNsSDQ0dmgvNWlnNWo4TWMKLS0tIGR2Q25heThUUGliY0ZicDNra1FN + dGppaVJiME1FQnkzdVJOeTZMcjhYWE0KBrGQAYun1Zs3oyHWQ8iGvmF4hheP3md4 + 3/Lc9CqEC+V1lT9On8ivEBethjt528vCyVMM5pLMRBEO6CMjlNhJ+g== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2022-12-29T17:55:52Z" + mac: ENC[AES256_GCM,data:Sa2goM30k4qdpk8sCpzvOGRqAkxsVHpHc4LDno/l4pWNalUa7ntmRtaO5IfpOrayOp4j2la20n9aNj9S436laMsXtno3ozi8Q93yBt4Nxc1/5CQRZDenkaYaqsKYgNbPLJ8z+Bxy8HAV0OGrrsE7R992SmGhBKIqzU39Eg0vtuU=,iv:2o9a3ARM0yyGycuMTNqiy6QfYC7wTyB37Ae5DLlWIpo=,tag:2kLCR7hhgkCFhJgZEm745g==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.7.3 diff --git a/kubernetes/apps/default/changedetection/app/helmrelease.yaml b/kubernetes/apps/default/changedetection/app/helmrelease.yaml new file mode 100644 index 000000000..2ea8a2c91 --- /dev/null +++ b/kubernetes/apps/default/changedetection/app/helmrelease.yaml @@ -0,0 +1,73 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/helmrelease_v2beta1.json +apiVersion: helm.toolkit.fluxcd.io/v2beta1 +kind: HelmRelease +metadata: + name: changedetection + namespace: default +spec: + interval: 15m + chart: + spec: + chart: app-template + version: 1.2.0 + sourceRef: + kind: HelmRepository + name: bjw-s + namespace: flux-system + maxHistory: 3 + install: + createNamespace: true + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + controller: + type: statefulset + image: + repository: ghcr.io/dgtlmoon/changedetection.io + tag: 0.40.0.4 + env: + TZ: ${TIMEZONE} + PORT: &port 5000 + USE_X_SETTINGS: 1 + PLAYWRIGHT_DRIVER_URL: ws://localhost:3000/?stealth=1&--disable-web-security=true&--user-data-dir=~/browserless-cache-123 + PUID: 1000 + PGID: 1000 + service: + main: + ports: + http: + port: *port + ingress: + main: + enabled: true + ingressClassName: nginx + annotations: + hajimari.io/icon: mdi:web-sync + hosts: + - host: &host "{{ .Release.Name }}.${SECRET_CLUSTER_DOMAIN}" + paths: + - path: / + pathType: Prefix + tls: + - hosts: + - *host + podSecurityContext: + runAsUser: 1000 + runAsGroup: 1000 + fsGroup: 1000 + fsGroupChangePolicy: "OnRootMismatch" + persistence: + config: + enabled: true + existingClaim: changedetection-config + mountPath: /datastore + resources: + requests: + cpu: 10m + memory: 100Mi + limits: + memory: 250Mi diff --git a/kubernetes/apps/default/changedetection/app/kustomization.yaml b/kubernetes/apps/default/changedetection/app/kustomization.yaml new file mode 100644 index 000000000..a6b665bec --- /dev/null +++ b/kubernetes/apps/default/changedetection/app/kustomization.yaml @@ -0,0 +1,11 @@ +--- +# yaml-language-server: $schema=https://json.schemastore.org/kustomization +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: default +resources: + - ./backups + - ./helmrelease.yaml + - ./volume.yaml +patchesStrategicMerge: + - ./patches/browser.yaml diff --git a/kubernetes/apps/default/changedetection/app/patches/browser.yaml b/kubernetes/apps/default/changedetection/app/patches/browser.yaml new file mode 100644 index 000000000..35f3f035c --- /dev/null +++ b/kubernetes/apps/default/changedetection/app/patches/browser.yaml @@ -0,0 +1,35 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/helmrelease_v2beta1.json +apiVersion: helm.toolkit.fluxcd.io/v2beta1 +kind: HelmRelease +metadata: + name: changedetection + namespace: default +spec: + values: + additionalContainers: + browser: + name: browser + image: docker.io/browserless/chrome:latest + imagePullPolicy: Always + env: + - name: SCREEN_WIDTH + value: "1920" + - name: SCREEN_HEIGHT + value: "1024" + - name: SCREEN_DEPTH + value: "16" + - name: ENABLE_DEBUGGER + value: "false" + - name: PREBOOT_CHROME + value: "true" + - name: CONNECTION_TIMEOUT + value: "300000" + - name: MAX_CONCURRENT_SESSIONS + value: "10" + - name: CHROME_REFRESH_TIME + value: "600000" + - name: DEFAULT_BLOCK_ADS + value: "true" + - name: DEFAULT_STEALTH + value: "true" diff --git a/kubernetes/apps/default/changedetection/app/volume.yaml b/kubernetes/apps/default/changedetection/app/volume.yaml new file mode 100644 index 000000000..e1430cb95 --- /dev/null +++ b/kubernetes/apps/default/changedetection/app/volume.yaml @@ -0,0 +1,17 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: changedetection-config + namespace: default + labels: + app.kubernetes.io/name: &name changedetection + app.kubernetes.io/instance: *name + snapshot.home.arpa/enabled: "true" +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: rook-ceph-block diff --git a/kubernetes/apps/default/changedetection/ks.yaml b/kubernetes/apps/default/changedetection/ks.yaml new file mode 100644 index 000000000..957130767 --- /dev/null +++ b/kubernetes/apps/default/changedetection/ks.yaml @@ -0,0 +1,26 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/kustomization_v1beta2.json +apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 +kind: Kustomization +metadata: + name: cluster-apps-changedetection + namespace: flux-system + labels: + substitution.flux.home.arpa/enabled: "true" +spec: + dependsOn: + - name: cluster-apps-rook-ceph-cluster + - name: cluster-apps-volsync-app + path: ./kubernetes/apps/default/changedetection/app + prune: true + sourceRef: + kind: GitRepository + name: home-ops-kubernetes + healthChecks: + - apiVersion: helm.toolkit.fluxcd.io/v2beta1 + kind: HelmRelease + name: changedetection + namespace: default + interval: 30m + retryInterval: 1m + timeout: 3m diff --git a/kubernetes/apps/default/kustomization.yaml b/kubernetes/apps/default/kustomization.yaml index 3048c9452..84df522d4 100644 --- a/kubernetes/apps/default/kustomization.yaml +++ b/kubernetes/apps/default/kustomization.yaml @@ -10,6 +10,7 @@ resources: - ./bazarr/ks.yaml - ./calibre/ks.yaml - ./calibre-web/ks.yaml + - ./changedetection/ks.yaml - ./cloudnative-pg/ks.yaml - ./drone/ks.yaml - ./emqx/ks.yaml