From 8034ee496d60637af403e8a5717fc9312b62ab89 Mon Sep 17 00:00:00 2001 From: Ales Lerch <13370338+axeII@users.noreply.github.com> Date: Mon, 9 Sep 2024 00:01:02 +0200 Subject: [PATCH] feat: adds volsync --- .../apps/volsync-system/kustomization.yaml | 7 +++++ kubernetes/apps/volsync-system/namespace.yaml | 7 +++++ .../snapshot-controller/app/helmrelease.yaml | 29 +++++++++++++++++++ .../app/kustomization.yaml | 5 ++++ .../snapshot-controller/ks.yaml | 20 +++++++++++++ .../volsync/app/helmrelease.yaml | 27 +++++++++++++++++ .../volsync/app/kustomization.yaml | 6 ++++ .../volsync/app/prometheusrule.yaml | 27 +++++++++++++++++ .../apps/volsync-system/volsync/ks.yaml | 22 ++++++++++++++ 9 files changed, 150 insertions(+) create mode 100644 kubernetes/apps/volsync-system/kustomization.yaml create mode 100644 kubernetes/apps/volsync-system/namespace.yaml create mode 100644 kubernetes/apps/volsync-system/snapshot-controller/app/helmrelease.yaml create mode 100644 kubernetes/apps/volsync-system/snapshot-controller/app/kustomization.yaml create mode 100644 kubernetes/apps/volsync-system/snapshot-controller/ks.yaml create mode 100644 kubernetes/apps/volsync-system/volsync/app/helmrelease.yaml create mode 100644 kubernetes/apps/volsync-system/volsync/app/kustomization.yaml create mode 100644 kubernetes/apps/volsync-system/volsync/app/prometheusrule.yaml create mode 100644 kubernetes/apps/volsync-system/volsync/ks.yaml diff --git a/kubernetes/apps/volsync-system/kustomization.yaml b/kubernetes/apps/volsync-system/kustomization.yaml new file mode 100644 index 000000000..a3a18c9c4 --- /dev/null +++ b/kubernetes/apps/volsync-system/kustomization.yaml @@ -0,0 +1,7 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./namespace.yaml + - ./snapshot-controller/ks.yaml + - ./volsync/ks.yaml diff --git a/kubernetes/apps/volsync-system/namespace.yaml b/kubernetes/apps/volsync-system/namespace.yaml new file mode 100644 index 000000000..10f3c084d --- /dev/null +++ b/kubernetes/apps/volsync-system/namespace.yaml @@ -0,0 +1,7 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: volsync-system + labels: + kustomize.toolkit.fluxcd.io/prune: disabled diff --git a/kubernetes/apps/volsync-system/snapshot-controller/app/helmrelease.yaml b/kubernetes/apps/volsync-system/snapshot-controller/app/helmrelease.yaml new file mode 100644 index 000000000..3e3ab85d7 --- /dev/null +++ b/kubernetes/apps/volsync-system/snapshot-controller/app/helmrelease.yaml @@ -0,0 +1,29 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: snapshot-controller +spec: + interval: 30m + chart: + spec: + chart: snapshot-controller + version: 3.0.6 + sourceRef: + kind: HelmRepository + name: piraeus-charts + namespace: flux-system + install: + crds: CreateReplace + remediation: + retries: 3 + upgrade: + cleanupOnFail: true + crds: CreateReplace + remediation: + strategy: rollback + retries: 3 + values: + controller: + serviceMonitor: + create: true diff --git a/kubernetes/apps/volsync-system/snapshot-controller/app/kustomization.yaml b/kubernetes/apps/volsync-system/snapshot-controller/app/kustomization.yaml new file mode 100644 index 000000000..5dd7baca7 --- /dev/null +++ b/kubernetes/apps/volsync-system/snapshot-controller/app/kustomization.yaml @@ -0,0 +1,5 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./helmrelease.yaml diff --git a/kubernetes/apps/volsync-system/snapshot-controller/ks.yaml b/kubernetes/apps/volsync-system/snapshot-controller/ks.yaml new file mode 100644 index 000000000..14e445a26 --- /dev/null +++ b/kubernetes/apps/volsync-system/snapshot-controller/ks.yaml @@ -0,0 +1,20 @@ +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: &app snapshot-controller + namespace: flux-system +spec: + targetNamespace: volsync-system + commonMetadata: + labels: + app.kubernetes.io/name: *app + path: ./kubernetes/apps/volsync-system/snapshot-controller/app + prune: true + sourceRef: + kind: GitRepository + name: k8s-gitops + wait: true + interval: 30m + retryInterval: 1m + timeout: 5m diff --git a/kubernetes/apps/volsync-system/volsync/app/helmrelease.yaml b/kubernetes/apps/volsync-system/volsync/app/helmrelease.yaml new file mode 100644 index 000000000..b37dfb9f7 --- /dev/null +++ b/kubernetes/apps/volsync-system/volsync/app/helmrelease.yaml @@ -0,0 +1,27 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: volsync +spec: + interval: 30m + chart: + spec: + chart: volsync + version: 0.10.0 + sourceRef: + kind: HelmRepository + name: backube-charts + namespace: flux-system + install: + remediation: + retries: 3 + upgrade: + cleanupOnFail: true + remediation: + strategy: rollback + retries: 3 + values: + manageCRDs: true + metrics: + disableAuth: true diff --git a/kubernetes/apps/volsync-system/volsync/app/kustomization.yaml b/kubernetes/apps/volsync-system/volsync/app/kustomization.yaml new file mode 100644 index 000000000..8ae526670 --- /dev/null +++ b/kubernetes/apps/volsync-system/volsync/app/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./helmrelease.yaml + - ./prometheusrule.yaml diff --git a/kubernetes/apps/volsync-system/volsync/app/prometheusrule.yaml b/kubernetes/apps/volsync-system/volsync/app/prometheusrule.yaml new file mode 100644 index 000000000..dd74a6201 --- /dev/null +++ b/kubernetes/apps/volsync-system/volsync/app/prometheusrule.yaml @@ -0,0 +1,27 @@ +--- +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: volsync-rules +spec: + groups: + - name: volsync.rules + rules: + - alert: VolSyncComponentAbsent + annotations: + summary: VolSync component has disappeared from Prometheus target discovery. + expr: | + absent(up{job="volsync-metrics"}) + 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 diff --git a/kubernetes/apps/volsync-system/volsync/ks.yaml b/kubernetes/apps/volsync-system/volsync/ks.yaml new file mode 100644 index 000000000..5eae3d7d6 --- /dev/null +++ b/kubernetes/apps/volsync-system/volsync/ks.yaml @@ -0,0 +1,22 @@ +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: &app volsync + namespace: flux-system +spec: + targetNamespace: volsync-system + commonMetadata: + labels: + app.kubernetes.io/name: *app + dependsOn: + - name: snapshot-controller + path: ./kubernetes/apps/volsync-system/volsync/app + prune: true + sourceRef: + kind: GitRepository + name: k8s-gitops + wait: true + interval: 30m + retryInterval: 1m + timeout: 5m