From c1da28f6378bf2f8241d4383d1e48fe38825ae06 Mon Sep 17 00:00:00 2001 From: Sergiy Markin Date: Tue, 12 Dec 2023 03:58:53 +0000 Subject: [PATCH] [backups] Add throttlling of remote etcd backups This PS adds a possibility to limit (to throttle) the number of simultaneously uploaded backups while keeping the logic on the client side using flag files on remote side. Change-Id: I753faab8f3d934346d54e38bfc94cec3a8f79385 --- charts/etcd/Chart.yaml | 2 +- charts/etcd/templates/cron-job-etcd-backup.yaml | 10 ++++++++++ charts/etcd/templates/secret-backup-restore.yaml | 5 +++++ charts/etcd/values.yaml | 6 ++++++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/charts/etcd/Chart.yaml b/charts/etcd/Chart.yaml index 80a6cf0c..5437ca20 100644 --- a/charts/etcd/Chart.yaml +++ b/charts/etcd/Chart.yaml @@ -15,4 +15,4 @@ apiVersion: v1 description: A chart for a DaemonSet-based etcd deployment. name: etcd -version: 0.1.3 +version: 0.1.4 diff --git a/charts/etcd/templates/cron-job-etcd-backup.yaml b/charts/etcd/templates/cron-job-etcd-backup.yaml index 3504f33d..890a7620 100644 --- a/charts/etcd/templates/cron-job-etcd-backup.yaml +++ b/charts/etcd/templates/cron-job-etcd-backup.yaml @@ -134,6 +134,16 @@ spec: value: {{ .Values.backup.remote_backup.delay_range.min | quote }} - name: MAX_DELAY_SEND_BACKUP_TO_REMOTE value: {{ .Values.backup.remote_backup.delay_range.max | quote }} + - name: THROTTLE_BACKUPS_ENABLED + value: "{{ .Values.backup.remote_backup.throttle_backups.enabled }}" + - name: THROTTLE_LIMIT + value: {{ .Values.backup.remote_backup.throttle_backups.sessions_limit | quote }} + - name: THROTTLE_LOCK_EXPIRE_AFTER + value: {{ .Values.backup.remote_backup.throttle_backups.lock_expire_after | quote }} + - name: THROTTLE_RETRY_AFTER + value: {{ .Values.backup.remote_backup.throttle_backups.retry_after | quote }} + - name: THROTTLE_CONTAINER_NAME + value: {{ .Values.backup.remote_backup.throttle_backups.container_name | quote }} {{- with $env := dict "ksUserSecret" $envAll.Values.secrets.identity.kubernetes }} {{- include "helm-toolkit.snippets.keystone_openrc_env_vars" $env | indent 16 }} {{- end }} diff --git a/charts/etcd/templates/secret-backup-restore.yaml b/charts/etcd/templates/secret-backup-restore.yaml index 16830123..8f243255 100644 --- a/charts/etcd/templates/secret-backup-restore.yaml +++ b/charts/etcd/templates/secret-backup-restore.yaml @@ -25,5 +25,10 @@ data: REMOTE_BACKUP_RETRIES: {{ $envAll.Values.backup.remote_backup.number_of_retries | quote | b64enc }} REMOTE_BACKUP_SEND_DELAY_MIN: {{ $envAll.Values.backup.remote_backup.delay_range.min | quote | b64enc }} REMOTE_BACKUP_SEND_DELAY_MAX: {{ $envAll.Values.backup.remote_backup.delay_range.max | quote | b64enc }} + THROTTLE_BACKUPS_ENABLED: {{ $envAll.Values.backup.remote_backup.throttle_backups.enabled | quote | b64enc }} + THROTTLE_LIMIT: {{ $envAll.Values.backup.remote_backup.throttle_backups.sessions_limit | quote | b64enc }} + THROTTLE_LOCK_EXPIRE_AFTER: {{ $envAll.Values.backup.remote_backup.throttle_backups.lock_expire_after | quote | b64enc }} + THROTTLE_RETRY_AFTER: {{ $envAll.Values.backup.remote_backup.throttle_backups.retry_after | quote | b64enc }} + THROTTLE_CONTAINER_NAME: {{ $envAll.Values.backup.remote_backup.throttle_backups.container_name | quote | b64enc }} ... {{- end }} diff --git a/charts/etcd/values.yaml b/charts/etcd/values.yaml index 9686c818..13f68342 100644 --- a/charts/etcd/values.yaml +++ b/charts/etcd/values.yaml @@ -74,6 +74,12 @@ backup: delay_range: min: 30 max: 60 + throttle_backups: + enabled: false + sessions_limit: 480 + lock_expire_after: 7200 + retry_after: 3600 + container_name: throttle-backups-manager endpoints: identity: