backube

This commit is contained in:
auricom
2022-12-26 14:05:34 +01:00
parent a6351b4a55
commit b4572bf19a
21 changed files with 365 additions and 2 deletions

View File

@@ -0,0 +1,10 @@
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/helmrepository_v1beta2.json
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: HelmRepository
metadata:
name: backube
namespace: flux-system
spec:
interval: 2h
url: https://backube.github.io/helm-charts/

View File

@@ -3,6 +3,7 @@
apiVersion: kustomize.config.k8s.io/v1beta1 apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization kind: Kustomization
resources: resources:
- ./backube.yaml
- ./bitnami.yaml - ./bitnami.yaml
- ./bjw-s.yaml - ./bjw-s.yaml
- ./cert-manager-webhook-ovh.yaml - ./cert-manager-webhook-ovh.yaml
@@ -21,6 +22,7 @@ resources:
- ./kyverno.yaml - ./kyverno.yaml
- ./metrics-server.yaml - ./metrics-server.yaml
- ./node-feature-discovery.yaml - ./node-feature-discovery.yaml
- ./piraeus.yaml
- ./postfinance.yaml - ./postfinance.yaml
- ./prometheus-community.yaml - ./prometheus-community.yaml
- ./rook-ceph.yaml - ./rook-ceph.yaml

View File

@@ -0,0 +1,10 @@
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/helmrepository_v1beta2.json
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: HelmRepository
metadata:
name: piraeus
namespace: flux-system
spec:
interval: 2h
url: https://piraeus.io/helm-charts/

View File

@@ -6,4 +6,6 @@ resources:
- ./kopia-web - ./kopia-web
- ./resilio-sync - ./resilio-sync
- ./smartctl-exporter - ./smartctl-exporter
- ./snapshot-controller/ks.yaml
- ./truecommand - ./truecommand
- ./volsync

View File

@@ -0,0 +1,68 @@
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/helmrelease_v2beta1.json
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: snapshot-controller
namespace: kube-system
spec:
interval: 15m
chart:
spec:
chart: snapshot-controller
version: 1.6.2
sourceRef:
kind: HelmRepository
name: piraeus
namespace: flux-system
install:
createNamespace: true
crds: CreateReplace
remediation:
retries: 3
upgrade:
crds: CreateReplace
remediation:
retries: 3
values:
replicaCount: 3
volumeSnapshotClasses:
- name: csi-ceph-blockpool
driver: rook-ceph.rbd.csi.ceph.com
annotations:
snapshot.storage.kubernetes.io/is-default-class: "true"
parameters:
clusterID: rook-ceph
csi.storage.k8s.io/snapshotter-secret-name: rook-csi-rbd-provisioner
csi.storage.k8s.io/snapshotter-secret-namespace: rook-ceph
deletionPolicy: Delete
serviceMonitor:
create: true
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/helmrelease_v2beta1.json
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: snapshot-validation-webhook
namespace: kube-system
spec:
interval: 15m
chart:
spec:
chart: snapshot-validation-webhook
version: 1.6.2
sourceRef:
kind: HelmRepository
name: piraeus
namespace: flux-system
install:
createNamespace: true
crds: Skip
remediation:
retries: 3
upgrade:
crds: Skip
remediation:
retries: 3
dependsOn:
- name: snapshot-controller

View File

@@ -0,0 +1,7 @@
---
# yaml-language-server: $schema=https://json.schemastore.org/kustomization
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kube-system
resources:
- ./helmrelease.yaml

View File

@@ -0,0 +1,27 @@
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/kustomization_v1beta2.json
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
kind: Kustomization
metadata:
name: cluster-apps-snapshot-controller
namespace: flux-system
labels:
substitution.flux.home.arpa/enabled: "true"
spec:
path: ./kubernetes/cluster-0/apps/storage/snapshot-controller/app
prune: true
sourceRef:
kind: GitRepository
name: home-ops
healthChecks:
- apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
name: snapshot-controller
namespace: kube-system
- apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
name: snapshot-validation-webhook
namespace: kube-system
interval: 30m
retryInterval: 1m
timeout: 3m

View File

@@ -0,0 +1,10 @@
---
# yaml-language-server: $schema=https://json.schemastore.org/kustomization
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
# Pre Flux-Kustomizations
- ./namespace.yaml
# Flux-Kustomizations
- ./snapscheduler/ks.yaml
- ./volsync/ks.yaml

View File

@@ -0,0 +1,7 @@
---
apiVersion: v1
kind: Namespace
metadata:
name: volsync
labels:
kustomize.toolkit.fluxcd.io/prune: disabled

View File

@@ -0,0 +1,28 @@
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/helmrelease_v2beta1.json
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: snapscheduler
namespace: volsync
spec:
interval: 15m
chart:
spec:
chart: snapscheduler
version: 3.2.0
sourceRef:
kind: HelmRepository
name: backube
namespace: flux-system
install:
createNamespace: true
remediation:
retries: 3
upgrade:
remediation:
retries: 3
values:
manageCRDs: true
metrics:
disableAuth: true

View File

@@ -0,0 +1,7 @@
---
# yaml-language-server: $schema=https://json.schemastore.org/kustomization
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: volsync
resources:
- ./helmrelease.yaml

View File

@@ -0,0 +1,46 @@
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/kustomization_v1beta2.json
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
kind: Kustomization
metadata:
name: cluster-apps-snapscheduler
namespace: flux-system
labels:
substitution.flux.home.arpa/enabled: "true"
spec:
dependsOn:
- name: cluster-apps-snapshot-controller
path: ./kubernetes/cluster-0/apps/storage/volsync/snapscheduler/app
prune: true
sourceRef:
kind: GitRepository
name: home-ops
healthChecks:
- apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
name: snapscheduler
namespace: volsync
interval: 30m
retryInterval: 1m
timeout: 3m
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/kustomization_v1beta2.json
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
kind: Kustomization
metadata:
name: cluster-apps-snapscheduler-schedules
namespace: flux-system
labels:
substitution.flux.home.arpa/enabled: "true"
spec:
dependsOn:
- name: cluster-apps-snapscheduler
path: ./kubernetes/cluster-0/apps/storage/volsync/snapscheduler/schedules
prune: true
sourceRef:
kind: GitRepository
name: home-ops
wait: true
interval: 30m
retryInterval: 1m
timeout: 3m

View File

@@ -0,0 +1,6 @@
---
# yaml-language-server: $schema=https://json.schemastore.org/kustomization
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ./snapschedule.yaml

View File

@@ -0,0 +1,17 @@
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/snapshotschedule_v1.json
apiVersion: snapscheduler.backube/v1
kind: SnapshotSchedule
metadata:
name: main
namespace: default
spec:
disabled: false
claimSelector:
matchLabels:
snapshot.home.arpa/enabled: "true"
retention:
expires: 48h
schedule: "@daily"
snapshotTemplate:
snapshotClassName: csi-ceph-blockpool

View File

@@ -0,0 +1,28 @@
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/helmrelease_v2beta1.json
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: volsync
namespace: volsync
spec:
interval: 15m
chart:
spec:
chart: volsync
version: 0.5.0
sourceRef:
kind: HelmRepository
name: backube
namespace: flux-system
install:
createNamespace: true
remediation:
retries: 3
upgrade:
remediation:
retries: 3
values:
manageCRDs: true
metrics:
disableAuth: true

View File

@@ -0,0 +1,8 @@
---
# yaml-language-server: $schema=https://json.schemastore.org/kustomization
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: volsync
resources:
- ./helmrelease.yaml
- ./prometheusrule.yaml

View File

@@ -0,0 +1,29 @@
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/prometheusrule_v1.json
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: volsync
namespace: volsync
spec:
groups:
- name: volsync.rules
rules:
- alert: VolSyncComponentAbsent
annotations:
summary: VolSync component has disappeared from Prometheus target discovery.
expr: |
absent(up{job=~".*volsync.*"} == 1)
for: 15m
labels:
severity: critical
- alert: VolSyncVolumeOutOfSync
annotations:
summary: >-
{{ $labels.obj_namespace }}/{{ $labels.obj_name }} volume
is out of sync.
expr: |
volsync_volume_out_of_sync == 1
for: 15m
labels:
severity: critical

View File

@@ -0,0 +1,25 @@
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/kustomization_v1beta2.json
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
kind: Kustomization
metadata:
name: cluster-apps-volsync-app
namespace: flux-system
labels:
substitution.flux.home.arpa/enabled: "true"
spec:
dependsOn:
- name: cluster-apps-snapshot-controller
path: ./kubernetes/cluster-0/apps/storage/volsync/volsync/app
prune: true
sourceRef:
kind: GitRepository
name: home-ops
healthChecks:
- apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
name: volsync
namespace: volsync
interval: 30m
retryInterval: 1m
timeout: 3m

View File

@@ -1,4 +1,5 @@
--- ---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/provider_v1beta2.json
apiVersion: notification.toolkit.fluxcd.io/v1beta2 apiVersion: notification.toolkit.fluxcd.io/v1beta2
kind: Provider kind: Provider
metadata: metadata:
@@ -10,7 +11,8 @@ spec:
secretRef: secretRef:
name: github-token name: github-token
--- ---
apiVersion: notification.toolkit.fluxcd.io/v1beta1 # yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/alert_v1beta2.json
apiVersion: notification.toolkit.fluxcd.io/v1beta2
kind: Alert kind: Alert
metadata: metadata:
name: github name: github

View File

@@ -1,5 +1,6 @@
--- ---
apiVersion: notification.toolkit.fluxcd.io/v1beta1 # yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/receiver_v1beta2.json
apiVersion: notification.toolkit.fluxcd.io/v1beta2
kind: Receiver kind: Receiver
metadata: metadata:
name: home-ops name: home-ops

View File

@@ -14,6 +14,7 @@ spec:
secretRef: secretRef:
name: github-deploy-key name: github-deploy-key
--- ---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/kustomization_v1beta2.json
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
kind: Kustomization kind: Kustomization
metadata: metadata:
@@ -28,6 +29,7 @@ spec:
kind: GitRepository kind: GitRepository
name: home-ops name: home-ops
--- ---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/kustomization_v1beta2.json
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
kind: Kustomization kind: Kustomization
metadata: metadata:
@@ -45,6 +47,7 @@ spec:
secretRef: secretRef:
name: sops-age name: sops-age
--- ---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/kustomization_v1beta2.json
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
kind: Kustomization kind: Kustomization
metadata: metadata:
@@ -71,6 +74,7 @@ spec:
- kind: Secret - kind: Secret
name: cluster-secrets name: cluster-secrets
--- ---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/kustomization_v1beta2.json
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
kind: Kustomization kind: Kustomization
metadata: metadata:
@@ -96,3 +100,22 @@ spec:
name: cluster-settings name: cluster-settings
- kind: Secret - kind: Secret
name: cluster-secrets name: cluster-secrets
patches:
- patch: |-
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
kind: Kustomization
metadata:
name: not-used
spec:
decryption:
provider: sops
secretRef:
name: sops-age
postBuild:
substituteFrom:
- kind: ConfigMap
name: cluster-settings
- kind: Secret
name: cluster-secrets
target:
labelSelector: substitution.flux.home.arpa/enabled=true