diff --git a/kubernetes/apps/databases/cloudnative-pg/app/helmrelease.yaml b/kubernetes/apps/databases/cloudnative-pg/app/helmrelease.yaml new file mode 100644 index 00000000..df9852f6 --- /dev/null +++ b/kubernetes/apps/databases/cloudnative-pg/app/helmrelease.yaml @@ -0,0 +1,32 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/helm.toolkit.fluxcd.io/helmrelease_v2.json +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cloudnative-pg +spec: + interval: 30m + chart: + spec: + # renovate: registryUrl=https://cloudnative-pg.github.io/charts + chart: cloudnative-pg + version: 0.22.1 + sourceRef: + kind: HelmRepository + name: cloudnative-pg + namespace: flux-system + install: + remediation: + retries: 3 + upgrade: + cleanupOnFail: true + remediation: + strategy: rollback + retries: 3 + values: + crds: + create: true + monitoring: + podMonitorEnabled: false + grafanaDashboard: + create: true diff --git a/kubernetes/apps/databases/cloudnative-pg/app/kustomization.yaml b/kubernetes/apps/databases/cloudnative-pg/app/kustomization.yaml new file mode 100644 index 00000000..17cbc72b --- /dev/null +++ b/kubernetes/apps/databases/cloudnative-pg/app/kustomization.yaml @@ -0,0 +1,6 @@ +--- +# yaml-language-server: $schema=https://json.schemastore.org/kustomization +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./helmrelease.yaml diff --git a/kubernetes/apps/databases/cloudnative-pg/cluster/cluster.yaml b/kubernetes/apps/databases/cloudnative-pg/cluster/cluster.yaml new file mode 100644 index 00000000..d6207e3c --- /dev/null +++ b/kubernetes/apps/databases/cloudnative-pg/cluster/cluster.yaml @@ -0,0 +1,87 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/postgresql.cnpg.io/cluster_v1.json +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: postgres +spec: + instances: 3 + imageName: ghcr.io/cloudnative-pg/postgresql:16.5-1 + primaryUpdateStrategy: unsupervised + storage: + size: 20Gi + storageClass: cifs-database + superuserSecret: + name: cloudnative-pg + enableSuperuserAccess: true + postgresql: + parameters: + max_connections: "600" + max_slot_wal_keep_size: 10GB + shared_buffers: 512MB + nodeMaintenanceWindow: + inProgress: false + reusePVC: true + resources: + requests: + cpu: 500m + memory: 2Gi + limits: + cpu: 1 + memory: 4Gi + monitoring: + enablePodMonitor: true + # backup: + # retentionPolicy: 30d + # barmanObjectStore: &barmanObjectStore + # data: + # compression: bzip2 + # wal: + # compression: bzip2 + # maxParallel: 8 + # destinationPath: "s3://cloudnative-pg-v1" + # endpointURL: "https://${SECRET_QNAP_HOSTNAME}:8010" + # # Note: serverName version needs to be incremented or changed + # # when recovering from an existing cnpg cluster + # serverName: ¤tCluster postgres-v2 + # s3Credentials: + # accessKeyId: + # name: cloudnative-pg + # key: s3-key-id + # secretAccessKey: + # name: cloudnative-pg + # key: s3-secret-key + # # Note: externalClusters is needed when recovering from an existing cnpg cluster + # externalClusters: + # # s3 instance recovery + # - name: &previousCluster postgres-v1 + # barmanObjectStore: + # <<: *barmanObjectStore + # serverName: *previousCluster + # running instance + #- name: postgres + # connectionParameters: + # host: 10.1.0.23 + # user: postgres + # dbname: postgres + # sslmode: require + # password: + # name: cloudnative-pg + # key: password + + # Note: previousCluster needs to be set to the name of the previous + # cluster when recovering from an existing cnpg cluster + bootstrap: + # # s3 instance recovery + # recovery: + # source: *previousCluster + # recover from another running instance + initdb: {} + # import: + # type: monolith + # databases: + # - "*" + # roles: + # - "*" + # source: + # externalCluster: postgres diff --git a/kubernetes/apps/databases/cloudnative-pg/cluster/externalsecret.yaml b/kubernetes/apps/databases/cloudnative-pg/cluster/externalsecret.yaml new file mode 100644 index 00000000..edf6694d --- /dev/null +++ b/kubernetes/apps/databases/cloudnative-pg/cluster/externalsecret.yaml @@ -0,0 +1,24 @@ +--- +# 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 cloudnative-pg +spec: + secretStoreRef: + kind: ClusterSecretStore + name: bitwarden-secrets-manager + target: + name: *name + template: + engineVersion: v2 + data: + username: "{{ .POSTGRES_ADMIN }}" + password: "{{ .POSTGRES_ADMIN_PASS }}" + s3-key-id: "{{ .S3_KEY_ID }}" + s3-secret-key: "{{ .S3_SECRET_KEY }}" + dataFrom: + - extract: + key: postgres + - extract: + key: qnap diff --git a/kubernetes/apps/databases/cloudnative-pg/cluster/kustomization.yaml b/kubernetes/apps/databases/cloudnative-pg/cluster/kustomization.yaml new file mode 100644 index 00000000..658ffa7a --- /dev/null +++ b/kubernetes/apps/databases/cloudnative-pg/cluster/kustomization.yaml @@ -0,0 +1,11 @@ +--- +# yaml-language-server: $schema=https://json.schemastore.org/kustomization +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./externalsecret.yaml + - ./cluster.yaml + # - ./gatus.yaml + - ./prometheusrule.yaml + - ./scheduledbackup.yaml + - ./service.yaml diff --git a/kubernetes/apps/databases/cloudnative-pg/cluster/prometheusrule.yaml b/kubernetes/apps/databases/cloudnative-pg/cluster/prometheusrule.yaml new file mode 100644 index 00000000..9c1d6a8d --- /dev/null +++ b/kubernetes/apps/databases/cloudnative-pg/cluster/prometheusrule.yaml @@ -0,0 +1,67 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/monitoring.coreos.com/prometheusrule_v1.json +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: cloudnative-pg-rules + labels: + prometheus: k8s + role: alert-rules +spec: + groups: + - name: cloudnative-pg.rules + rules: + - alert: LongRunningTransaction + annotations: + description: Pod {{ $labels.pod }} is taking more than 5 minutes (300 seconds) for a query. + summary: A query is taking longer than 5 minutes. + expr: |- + cnpg_backends_max_tx_duration_seconds > 300 + for: 1m + labels: + severity: warning + - alert: BackendsWaiting + annotations: + description: Pod {{ $labels.pod }} has been waiting for longer than 5 minutes + summary: If a backend is waiting for longer than 5 minutes + expr: |- + cnpg_backends_waiting_total > 300 + for: 1m + labels: + severity: warning + - alert: PGDatabase + annotations: + description: Over 150,000,000 transactions from frozen xid on pod {{ $labels.pod }} + summary: Number of transactions from the frozen XID to the current one + expr: |- + cnpg_pg_database_xid_age > 150000000 + for: 1m + labels: + severity: warning + - alert: PGReplication + annotations: + description: Standby is lagging behind by over 300 seconds (5 minutes) + summary: The standby is lagging behind the primary + expr: |- + cnpg_pg_replication_lag > 300 + for: 1m + labels: + severity: warning + - alert: LastFailedArchiveTime + annotations: + description: Archiving failed for {{ $labels.pod }} + summary: Checks the last time archiving failed. Will be < 0 when it has not failed. + expr: |- + (cnpg_pg_stat_archiver_last_failed_time - cnpg_pg_stat_archiver_last_archived_time) > 1 + for: 1m + labels: + severity: warning + - alert: DatabaseDeadlockConflicts + annotations: + description: There are over 10 deadlock conflicts in {{ $labels.pod }} + summary: Checks the number of database conflicts + expr: |- + cnpg_pg_stat_database_deadlocks > 10 + for: 1m + labels: + severity: warning diff --git a/kubernetes/apps/databases/cloudnative-pg/cluster/schedulebackup.yaml b/kubernetes/apps/databases/cloudnative-pg/cluster/schedulebackup.yaml new file mode 100644 index 00000000..ca346fc1 --- /dev/null +++ b/kubernetes/apps/databases/cloudnative-pg/cluster/schedulebackup.yaml @@ -0,0 +1,12 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/postgresql.cnpg.io/scheduledbackup_v1.json +apiVersion: postgresql.cnpg.io/v1 +kind: ScheduledBackup +metadata: + name: postgres +spec: + schedule: "@daily" + immediate: true + backupOwnerReference: self + cluster: + name: postgres diff --git a/kubernetes/apps/databases/cloudnative-pg/cluster/service.yaml b/kubernetes/apps/databases/cloudnative-pg/cluster/service.yaml new file mode 100644 index 00000000..e8fda007 --- /dev/null +++ b/kubernetes/apps/databases/cloudnative-pg/cluster/service.yaml @@ -0,0 +1,68 @@ +--- +# yaml-language-server: $schema=https://kubernetesjsonschema.dev/v1.18.1-standalone-strict/service-v1.json +apiVersion: v1 +kind: Service +metadata: + name: postgres-lb + annotations: + external-dns.alpha.kubernetes.io/hostname: postgres.${SECRET_INTERNAL_DOMAIN} + io.cilium/lb-ipam-ips: "${SVC_POSTGRES_ADDR}" +spec: + type: LoadBalancer + ports: + - name: postgres + port: 5432 + protocol: TCP + targetPort: 5432 + selector: + cnpg.io/cluster: postgres + role: primary +--- +# yaml-language-server: $schema=https://kubernetesjsonschema.dev/v1.18.1-standalone-strict/service-v1.json +apiVersion: v1 +kind: Service +metadata: + name: postgres-r +spec: + type: ClusterIP + ports: + - name: postgres + port: 5432 + protocol: TCP + targetPort: 5432 + selector: + cnpg.io/cluster: postgres + cnpg.io/podRole: instance +--- +# yaml-language-server: $schema=https://kubernetesjsonschema.dev/v1.18.1-standalone-strict/service-v1.json +apiVersion: v1 +kind: Service +metadata: + name: postgres-ro +spec: + type: ClusterIP + ports: + - name: postgres + port: 5432 + protocol: TCP + targetPort: 5432 + selector: + cnpg.io/cluster: postgres + role: replica +--- +# yaml-language-server: $schema=https://kubernetesjsonschema.dev/v1.18.1-standalone-strict/service-v1.json +apiVersion: v1 +kind: Service +metadata: + name: postgres-rw +spec: + type: ClusterIP + ports: + - name: postgres + port: 5432 + protocol: TCP + targetPort: 5432 + selector: + cnpg.io/cluster: postgres + role: primary + sessionAffinity: None diff --git a/kubernetes/apps/databases/cloudnative-pg/ks.yaml b/kubernetes/apps/databases/cloudnative-pg/ks.yaml new file mode 100644 index 00000000..34c5a94d --- /dev/null +++ b/kubernetes/apps/databases/cloudnative-pg/ks.yaml @@ -0,0 +1,47 @@ +--- +# 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 cloudnative-pg + namespace: flux-system +spec: + targetNamespace: databases + commonMetadata: + labels: + app.kubernetes.io/name: *app + dependsOn: + - name: external-secrets-stores + - name: openebs-hostpath + path: ./kubernetes/apps/databases/cloudnative-pg/app + prune: true + sourceRef: + kind: GitRepository + name: home-kubernetes + wait: true + interval: 30m + retryInterval: 1m + timeout: 5m +--- +# 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 cloudnative-pg-cluster + namespace: flux-system +spec: + targetNamespace: databases + commonMetadata: + labels: + app.kubernetes.io/name: *app + dependsOn: + - name: cloudnative-pg + path: ./kubernetes/apps/databases/cloudnative-pg/cluster + prune: true + sourceRef: + kind: GitRepository + name: home-kubernetes + wait: true + interval: 30m + retryInterval: 1m + timeout: 5m diff --git a/kubernetes/apps/databases/kustomization.yaml b/kubernetes/apps/databases/kustomization.yaml new file mode 100644 index 00000000..6ddd3220 --- /dev/null +++ b/kubernetes/apps/databases/kustomization.yaml @@ -0,0 +1,8 @@ +--- +# yaml-language-server: $schema=https://json.schemastore.org/kustomization +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./namespace.yaml + - ./cloudnative-pg/ks.yaml + - ./redis/ks.yaml diff --git a/kubernetes/apps/databases/namespace.yaml b/kubernetes/apps/databases/namespace.yaml new file mode 100644 index 00000000..77133be9 --- /dev/null +++ b/kubernetes/apps/databases/namespace.yaml @@ -0,0 +1,38 @@ +--- +# yaml-language-server: $schema=https://kubernetesjsonschema.dev/v1.18.1-standalone-strict/namespace-v1.json +apiVersion: v1 +kind: Namespace +metadata: + name: databases + labels: + kustomize.toolkit.fluxcd.io/prune: disabled +# --- +# # yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/notification.toolkit.fluxcd.io/provider_v1beta3.json +# apiVersion: notification.toolkit.fluxcd.io/v1beta3 +# kind: Provider +# metadata: +# name: alert-manager +# namespace: databases +# spec: +# type: alertmanager +# address: http://alertmanager-operated.observability.svc.cluster.local:9093/api/v2/alerts/ +# --- +# # yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/notification.toolkit.fluxcd.io/alert_v1beta3.json +# apiVersion: notification.toolkit.fluxcd.io/v1beta3 +# kind: Alert +# metadata: +# name: alert-manager +# namespace: databases +# spec: +# providerRef: +# name: alert-manager +# eventSeverity: error +# eventSources: +# - kind: HelmRelease +# name: "*" +# exclusionList: +# - "error.*lookup github\\.com" +# - "error.*lookup raw\\.githubusercontent\\.com" +# - "dial.*tcp.*timeout" +# - "waiting.*socket" +# suspend: false diff --git a/kubernetes/apps/databases/redis/app/helmrelease.yaml b/kubernetes/apps/databases/redis/app/helmrelease.yaml new file mode 100644 index 00000000..f81fe4b5 --- /dev/null +++ b/kubernetes/apps/databases/redis/app/helmrelease.yaml @@ -0,0 +1,47 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/helm.toolkit.fluxcd.io/helmrelease_v2.json +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: &app redis +spec: + interval: 30m + chart: + spec: + chart: *app + version: 20.2.1 + sourceRef: + kind: HelmRepository + name: bitnami + namespace: flux-system + install: + remediation: + retries: 3 + upgrade: + cleanupOnFail: true + remediation: + strategy: rollback + retries: 3 + values: + auth: + enabled: false + sentinel: false + master: + persistence: + enabled: false + replica: + persistence: + enabled: false + sentinel: + enabled: true + masterSet: redis-master + getMasterTimeout: 10 + startupProbe: + failureThreshold: 2 + persistence: + enabled: false + metrics: + enabled: true + serviceMonitor: + enabled: true + interval: 1m diff --git a/kubernetes/apps/databases/redis/app/kustomization.yaml b/kubernetes/apps/databases/redis/app/kustomization.yaml new file mode 100644 index 00000000..e24fa2a1 --- /dev/null +++ b/kubernetes/apps/databases/redis/app/kustomization.yaml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://json.schemastore.org/kustomization +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: databases +resources: + - ./helmrelease.yaml diff --git a/kubernetes/apps/databases/redis/ks.yaml b/kubernetes/apps/databases/redis/ks.yaml new file mode 100644 index 00000000..b65184cd --- /dev/null +++ b/kubernetes/apps/databases/redis/ks.yaml @@ -0,0 +1,24 @@ +--- +# 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 redis + namespace: flux-system +spec: + targetNamespace: databases + commonMetadata: + labels: + app.kubernetes.io/name: *app + path: ./kubernetes/apps/databases/redis/app + prune: true + sourceRef: + kind: GitRepository + name: home-kubernetes + wait: true + interval: 30m + retryInterval: 1m + timeout: 5m + postBuild: + substitute: + APP: *app diff --git a/kubernetes/apps/downloaders/cifs-pvcs/kustomization.yaml b/kubernetes/apps/downloaders/cifs-pvcs/kustomization.yaml new file mode 100644 index 00000000..fe873f32 --- /dev/null +++ b/kubernetes/apps/downloaders/cifs-pvcs/kustomization.yaml @@ -0,0 +1,13 @@ +--- +# yaml-language-server: $schema=https://json.schemastore.org/kustomization +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ../../../templates/csi-driver-smb/claims/cifs-applications.yaml + # - ../../../templates/csi-driver-smb/claims/cifs-books.yaml + - ../../../templates/csi-driver-smb/claims/cifs-downloads.yaml + # - ../../../templates/csi-driver-smb/claims/cifs-games.yaml + # - ../../../templates/csi-driver-smb/claims/cifs-misc.yaml + - ../../../templates/csi-driver-smb/claims/cifs-movies.yaml + # - ../../../templates/csi-driver-smb/claims/cifs-music.yaml + - ../../../templates/csi-driver-smb/claims/cifs-tv.yaml diff --git a/kubernetes/apps/downloaders/radarr/ks.yaml b/kubernetes/apps/downloaders/radarr/ks.yaml new file mode 100644 index 00000000..20779433 --- /dev/null +++ b/kubernetes/apps/downloaders/radarr/ks.yaml @@ -0,0 +1,28 @@ +--- +# 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 radarr + namespace: flux-system +spec: + targetNamespace: downloads + commonMetadata: + labels: + app.kubernetes.io/name: *app + dependsOn: + - name: cloudnative-pg-cluster + - name: downloads-cifs-pvcs + - name: volsync + path: ./kubernetes/apps/downloads/radarr/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/storage/csi-driver-smb/storage-classes/cifs-database.yaml b/kubernetes/apps/storage/csi-driver-smb/storage-classes/cifs-database.yaml new file mode 100644 index 00000000..9a32b681 --- /dev/null +++ b/kubernetes/apps/storage/csi-driver-smb/storage-classes/cifs-database.yaml @@ -0,0 +1,10 @@ +--- +# yaml-language-server: $schema=https://kubernetesjsonschema.dev/v1.18.1-standalone-strict/storageclass.json +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: "cifs-database" +provisioner: smb.csi.k8s.io +parameters: + source: "//${SECRET_UNRAID_HOSTNAME}/k3s/downloads" + diff --git a/kubernetes/apps/storage/csi-driver-smb/storage-classes/cifs-downloads.yaml b/kubernetes/apps/storage/csi-driver-smb/storage-classes/cifs-downloads.yaml new file mode 100644 index 00000000..9505f397 --- /dev/null +++ b/kubernetes/apps/storage/csi-driver-smb/storage-classes/cifs-downloads.yaml @@ -0,0 +1,10 @@ +--- +# yaml-language-server: $schema=https://kubernetesjsonschema.dev/v1.18.1-standalone-strict/storageclass.json +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: "cifs-downloads" +provisioner: smb.csi.k8s.io +parameters: + source: "//${SECRET_UNRAID_HOSTNAME}/k3s/downloads" + diff --git a/kubernetes/apps/storage/csi-driver-smb/storage-classes/kustomization.yaml b/kubernetes/apps/storage/csi-driver-smb/storage-classes/kustomization.yaml index 77af9529..9a3c44c7 100644 --- a/kubernetes/apps/storage/csi-driver-smb/storage-classes/kustomization.yaml +++ b/kubernetes/apps/storage/csi-driver-smb/storage-classes/kustomization.yaml @@ -5,3 +5,6 @@ kind: Kustomization resources: - ./cifs-appdata.yaml - ./cifs-movies.yaml + - ./cifs-tv.yaml + - ./cifs-database.yaml + - ./cifs-downloads.yaml diff --git a/kubernetes/flux/repositories/helm/cloudnative-pg.yaml b/kubernetes/flux/repositories/helm/cloudnative-pg.yaml new file mode 100644 index 00000000..2dd52faa --- /dev/null +++ b/kubernetes/flux/repositories/helm/cloudnative-pg.yaml @@ -0,0 +1,10 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/source.toolkit.fluxcd.io/helmrepository_v1.json +apiVersion: source.toolkit.fluxcd.io/v1 +kind: HelmRepository +metadata: + name: cloudnative-pg + namespace: flux-system +spec: + interval: 1h + url: https://cloudnative-pg.github.io/charts diff --git a/kubernetes/flux/repositories/helm/kustomization.yaml b/kubernetes/flux/repositories/helm/kustomization.yaml index 9d047d9c..c4996bb3 100644 --- a/kubernetes/flux/repositories/helm/kustomization.yaml +++ b/kubernetes/flux/repositories/helm/kustomization.yaml @@ -17,3 +17,4 @@ resources: - ./ingress-nginx.yaml - ./k8s-gateway.yaml - ./csi-driver-smb.yaml + - ./cloudnative-pg.yaml diff --git a/kubernetes/templates/csi-driver-smb/claims/cifs-appdata.yaml b/kubernetes/templates/csi-driver-smb/claims/cifs-appdata.yaml new file mode 100644 index 00000000..ef295419 --- /dev/null +++ b/kubernetes/templates/csi-driver-smb/claims/cifs-appdata.yaml @@ -0,0 +1,18 @@ +--- +# yaml-language-server: $schema=https://kubernetesjsonschema.dev/v1.18.1-standalone-strict/persistentvolumeclaim.json +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: &name cifs-appdata + annotations: + volume.beta.kubernetes.io/storage-provisioner: smb.csi.k8s.io + volume.kubernetes.io/storage-provisioner: smb.csi.k8s.io + labels: + csi-driver-smb: "cifs-share" +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 1Ti + storageClassName: *name diff --git a/kubernetes/templates/csi-driver-smb/claims/cifs-database.yaml b/kubernetes/templates/csi-driver-smb/claims/cifs-database.yaml new file mode 100644 index 00000000..3ce70a98 --- /dev/null +++ b/kubernetes/templates/csi-driver-smb/claims/cifs-database.yaml @@ -0,0 +1,18 @@ +--- +# yaml-language-server: $schema=https://kubernetesjsonschema.dev/v1.18.1-standalone-strict/persistentvolumeclaim.json +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: &name cifs-database + annotations: + volume.beta.kubernetes.io/storage-provisioner: smb.csi.k8s.io + volume.kubernetes.io/storage-provisioner: smb.csi.k8s.io + labels: + csi-driver-smb: "cifs-share" +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 50Ti + storageClassName: *name diff --git a/kubernetes/templates/csi-driver-smb/claims/cifs-downloads.yaml b/kubernetes/templates/csi-driver-smb/claims/cifs-downloads.yaml new file mode 100644 index 00000000..0109ae0a --- /dev/null +++ b/kubernetes/templates/csi-driver-smb/claims/cifs-downloads.yaml @@ -0,0 +1,18 @@ +--- +# yaml-language-server: $schema=https://kubernetesjsonschema.dev/v1.18.1-standalone-strict/persistentvolumeclaim.json +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: &name cifs-downloads + annotations: + volume.beta.kubernetes.io/storage-provisioner: smb.csi.k8s.io + volume.kubernetes.io/storage-provisioner: smb.csi.k8s.io + labels: + csi-driver-smb: "cifs-share" +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 50Ti + storageClassName: *name diff --git a/kubernetes/templates/csi-driver-smb/claims/cifs-movies.yaml b/kubernetes/templates/csi-driver-smb/claims/cifs-movies.yaml new file mode 100644 index 00000000..e9e9e0f4 --- /dev/null +++ b/kubernetes/templates/csi-driver-smb/claims/cifs-movies.yaml @@ -0,0 +1,18 @@ +--- +# yaml-language-server: $schema=https://kubernetesjsonschema.dev/v1.18.1-standalone-strict/persistentvolumeclaim.json +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: &name cifs-movies + annotations: + volume.beta.kubernetes.io/storage-provisioner: smb.csi.k8s.io + volume.kubernetes.io/storage-provisioner: smb.csi.k8s.io + labels: + csi-driver-smb: "cifs-share" +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 50Ti + storageClassName: *name diff --git a/kubernetes/templates/csi-driver-smb/claims/cifs-tv.yaml b/kubernetes/templates/csi-driver-smb/claims/cifs-tv.yaml new file mode 100644 index 00000000..f2e726ee --- /dev/null +++ b/kubernetes/templates/csi-driver-smb/claims/cifs-tv.yaml @@ -0,0 +1,18 @@ +--- +# yaml-language-server: $schema=https://kubernetesjsonschema.dev/v1.18.1-standalone-strict/persistentvolumeclaim.json +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: &name cifs-tv + annotations: + volume.beta.kubernetes.io/storage-provisioner: smb.csi.k8s.io + volume.kubernetes.io/storage-provisioner: smb.csi.k8s.io + labels: + csi-driver-smb: "cifs-share" +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 50Ti + storageClassName: *name