6363 configDir string
6464 redisAddress string
6565 redisPassword string
66+ redisUsername string
6667 redisDB int
6768 redisPoolSize int
6869
@@ -105,6 +106,7 @@ const (
105106 configDirEnv = "CONFIG_DIR"
106107 redisAddrEnv = "REDIS_ADDRESS"
107108 redisPasswordEnv = "REDIS_PASSWORD"
109+ redisUsernameEnv = "REDIS_USERNAME"
108110 redisDBEnv = "REDIS_DB"
109111 redisPoolSizeEnv = "REDIS_POOL_SIZE"
110112
@@ -147,6 +149,7 @@ const (
147149 offlineFlag = "offline"
148150 redisAddressFlag = "redis-address"
149151 redisPasswordFlag = "redis-password"
152+ redisUsernameFlag = "redis-username"
150153 redisDBFlag = "redis-db"
151154 redisPoolSizeFlag = "redis-pool-size"
152155
@@ -189,6 +192,7 @@ func init() {
189192 flag .StringVar (& configDir , configDirFlag , "/config" , "specify a custom path to search for the offline config directory. Defaults to /config" )
190193 flag .StringVar (& redisAddress , redisAddressFlag , "" , "Redis host:port address" )
191194 flag .StringVar (& redisPassword , redisPasswordFlag , "" , "Optional. Redis password" )
195+ flag .StringVar (& redisUsername , redisUsernameFlag , "" , "Optional. Redis username" )
192196 flag .IntVar (& redisDB , redisDBFlag , 0 , "Database to be selected after connecting to the server." )
193197 flag .IntVar (& redisPoolSize , redisPoolSizeFlag , 10 , "sets the redi connection pool size, to this value multipled by the number of CPU available. E.g if this value is 10 and you've 2 CPU the connection pool size will be 20" )
194198
@@ -221,6 +225,7 @@ func init() {
221225 authSecretEnv : authSecretFlag ,
222226 redisAddrEnv : redisAddressFlag ,
223227 redisPasswordEnv : redisPasswordFlag ,
228+ redisUsernameEnv : redisUsernameFlag ,
224229 redisDBEnv : redisDBFlag ,
225230 redisPoolSizeEnv : redisPoolSizeFlag ,
226231 metricPostDurationEnv : metricPostDurationFlag ,
@@ -312,7 +317,7 @@ func main() {
312317 var hashCache * cache.HashCache
313318
314319 if redisAddress != "" && ! generateOfflineConfig { //nolint:nestif
315- redisClient = newRedisClient (redisAddress , logger )
320+ redisClient = newRedisClient (redisAddress , redisUsername , redisPassword , logger )
316321
317322 mcMetrics := cache .NewMemoizeMetrics ("proxy" , promReg )
318323 mcCache := cache .NewMemoizeCache (redisClient , 1 * time .Minute , 2 * time .Minute , mcMetrics )
@@ -670,7 +675,7 @@ func removeRedisScheme(addr string) string {
670675 return strings .TrimPrefix (strings .TrimPrefix (addr , "redis://" ), "rediss://" )
671676}
672677
673- func newRedisClient (addr string , logger log.Logger ) redis.UniversalClient {
678+ func newRedisClient (addr string , username string , password string , logger log.Logger ) redis.UniversalClient {
674679 splitAddr := strings .Split (addr , "," )
675680
676681 // if address does not start with redis:// or rediss:// then default to redis://
@@ -693,8 +698,8 @@ func newRedisClient(addr string, logger log.Logger) redis.UniversalClient {
693698 opts := redis.UniversalOptions {
694699 Addrs : splitAddr ,
695700 DB : parsed .DB ,
696- Username : parsed . Username ,
697- Password : parsed . Password ,
701+ Username : username ,
702+ Password : password ,
698703 PoolSize : redisPoolSize * runtime .NumCPU (),
699704 TLSConfig : parsed .TLSConfig ,
700705 }
0 commit comments