From b3f2c4f3b5a868d7b583d1ac652873625898379c Mon Sep 17 00:00:00 2001 From: Marcin Antas Date: Mon, 11 Dec 2023 12:49:59 +0100 Subject: [PATCH] Adjust RAFT settings generation --- .cicd/test.sh | 10 +++++++--- weaviate/templates/_helpers.tpl | 25 ++++++++++++++++++------- weaviate/values.yaml | 26 ++++++++++++++++++-------- 3 files changed, 43 insertions(+), 18 deletions(-) diff --git a/.cicd/test.sh b/.cicd/test.sh index 1bcabd27..e0ac7e43 100755 --- a/.cicd/test.sh +++ b/.cicd/test.sh @@ -166,9 +166,13 @@ function check_creates_template() { check_string_existence "--set modules.text2vec-aws.enabled=true --set modules.text2vec-aws.envSecrets.AWS_ACCESS_KEY_ID=key --set modules.text2vec-aws.envSecrets.AWS_SECRET_ACCESS_KEY=secret" "name: AWS_ACCESS_KEY_ID" check_string_existence "--set modules.text2vec-aws.enabled=true --set modules.text2vec-aws.envSecrets.AWS_ACCESS_KEY_ID=key --set modules.text2vec-aws.envSecrets.AWS_SECRET_ACCESS_KEY=secret" "name: AWS_SECRET_ACCESS_KEY" - check_setting_has_value "--set replicas=3" "name: RAFT_JOIN" "value: \"weaviate-0,weaviate-1,weaviate-2\"" - check_setting_has_value "--set replicas=1" "name: RAFT_JOIN" "value: \"weaviate-0\"" - check_setting_has_value "--set replicas=4" "name: RAFT_BOOTSTRAP_EXPECT" "value: \"4\"" + check_setting_has_value "--set replicas=3 --set env.RAFT_BOOTSTRAP_EXPECT=3" "name: RAFT_JOIN" "value: \"weaviate-0,weaviate-1,weaviate-2\"" + check_setting_has_value "--set replicas=8 --set env.RAFT_BOOTSTRAP_EXPECT=3" "name: RAFT_JOIN" "value: \"weaviate-0,weaviate-1,weaviate-2\"" + check_setting_has_value "--set replicas=1 --set env.RAFT_BOOTSTRAP_EXPECT=1" "name: RAFT_JOIN" "value: \"weaviate-0\"" + check_setting_has_value "--set replicas=4 --set env.RAFT_BOOTSTRAP_EXPECT=4" "name: RAFT_BOOTSTRAP_EXPECT" "value: \"4\"" + check_setting_has_value "--set replicas=4 --set env.RAFT_BOOTSTRAP_EXPECT=4" "name: RAFT_JOIN" "value: \"weaviate-0,weaviate-1,weaviate-2,weaviate-3\"" + check_setting_has_value "--set replicas=10 --set env.RAFT_BOOTSTRAP_EXPECT=4" "name: RAFT_JOIN" "value: \"weaviate-0,weaviate-1,weaviate-2,weaviate-3\"" + check_setting_has_value "--set replicas=10 --set env.RAFT_JOIN=weaviate-100" "name: RAFT_JOIN" "value: \"weaviate-100\"" _settingPassageQueryOn="--set modules.text2vec-contextionary.enabled=false --set modules.text2vec-transformers.passageQueryServices.passage.enabled=true --set modules.text2vec-transformers.passageQueryServices.query.enabled=true" check_setting_has_value "$_settingPassageQueryOn" "name: TRANSFORMERS_PASSAGE_INFERENCE_API" "value: http://transformers-inference-passage.default.svc.cluster.local.:8080" diff --git a/weaviate/templates/_helpers.tpl b/weaviate/templates/_helpers.tpl index d4745b5d..e7f47e02 100644 --- a/weaviate/templates/_helpers.tpl +++ b/weaviate/templates/_helpers.tpl @@ -164,14 +164,25 @@ Usage: Raft cluster configuration settings */}} {{- define "raft_configuration" -}} + {{- $replicas := .Values.replicas | int -}} {{- $voters := .Values.env.RAFT_BOOTSTRAP_EXPECT | int -}} - {{- $nodes := list -}} - {{- range $i := until $voters -}} - {{- $node_name := list -}} - {{- $node_name = append $node_name "weaviate" -}} - {{- $node_name = append $node_name $i -}} - {{- $nodes = append $nodes (join "-" $node_name) -}} - {{- end }} + {{- if gt $voters $replicas -}} + {{- fail "env.RAFT_BOOTSTRAP_EXPECT value cannot be greater than replicas value" -}} + {{- end -}} + {{- if empty .Values.env.RAFT_JOIN -}} + {{- $nodes := list -}} + {{- range $i := until $voters -}} + {{- $node_name := list -}} + {{- $node_name = append $node_name "weaviate" -}} + {{- $node_name = append $node_name $i -}} + {{- $nodes = append $nodes (join "-" $node_name) -}} + {{- end -}} - name: RAFT_JOIN value: "{{ join "," $nodes }}" + {{- else -}} + {{- $joinVoters := len (split "," .Values.env.RAFT_JOIN) -}} + {{- if not (eq $joinVoters $voters) -}} + {{- fail "env.RAFT_BOOTSTRAP_EXPECT value needs to be equal to number of env.RAFT_JOIN nodes" -}} + {{- end -}} + {{- end -}} {{- end -}} diff --git a/weaviate/values.yaml b/weaviate/values.yaml index d1723cbf..5ed5c6bf 100644 --- a/weaviate/values.yaml +++ b/weaviate/values.yaml @@ -7,8 +7,8 @@ image: # of weaviate. In accordance with Infra-as-code, you should pin this value # down and only change it if you explicitly want to upgrade the Weaviate # version. - tag: latest - repo: library/module_test_image_raft + tag: 1.22.6 + repo: semitechnologies/weaviate # Image pull policy: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy pullPolicy: IfNotPresent pullSecrets: [] @@ -228,6 +228,22 @@ debug: false env: CLUSTER_GOSSIP_BIND_PORT: 7000 CLUSTER_DATA_BIND_PORT: 7001 + + # Set RAFT cluster expected number of voter nodes at bootstrap + RAFT_BOOTSTRAP_EXPECT: 1 + + # Set RAFT cluster bootstrap timeout (in seconds), default is 10 (seconds) + # RAFT_BOOTSTRAP_TIMEOUT: 10 + + # Set manually RAFT voter nodes. + # RAFT_JOIN value is automatically generated by "raft_configuration" + # template, but if someone wants to set this value manually then it can be done + # by setting RAFT_JOIN environment variable, example: RAFT_JOIN: "weaviate-0,weaviate-1" + # Please notice that in this case RAFT_BOOTSTRAP_EXPECT setting needs to be also adjusted manually + # to match the number of RAFT voters, so if there are 2 nodes set using RAFT_JOIN variable + # then RAFT_BOOTSTRAP_EXPECT needs to be equal 2 also. + # RAFT_JOIN: "weaviate-0" + # The aggressiveness of the Go Garbage Collector. 100 is the default value. GOGC: 100 @@ -235,12 +251,6 @@ env: PROMETHEUS_MONITORING_ENABLED: false PROMETHEUS_MONITORING_GROUP: false - # Raft settings are generated automatically by "raft_configuration" template - # Set Raft cluster bootstrap timeout (in seconds), default is 10 (seconds) - RAFT_BOOTSTRAP_TIMEOUT: 30 - RAFT_BOOTSTRAP_EXPECT: 1 - - # Set a MEM limit for the Weaviate Pod so it can help you both increase GC-related # performance as well as avoid GC-related out-of-memory (“OOM”) situations # GOMEMLIMIT: 6GiB