diff --git a/clusters/prod/apps/velero/Chart.yaml b/clusters/prod/apps/velero/Chart.yaml new file mode 100644 index 0000000..ed733fd --- /dev/null +++ b/clusters/prod/apps/velero/Chart.yaml @@ -0,0 +1,7 @@ +apiVersion: v2 +name: velero +version: 0.1.0 +dependencies: + - name: velero + version: "12.0.3" + repository: https://vmware-tanzu.github.io/helm-charts diff --git a/clusters/prod/apps/velero/application.yaml b/clusters/prod/apps/velero/application.yaml new file mode 100644 index 0000000..6808a2e --- /dev/null +++ b/clusters/prod/apps/velero/application.yaml @@ -0,0 +1,26 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: velero + namespace: argocd + annotations: + argocd.argoproj.io/sync-wave: "14" +spec: + project: default + source: + repoURL: https://github.com/PilotDataPlatform/pilot-hdc-platform-gitops.git + path: clusters/prod/apps/velero + targetRevision: main + helm: + valueFiles: + - values.yaml + destination: + server: https://kubernetes.default.svc + namespace: velero + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + - ServerSideApply=true diff --git a/clusters/prod/apps/velero/templates/external-secret.yaml b/clusters/prod/apps/velero/templates/external-secret.yaml new file mode 100644 index 0000000..3bc48a2 --- /dev/null +++ b/clusters/prod/apps/velero/templates/external-secret.yaml @@ -0,0 +1,28 @@ +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: velero-bucket-credentials + namespace: {{ .Release.Namespace }} +spec: + refreshInterval: 1h + secretStoreRef: + kind: ClusterSecretStore + name: vault + target: + name: velero-bucket-credentials + template: + engineVersion: v2 + data: + cloud: | + [default] + aws_access_key_id={{ `{{ .velero_bucket_access_key }}` }} + aws_secret_access_key={{ `{{ .velero_bucket_secret_key }}` }} + data: + - secretKey: velero_bucket_access_key + remoteRef: + key: secret/data/velero + property: velero-bucket-access-key + - secretKey: velero_bucket_secret_key + remoteRef: + key: secret/data/velero + property: velero-bucket-secret-key diff --git a/clusters/prod/apps/velero/values.yaml b/clusters/prod/apps/velero/values.yaml new file mode 100644 index 0000000..c7b94ea --- /dev/null +++ b/clusters/prod/apps/velero/values.yaml @@ -0,0 +1,31 @@ +velero: + configuration: + backupStorageLocation: + - name: default + provider: aws + bucket: pilot-hdc-prod-backup-velero-bucket + config: + region: de + s3Url: https://s3.de.io.cloud.ovh.net + s3ForcePathStyle: "true" + checksumAlgorithm: "" + + initContainers: + - name: velero-plugin-for-aws + image: velero/velero-plugin-for-aws:v1.14.1 + imagePullPolicy: IfNotPresent + volumeMounts: + - mountPath: /target + name: plugins + + credentials: + useSecret: true + existingSecret: velero-bucket-credentials + + snapshotsEnabled: false + + schedules: + daily-cluster-backup: + schedule: "0 0 * * *" + template: + ttl: "720h"