Skip to content

Commit b239f04

Browse files
committed
Enable modifying Redis settings for KAS separately
Changelog: changed Signed-off-by: Balasankar "Balu" C <[email protected]>
1 parent 108e3b1 commit b239f04

File tree

6 files changed

+243
-167
lines changed

6 files changed

+243
-167
lines changed

files/gitlab-config-template/gitlab.rb.template

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2102,6 +2102,16 @@ external_url 'GENERATED_EXTERNAL_URL'
21022102
# gitlab_kas['log_group'] = nil
21032103
# gitlab_kas['env_directory'] = '/opt/gitlab/etc/gitlab-kas/env'
21042104

2105+
##! Redis settings for GitLab KAS
2106+
# gitlab_kas['redis_socket'] = ''
2107+
# gitlab_kas['redis_host'] = '127.0.0.1'
2108+
# gitlab_kas['redis_port'] = '6379'
2109+
# gitlab_kas['redis_password'] = nil
2110+
2111+
# gitlab_kas['redis_sentinels'] = {}
2112+
# gitlab_kas['redis_sentinels_master_name'] = nil
2113+
# gitlab_kas['redis_sentinels_password'] = ''
2114+
21052115
################################################################################
21062116
## GitLab Suggested Reviewers (EE Only)
21072117
##! Docs: https://docs.gitlab.com/ee/user/project/merge_requests/reviews/#suggested-reviewers

files/gitlab-cookbooks/gitlab-kas/attributes/default.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,14 @@
4343
}
4444

4545
default['gitlab-kas'] = Gitlab::Deprecations::NodeAttribute.new(proc { node['gitlab_kas'].to_h }, "node['gitlab-kas']", "node['gitlab_kas']")
46+
47+
# Defaults of the following settings are computed from `gitlab_rails`, and are
48+
# set in the library. If a new key is added here that needs to be computed from
49+
# the Rails counterpart, make sure it is added to the list in the library too
50+
default['gitlab_kas']['redis_socket'] = nil
51+
default['gitlab_kas']['redis_host'] = nil
52+
default['gitlab_kas']['redis_port'] = nil
53+
default['gitlab_kas']['redis_password'] = nil
54+
default['gitlab_kas']['redis_sentinels'] = nil
55+
default['gitlab_kas']['redis_sentinels_master_name'] = nil
56+
default['gitlab_kas']['redis_sentinels_password'] = nil

files/gitlab-cookbooks/gitlab-kas/libraries/gitlab_kas.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ def parse_variables
2525
parse_gitlab_kas_enabled
2626
parse_gitlab_kas_external_url
2727
parse_gitlab_kas_internal_url
28+
parse_redis_settings
2829
end
2930

3031
def parse_address
@@ -105,6 +106,22 @@ def validate_secrets
105106
raise "gitlab_kas['private_api_secret_key'] should be exactly 32 bytes" if private_api_secret_key.length != 32
106107
end
107108

109+
def parse_redis_settings
110+
settings_copied_from_gitlab_rails = %w[
111+
redis_socket
112+
redis_host
113+
redis_port
114+
redis_password
115+
redis_sentinels
116+
redis_sentinels_password
117+
]
118+
settings_copied_from_gitlab_rails.each do |setting|
119+
Gitlab['gitlab_kas'][setting] = Gitlab['gitlab_rails'][setting] || Gitlab['node']['gitlab']['gitlab_rails'][setting] unless Gitlab['gitlab_kas'].key?(setting)
120+
end
121+
122+
Gitlab['gitlab_kas']['redis_sentinels_master_name'] = Gitlab['redis']['master_name'] || Gitlab['node']['redis']['master_name'] unless Gitlab['gitlab_kas'].key?('redis_sentinels_master_name')
123+
end
124+
108125
private
109126

110127
def parse_gitlab_kas_external_url_with_gitlab_domain

files/gitlab-cookbooks/gitlab-kas/recipes/enable.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@
2626
gitlab_kas_config_file = File.join(working_dir, 'gitlab-kas-config.yml')
2727
gitlab_kas_authentication_secret_file = File.join(working_dir, 'authentication_secret_file')
2828
gitlab_kas_private_api_authentication_secret_file = File.join(working_dir, 'private_api_authentication_secret_file')
29-
redis_host, redis_port, redis_password = redis_helper.redis_params
29+
redis_host, redis_port, redis_password = redis_helper.kas_params
3030
redis_password_present = redis_password && !redis_password.empty?
31-
redis_sentinels = node['gitlab']['gitlab_rails']['redis_sentinels']
32-
redis_sentinels_master_name = node['redis']['master_name']
33-
redis_sentinels_password = node['gitlab']['gitlab_rails']['redis_sentinels_password']
31+
redis_sentinels = node['gitlab_kas']['redis_sentinels']
32+
redis_sentinels_master_name = node['gitlab_kas']['redis_sentinels_master_name']
33+
redis_sentinels_password = node['gitlab_kas']['redis_sentinels_password']
3434
redis_sentinels_password_present = redis_sentinels_password && !redis_sentinels_password.empty?
3535

3636
gitlab_kas_redis_password_file = File.join(working_dir, 'redis_password_file')
@@ -41,7 +41,7 @@
4141
redis_address = if redis_network == 'tcp'
4242
"#{redis_host}:#{redis_port || redis_default_port}"
4343
else
44-
node['gitlab']['gitlab_rails']['redis_socket']
44+
node['gitlab_kas']['redis_socket']
4545
end
4646

4747
[

files/gitlab-cookbooks/gitlab/libraries/redis_helper.rb

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,15 @@ def redis
1313
@node['redis']
1414
end
1515

16-
def redis_params(support_sentinel_groupname: true)
17-
gitlab_rails_config = @node['gitlab']['gitlab_rails']
18-
16+
def redis_params(service_config: @node['gitlab']['gitlab_rails'], support_sentinel_groupname: true)
1917
raise 'Redis announce_ip and announce_ip_from_hostname are mutually exclusive, please unset one of them' if redis['announce_ip'] && redis['announce_ip_from_hostname']
2018

2119
params = if RedisHelper::Checks.has_sentinels? && support_sentinel_groupname
2220
[redis['master_name'], redis['master_port'], redis['master_password']]
2321
else
24-
host = gitlab_rails_config['redis_host'] || Gitlab['redis']['master_ip']
25-
port = gitlab_rails_config['redis_port'] || Gitlab['redis']['master_port']
26-
password = gitlab_rails_config['redis_password'] || Gitlab['redis']['master_password']
22+
host = service_config['redis_host'] || Gitlab['redis']['master_ip']
23+
port = service_config['redis_port'] || Gitlab['redis']['master_port']
24+
password = service_config['redis_password'] || Gitlab['redis']['master_password']
2725

2826
[host, port, password]
2927
end
@@ -75,6 +73,10 @@ def workhorse_params
7573
end
7674
end
7775

76+
def kas_params
77+
redis_params(service_config: @node['gitlab_kas'])
78+
end
79+
7880
def validate_instance_shard_config(instance)
7981
gitlab_rails = @node['gitlab']['gitlab_rails']
8082

0 commit comments

Comments
 (0)