Prepare GitLab application for ratelimiting transition to Redis Cluster
How the webservice interacts with redis-ratelimiting
- 
Gitlab::ApplicationRateLimiter::BaseStrategyusesincrementandreadwhich are same-key pipelined operations. This means there are no cross-slot operations and can be transited into a Redis Cluster without issues.
- 
Rack::AttackusingGitlab::RackAttack::InstrumentedCacheStoreas cache forincrement,write,read.- 
reset!method inRack::Attack::Cachecallsdelete_matchedwhich performs a scan. However,Rack::Attack.reset!is typically used for test suite isolation (https://github.com/rack/rack-attack#test-case-isolation).This means more elaborate spec helpers but it should not affect our application in gstg/gprd.This is fine sinceRedis::Clusterbroadcastflushdbto all master nodes.
 
- 
Changes required
No application level changes are required other than configurations in helm charts.
Updates
We will either proceed using gitlab-org/gitlab!106123 (merged) or #2064 (closed) (and test in pre by directly updating config in gitlab-com).
Edited  by Sylvester Chin