diff --git a/charts/audiobookshelf/.helmignore b/charts/audiobookshelf/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/charts/audiobookshelf/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/audiobookshelf/Chart.lock b/charts/audiobookshelf/Chart.lock new file mode 100644 index 00000000..ec1fb642 --- /dev/null +++ b/charts/audiobookshelf/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: audiobookshelf + repository: oci://registry.gitlab.com/georgeraven/raven-helm-charts + version: 0.1.0 +digest: sha256:c3c97e01405734311c7d941a756b6313f940555412b4117d7b41a5e122f02481 +generated: "2025-06-10T21:22:41.977518778+01:00" diff --git a/charts/audiobookshelf/Chart.yaml b/charts/audiobookshelf/Chart.yaml new file mode 100644 index 00000000..965f0ae8 --- /dev/null +++ b/charts/audiobookshelf/Chart.yaml @@ -0,0 +1,11 @@ +apiVersion: v2 +name: audiobookshelf +description: A Helm chart for Kubernetes +type: application +version: 0.1.0 +appVersion: "1.16.0" + +dependencies: +- name: audiobookshelf + version: 0.1.0 + repository: "oci://registry.gitlab.com/georgeraven/raven-helm-charts" diff --git a/charts/audiobookshelf/README.md b/charts/audiobookshelf/README.md new file mode 100644 index 00000000..3469bcfb --- /dev/null +++ b/charts/audiobookshelf/README.md @@ -0,0 +1,35 @@ +# audiobookshelf + +![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.16.0](https://img.shields.io/badge/AppVersion-1.16.0-informational?style=flat-square) + +A Helm chart for Kubernetes + +## Requirements + +| Repository | Name | Version | +|------------|------|---------| +| oci://registry.gitlab.com/georgeraven/raven-helm-charts | audiobookshelf | 0.1.0 | + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| audiobookshelf.audiobookshelf.ingress.annotations."cert-manager.io/cluster-issuer" | string | `"aux-issuer"` | | +| audiobookshelf.audiobookshelf.ingress.className | string | `""` | | +| audiobookshelf.audiobookshelf.ingress.enabled | bool | `true` | | +| audiobookshelf.audiobookshelf.ingress.hosts[0].host | string | `"audiobookshelf.deepcypher.me"` | | +| audiobookshelf.audiobookshelf.ingress.hosts[0].paths[0].path | string | `"/"` | | +| audiobookshelf.audiobookshelf.ingress.hosts[0].paths[0].pathType | string | `"ImplementationSpecific"` | | +| audiobookshelf.audiobookshelf.ingress.tls[0].hosts[0] | string | `"audiobookshelf.deepcypher.me"` | | +| audiobookshelf.audiobookshelf.ingress.tls[0].secretName | string | `"audiobookshelf.deepcypher.me-tls"` | | +| audiobookshelf.audiobookshelf.persistence.enabled | bool | `true` | | +| audiobookshelf.audiobookshelf.persistence.size | string | `"8Gi"` | | +| environment.baseDomain | string | `"deepcypher.me"` | | +| environment.contact.email | string | `"noreply@deepcypher.me"` | | +| environment.contact.name | string | `"George Onoufriou"` | | +| environment.hardware | string | `"metal"` | | +| environment.location.name | string | `"unknown"` | | +| environment.mode | string | `"production"` | | +| environment.name | string | `"unknown"` | | +| environment.revision | string | `"main"` | | + diff --git a/charts/audiobookshelf/values.yaml b/charts/audiobookshelf/values.yaml new file mode 100644 index 00000000..917f45e9 --- /dev/null +++ b/charts/audiobookshelf/values.yaml @@ -0,0 +1,31 @@ +audiobookshelf: + audiobookshelf: + persistence: + enabled: true + size: 8Gi + ingress: + enabled: true + className: "" + annotations: + cert-manager.io/cluster-issuer: "aux-issuer" + hosts: + - host: audiobookshelf.deepcypher.me + paths: + - path: / + pathType: ImplementationSpecific + tls: + - secretName: audiobookshelf.deepcypher.me-tls + hosts: + - audiobookshelf.deepcypher.me + +environment: + name: unknown # not to be used for hard checks but to display to user + hardware: metal # to be used to enable on-prem specific features like ceph, cilium, etc + mode: production # to be used to configure backup movement and additional debugging features + revision: main # to be used to pull from different git branches + baseDomain: deepcypher.me # to be used to override default chart domains to configure environments + location: + name: unknown # not to be used for hard checks purely informational + contact: + name: George Onoufriou + email: noreply@deepcypher.me diff --git a/charts/infrastructure/templates/audiobookshelf.yaml b/charts/infrastructure/templates/audiobookshelf.yaml new file mode 100644 index 00000000..d9cd4cba --- /dev/null +++ b/charts/infrastructure/templates/audiobookshelf.yaml @@ -0,0 +1,75 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: audiobookshelf + namespace: argocd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + destination: + name: '' + namespace: audiobookshelf + server: 'https://kubernetes.default.svc' + source: + path: charts/audiobookshelf + repoURL: {{ .Values.global.repo }} + targetRevision: {{ .Values.environment.revision }} + helm: + values: | + {{- include "defaultEnvironment" . | indent 8 }} + {{- if eq .Values.environment.mode "staging" }} + {{- else if eq .Values.environment.mode "production" }} + {{- end }} + #project: audiobookshelf + project: default + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + - ApplyOutOfSyncOnly=true +--- +apiVersion: argoproj.io/v1alpha1 +kind: AppProject +metadata: + name: audiobookshelf + namespace: argocd + # Finalizer that ensures that project is not deleted until it is not referenced by any application + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + description: Infra-level project to isolate audiobookshelf + # Allow manifests to deploy from any Git repos + sourceRepos: + - '*' + # Only permit applications to deploy to the guestbook namespace in the same cluster + destinations: + - namespace: audiobookshelf + server: https://kubernetes.default.svc + # Deny all cluster-scoped resources from being created, except for Namespace + clusterResourceWhitelist: + - group: '' + kind: Namespace + # Allow all namespaced-scoped resources to be created, except for ResourceQuota, LimitRange, NetworkPolicy + namespaceResourceBlacklist: + - group: '' + kind: ResourceQuota + - group: '' + kind: LimitRange + #- group: '' + # kind: NetworkPolicy + # # Deny all namespaced-scoped resources from being created, except for Deployment and StatefulSet + # namespaceResourceWhitelist: + # - group: 'apps' + # kind: Deployment + # - group: 'apps' + # kind: StatefulSet + roles: + # A role which provides read-only access to all applications in the project + - name: read-only + description: Read-only privileges to audiobookshelf + policies: + - p, proj:my-project:read-only, applications, get, audiobookshelf/*, allow + groups: + - my-oidc-group