Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

migrate tautilli #3417

Merged
merged 2 commits into from
Jun 23, 2024
Merged

migrate tautilli #3417

merged 2 commits into from
Jun 23, 2024

Conversation

blackjid
Copy link
Owner

  • feat(media/tautulli): move from archive to migrate
  • feat(media/tautulli): migrate tautulli

@bot-x-mod
Copy link
Contributor

bot-x-mod bot commented Jun 23, 2024

--- kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: flux-system/tautulli

+++ kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: flux-system/tautulli

@@ -0,0 +1,43 @@

+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1
+kind: Kustomization
+metadata:
+  labels:
+    kustomize.toolkit.fluxcd.io/name: cluster-apps
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: tautulli
+  namespace: flux-system
+spec:
+  commonMetadata:
+    labels:
+      app.kubernetes.io/name: tautulli
+  decryption:
+    provider: sops
+    secretRef:
+      name: sops-age
+  interval: 30m
+  path: ./kubernetes/apps/media/tautulli/app
+  postBuild:
+    substitute:
+      APP: tautulli
+      VOLSYNC_CAPACITY: 5Gi
+    substituteFrom:
+    - kind: ConfigMap
+      name: cluster-settings
+    - kind: Secret
+      name: cluster-secrets
+    - kind: ConfigMap
+      name: cluster-user-settings
+      optional: true
+    - kind: Secret
+      name: cluster-user-secrets
+      optional: true
+  prune: true
+  retryInterval: 1m
+  sourceRef:
+    kind: GitRepository
+    name: home-kubernetes
+  targetNamespace: media
+  timeout: 5m
+  wait: false
+
--- kubernetes/apps/media/tautulli/app Kustomization: flux-system/tautulli PersistentVolumeClaim: media/tautulli-cache

+++ kubernetes/apps/media/tautulli/app Kustomization: flux-system/tautulli PersistentVolumeClaim: media/tautulli-cache

@@ -0,0 +1,18 @@

+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  labels:
+    app.kubernetes.io/name: tautulli
+    kustomize.toolkit.fluxcd.io/name: tautulli
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: tautulli-cache
+  namespace: media
+spec:
+  accessModes:
+  - ReadWriteOnce
+  resources:
+    requests:
+      storage: 15Gi
+  storageClassName: longhorn
+
--- kubernetes/apps/media/tautulli/app Kustomization: flux-system/tautulli HelmRelease: media/tautulli

+++ kubernetes/apps/media/tautulli/app Kustomization: flux-system/tautulli HelmRelease: media/tautulli

@@ -0,0 +1,130 @@

+---
+apiVersion: helm.toolkit.fluxcd.io/v2
+kind: HelmRelease
+metadata:
+  labels:
+    app.kubernetes.io/name: tautulli
+    kustomize.toolkit.fluxcd.io/name: tautulli
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: tautulli
+  namespace: media
+spec:
+  chart:
+    spec:
+      chart: app-template
+      sourceRef:
+        kind: HelmRepository
+        name: bjw-s
+        namespace: flux-system
+      version: 3.2.1
+  dependsOn:
+  - name: longhorn
+    namespace: longhorn-system
+  - name: volsync
+    namespace: volsync-system
+  install:
+    remediation:
+      retries: 3
+  interval: 30m
+  upgrade:
+    cleanupOnFail: true
+    remediation:
+      retries: 3
+      strategy: rollback
+  values:
+    controllers:
+      tautulli:
+        annotations:
+          reloader.stakater.com/auto: 'true'
+        containers:
+          app:
+            args:
+            - --config
+            - /config/config.ini
+            - --datadir
+            - /config
+            - --port
+            - '80'
+            command:
+            - /usr/local/bin/python
+            - Tautulli.py
+            env:
+              TZ: America/Santiago
+            image:
+              repository: ghcr.io/tautulli/tautulli
+              tag: v2.14.3@sha256:36d6a81d7d06c5aba752ce025d956a47f6008d6529f39b05ed2cf51cf22fe26b
+            probes:
+              liveness:
+                custom: true
+                enabled: true
+                spec:
+                  failureThreshold: 3
+                  httpGet:
+                    path: /status
+                    port: 80
+                  initialDelaySeconds: 0
+                  periodSeconds: 10
+                  timeoutSeconds: 1
+              readiness:
+                custom: true
+                enabled: true
+                spec:
+                  failureThreshold: 3
+                  httpGet:
+                    path: /status
+                    port: 80
+                  initialDelaySeconds: 0
+                  periodSeconds: 10
+                  timeoutSeconds: 1
+            resources:
+              limits:
+                memory: 1Gi
+              requests:
+                cpu: 10m
+            securityContext:
+              allowPrivilegeEscalation: false
+              capabilities:
+                drop:
+                - ALL
+              readOnlyRootFilesystem: true
+    defaultPodOptions:
+      securityContext:
+        fsGroup: 568
+        fsGroupChangePolicy: OnRootMismatch
+        runAsGroup: 568
+        runAsNonRoot: true
+        runAsUser: 568
+        seccompProfile:
+          type: RuntimeDefault
+    ingress:
+      app:
+        annotations:
+          external-dns.alpha.kubernetes.io/target: internal.donoso.family
+        className: internal
+        hosts:
+        - host: '{{ .Release.Name }}.donoso.family'
+          paths:
+          - path: /
+            service:
+              identifier: app
+              port: http
+    persistence:
+      cache:
+        existingClaim: tautulli-cache
+        globalMounts:
+        - path: /config/cache
+      config:
+        existingClaim: tautulli
+      logs:
+        globalMounts:
+        - path: /config/logs
+        type: emptyDir
+      tmp:
+        type: emptyDir
+    service:
+      app:
+        controller: tautulli
+        ports:
+          http:
+            port: 80
+
--- kubernetes/apps/media/tautulli/app Kustomization: flux-system/tautulli PersistentVolumeClaim: media/tautulli

+++ kubernetes/apps/media/tautulli/app Kustomization: flux-system/tautulli PersistentVolumeClaim: media/tautulli

@@ -0,0 +1,22 @@

+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  labels:
+    app.kubernetes.io/name: tautulli
+    kustomize.toolkit.fluxcd.io/name: tautulli
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: tautulli
+  namespace: media
+spec:
+  accessModes:
+  - ReadWriteOnce
+  dataSourceRef:
+    apiGroup: volsync.backube
+    kind: ReplicationDestination
+    name: tautulli-dst
+  resources:
+    requests:
+      storage: 5Gi
+  storageClassName: longhorn
+
--- kubernetes/apps/media/tautulli/app Kustomization: flux-system/tautulli ExternalSecret: media/tautulli-volsync

+++ kubernetes/apps/media/tautulli/app Kustomization: flux-system/tautulli ExternalSecret: media/tautulli-volsync

@@ -0,0 +1,29 @@

+---
+apiVersion: external-secrets.io/v1beta1
+kind: ExternalSecret
+metadata:
+  labels:
+    app.kubernetes.io/name: tautulli
+    kustomize.toolkit.fluxcd.io/name: tautulli
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: tautulli-volsync
+  namespace: media
+spec:
+  dataFrom:
+  - extract:
+      key: minio
+  - extract:
+      key: volsync-minio-template
+  secretStoreRef:
+    kind: ClusterSecretStore
+    name: onepassword-connect
+  target:
+    name: tautulli-volsync-secret
+    template:
+      data:
+        AWS_ACCESS_KEY_ID: '{{ .MINIO_ROOT_USER }}'
+        AWS_SECRET_ACCESS_KEY: '{{ .MINIO_ROOT_PASSWORD }}'
+        RESTIC_PASSWORD: '{{ .RESTIC_PASSWORD }}'
+        RESTIC_REPOSITORY: '{{ .REPOSITORY_TEMPLATE }}/tautulli'
+      engineVersion: v2
+
--- kubernetes/apps/media/tautulli/app Kustomization: flux-system/tautulli ReplicationSource: media/tautulli

+++ kubernetes/apps/media/tautulli/app Kustomization: flux-system/tautulli ReplicationSource: media/tautulli

@@ -0,0 +1,35 @@

+---
+apiVersion: volsync.backube/v1alpha1
+kind: ReplicationSource
+metadata:
+  labels:
+    app.kubernetes.io/name: tautulli
+    kustomize.toolkit.fluxcd.io/name: tautulli
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: tautulli
+  namespace: media
+spec:
+  restic:
+    accessModes:
+    - ReadWriteOnce
+    cacheAccessModes:
+    - ReadWriteOnce
+    cacheCapacity: 4Gi
+    cacheStorageClassName: longhorn-cache
+    copyMethod: Snapshot
+    moverSecurityContext:
+      fsGroup: 568
+      runAsGroup: 568
+      runAsUser: 568
+    pruneIntervalDays: 7
+    repository: tautulli-volsync-secret
+    retain:
+      daily: 7
+      hourly: 24
+      weekly: 5
+    storageClassName: longhorn-snapshot
+    volumeSnapshotClassName: longhorn-snapclass
+  sourcePVC: tautulli
+  trigger:
+    schedule: 0 * * * *
+
--- kubernetes/apps/media/tautulli/app Kustomization: flux-system/tautulli ReplicationDestination: media/tautulli-dst

+++ kubernetes/apps/media/tautulli/app Kustomization: flux-system/tautulli ReplicationDestination: media/tautulli-dst

@@ -0,0 +1,30 @@

+---
+apiVersion: volsync.backube/v1alpha1
+kind: ReplicationDestination
+metadata:
+  labels:
+    app.kubernetes.io/name: tautulli
+    kustomize.toolkit.fluxcd.io/name: tautulli
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: tautulli-dst
+  namespace: media
+spec:
+  restic:
+    accessModes:
+    - ReadWriteOnce
+    cacheAccessModes:
+    - ReadWriteOnce
+    cacheCapacity: 8Gi
+    cacheStorageClassName: longhorn-cache
+    capacity: 5Gi
+    copyMethod: Snapshot
+    moverSecurityContext:
+      fsGroup: 568
+      runAsGroup: 568
+      runAsUser: 568
+    repository: tautulli-volsync-secret
+    storageClassName: longhorn-snapshot
+    volumeSnapshotClassName: longhorn-snapclass
+  trigger:
+    manual: restore-once
+

@bot-x-mod
Copy link
Contributor

bot-x-mod bot commented Jun 23, 2024

--- HelmRelease: media/tautulli Service: media/tautulli

+++ HelmRelease: media/tautulli Service: media/tautulli

@@ -0,0 +1,22 @@

+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: tautulli
+  labels:
+    app.kubernetes.io/instance: tautulli
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: tautulli
+    app.kubernetes.io/service: tautulli
+spec:
+  type: ClusterIP
+  ports:
+  - port: 80
+    targetPort: 80
+    protocol: TCP
+    name: http
+  selector:
+    app.kubernetes.io/component: tautulli
+    app.kubernetes.io/instance: tautulli
+    app.kubernetes.io/name: tautulli
+
--- HelmRelease: media/tautulli Deployment: media/tautulli

+++ HelmRelease: media/tautulli Deployment: media/tautulli

@@ -0,0 +1,108 @@

+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: tautulli
+  labels:
+    app.kubernetes.io/component: tautulli
+    app.kubernetes.io/instance: tautulli
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: tautulli
+  annotations:
+    reloader.stakater.com/auto: 'true'
+spec:
+  revisionHistoryLimit: 3
+  replicas: 1
+  strategy:
+    type: Recreate
+  selector:
+    matchLabels:
+      app.kubernetes.io/component: tautulli
+      app.kubernetes.io/name: tautulli
+      app.kubernetes.io/instance: tautulli
+  template:
+    metadata:
+      labels:
+        app.kubernetes.io/component: tautulli
+        app.kubernetes.io/instance: tautulli
+        app.kubernetes.io/name: tautulli
+    spec:
+      enableServiceLinks: false
+      serviceAccountName: default
+      automountServiceAccountToken: true
+      securityContext:
+        fsGroup: 568
+        fsGroupChangePolicy: OnRootMismatch
+        runAsGroup: 568
+        runAsNonRoot: true
+        runAsUser: 568
+        seccompProfile:
+          type: RuntimeDefault
+      hostIPC: false
+      hostNetwork: false
+      hostPID: false
+      dnsPolicy: ClusterFirst
+      containers:
+      - args:
+        - --config
+        - /config/config.ini
+        - --datadir
+        - /config
+        - --port
+        - '80'
+        command:
+        - /usr/local/bin/python
+        - Tautulli.py
+        env:
+        - name: TZ
+          value: America/Santiago
+        image: ghcr.io/tautulli/tautulli:v2.14.3@sha256:36d6a81d7d06c5aba752ce025d956a47f6008d6529f39b05ed2cf51cf22fe26b
+        livenessProbe:
+          failureThreshold: 3
+          httpGet:
+            path: /status
+            port: 80
+          initialDelaySeconds: 0
+          periodSeconds: 10
+          timeoutSeconds: 1
+        name: app
+        readinessProbe:
+          failureThreshold: 3
+          httpGet:
+            path: /status
+            port: 80
+          initialDelaySeconds: 0
+          periodSeconds: 10
+          timeoutSeconds: 1
+        resources:
+          limits:
+            memory: 1Gi
+          requests:
+            cpu: 10m
+        securityContext:
+          allowPrivilegeEscalation: false
+          capabilities:
+            drop:
+            - ALL
+          readOnlyRootFilesystem: true
+        volumeMounts:
+        - mountPath: /config/cache
+          name: cache
+        - mountPath: /config
+          name: config
+        - mountPath: /config/logs
+          name: logs
+        - mountPath: /tmp
+          name: tmp
+      volumes:
+      - name: cache
+        persistentVolumeClaim:
+          claimName: tautulli-cache
+      - name: config
+        persistentVolumeClaim:
+          claimName: tautulli
+      - emptyDir: {}
+        name: logs
+      - emptyDir: {}
+        name: tmp
+
--- HelmRelease: media/tautulli Ingress: media/tautulli

+++ HelmRelease: media/tautulli Ingress: media/tautulli

@@ -0,0 +1,25 @@

+---
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+  name: tautulli
+  labels:
+    app.kubernetes.io/instance: tautulli
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: tautulli
+  annotations:
+    external-dns.alpha.kubernetes.io/target: internal.donoso.family
+spec:
+  ingressClassName: internal
+  rules:
+  - host: tautulli.donoso.family
+    http:
+      paths:
+      - path: /
+        pathType: Prefix
+        backend:
+          service:
+            name: tautulli
+            port:
+              number: 80
+

@blackjid blackjid merged commit e8199c4 into main Jun 23, 2024
4 of 5 checks passed
@blackjid blackjid deleted the migrate_tautilli branch June 23, 2024 17:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant