From b61eb7d7f3ebc9315d41d4da0361091f7090b7dd Mon Sep 17 00:00:00 2001
From: Vasilis Remmas <vasremm@gmail.com>
Date: Sat, 4 Aug 2018 13:56:25 +0200
Subject: [PATCH] Add ETCD_QUOTA_BACKEND_BYTES environment variable

---
 inventory/sample/group_vars/all.yml     | 5 +++++
 roles/etcd/defaults/main.yml            | 2 ++
 roles/etcd/templates/etcd-events.env.j2 | 3 +++
 roles/etcd/templates/etcd.env.j2        | 3 +++
 4 files changed, 13 insertions(+)

diff --git a/inventory/sample/group_vars/all.yml b/inventory/sample/group_vars/all.yml
index dc2a56de9..e2829cb98 100644
--- a/inventory/sample/group_vars/all.yml
+++ b/inventory/sample/group_vars/all.yml
@@ -145,6 +145,11 @@ bin_dir: /usr/local/bin
 ## Set this if your etcd nodes have less than 4GB but you want more RAM for etcd. Set to 0 for unrestricted RAM.
 #etcd_memory_limit: "512M"
 
+## Etcd has a default of 2G for its space quota. If you put a value in etcd_memory_limit which is less than
+## etcd_quota_backend_bytes, you may encounter out of memory terminations of the etcd cluster. Please check
+## etcd documentation for more information.
+#etcd_quota_backend_bytes: "2G"
+
 # The read-only port for the Kubelet to serve on with no authentication/authorization. Uncomment to enable.
 #kube_read_only_port: 10255
 
diff --git a/roles/etcd/defaults/main.yml b/roles/etcd/defaults/main.yml
index 750b710f2..8db1598ff 100644
--- a/roles/etcd/defaults/main.yml
+++ b/roles/etcd/defaults/main.yml
@@ -45,6 +45,8 @@ etcd_extra_vars: {}
 # Limit memory only if <4GB memory on host. 0=unlimited
 etcd_memory_limit: "{% if ansible_memtotal_mb < 4096 %}512M{% else %}0{% endif %}"
 
+# etcd_quota_backend_bytes: "2G"
+
 # Uncomment to set CPU share for etcd
 # etcd_cpu_limit: 300m
 
diff --git a/roles/etcd/templates/etcd-events.env.j2 b/roles/etcd/templates/etcd-events.env.j2
index 6805bcffb..525ce86c3 100644
--- a/roles/etcd/templates/etcd-events.env.j2
+++ b/roles/etcd/templates/etcd-events.env.j2
@@ -16,6 +16,9 @@ ETCD_AUTO_COMPACTION_RETENTION={{ etcd_compaction_retention }}
 {% if etcd_snapshot_count is defined %}
 ETCD_SNAPSHOT_COUNT={{ etcd_snapshot_count }}
 {% endif %}
+{% if etcd_quota_backend_bytes is defined %}
+ETCD_QUOTA_BACKEND_BYTES={{ etcd_quota_backend_bytes }}
+{% endif %}
 
 # TLS settings
 ETCD_TRUSTED_CA_FILE={{ etcd_cert_dir }}/ca.pem
diff --git a/roles/etcd/templates/etcd.env.j2 b/roles/etcd/templates/etcd.env.j2
index 046e95da9..c302b0285 100644
--- a/roles/etcd/templates/etcd.env.j2
+++ b/roles/etcd/templates/etcd.env.j2
@@ -17,6 +17,9 @@ ETCD_AUTO_COMPACTION_RETENTION={{ etcd_compaction_retention }}
 {% if etcd_snapshot_count is defined %}
 ETCD_SNAPSHOT_COUNT={{ etcd_snapshot_count }}
 {% endif %}
+{% if etcd_quota_backend_bytes is defined %}
+ETCD_QUOTA_BACKEND_BYTES={{ etcd_quota_backend_bytes }}
+{% endif %}
 
 # TLS settings
 ETCD_TRUSTED_CA_FILE={{ etcd_cert_dir }}/ca.pem
-- 
GitLab