From ecc5ce4301efa8b5e2b70a217e1e01ea9d7b0aca Mon Sep 17 00:00:00 2001 From: Ivan Gualandri Date: Wed, 8 Jan 2020 11:55:00 +0100 Subject: [PATCH 1/3] Add tls parameter to redis config struct --- pkg/scalers/redis_scaler.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkg/scalers/redis_scaler.go b/pkg/scalers/redis_scaler.go index adb4296fa72..a1d44adb6da 100644 --- a/pkg/scalers/redis_scaler.go +++ b/pkg/scalers/redis_scaler.go @@ -30,6 +30,7 @@ type redisMetadata struct { listName string address string password string + enableTLS bool } var redisLog = logf.Log.WithName("redis_scaler") @@ -37,6 +38,7 @@ var redisLog = logf.Log.WithName("redis_scaler") // NewRedisScaler creates a new redisScaler func NewRedisScaler(resolvedEnv, metadata, authParams map[string]string) (Scaler, error) { meta, err := parseRedisMetadata(metadata, resolvedEnv, authParams) + redisLog.Info("TEST") if err != nil { return nil, fmt.Errorf("error parsing redis metadata: %s", err) } @@ -84,6 +86,16 @@ func parseRedisMetadata(metadata, resolvedEnv, authParams map[string]string) (*r } } + meta.enableTLS = false + if val, ok := metadata["enableTLS"]; ok { + fmt.Printf("==========\n%T\n===================", metadata["enableTLS"]) + fmt.Printf("==========\n%T\n===================", val) + fmt.Errorf("==========\n%T\n===================", metadata["enableTLS"]) + fmt.Errorf("==========\n%T\n===================", val) + valType := fmt.Sprintf("==========\n%T\n===================", val) + redisLog.Info(valType, "error getting list length") + } + return &meta, nil } From 039ce3648cd3da423fe65b38925bc6f476b0a866 Mon Sep 17 00:00:00 2001 From: Ivan Gualandri Date: Mon, 13 Jan 2020 14:35:22 +0000 Subject: [PATCH 2/3] Add enableTLS parameter to redis-scaler with this change if the user add in the redis-scaler configuration the following field: ``` enableTLS: true ``` it will let the redis-scaler to connect to SSL hosts (it will add the tls configuration to the client connection options, setting InsecureSkipVerify to true) --- pkg/scalers/redis_scaler.go | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/pkg/scalers/redis_scaler.go b/pkg/scalers/redis_scaler.go index a1d44adb6da..28caf71c447 100644 --- a/pkg/scalers/redis_scaler.go +++ b/pkg/scalers/redis_scaler.go @@ -2,6 +2,7 @@ package scalers import ( "context" + "crypto/tls" "fmt" "strconv" @@ -38,7 +39,6 @@ var redisLog = logf.Log.WithName("redis_scaler") // NewRedisScaler creates a new redisScaler func NewRedisScaler(resolvedEnv, metadata, authParams map[string]string) (Scaler, error) { meta, err := parseRedisMetadata(metadata, resolvedEnv, authParams) - redisLog.Info("TEST") if err != nil { return nil, fmt.Errorf("error parsing redis metadata: %s", err) } @@ -88,12 +88,11 @@ func parseRedisMetadata(metadata, resolvedEnv, authParams map[string]string) (*r meta.enableTLS = false if val, ok := metadata["enableTLS"]; ok { - fmt.Printf("==========\n%T\n===================", metadata["enableTLS"]) - fmt.Printf("==========\n%T\n===================", val) - fmt.Errorf("==========\n%T\n===================", metadata["enableTLS"]) - fmt.Errorf("==========\n%T\n===================", val) - valType := fmt.Sprintf("==========\n%T\n===================", val) - redisLog.Info(valType, "error getting list length") + tls, err := strconv.ParseBool(val) + if err != nil { + return nil, fmt.Errorf("enableTLS parsing error %s", err.Error()) + } + meta.enableTLS = tls } return &meta, nil @@ -101,9 +100,12 @@ func parseRedisMetadata(metadata, resolvedEnv, authParams map[string]string) (*r // IsActive checks if there is any element in the Redis list func (s *redisScaler) IsActive(ctx context.Context) (bool, error) { - length, err := getRedisListLength( - ctx, s.metadata.address, s.metadata.password, s.metadata.listName) + fmt.Printf("ISActive: ==========%t===================\n", s.metadata.enableTLS) + fmt.Printf("ISACtive: %+v\n", s.metadata) + length, err := getRedisListLength( + ctx, s.metadata.address, s.metadata.password, s.metadata.listName, s.metadata.enableTLS) + fmt.Printf("IsActive: list length: %v\n", length) if err != nil { redisLog.Error(err, "error") return false, err @@ -126,7 +128,7 @@ func (s *redisScaler) GetMetricSpecForScaling() []v2beta1.MetricSpec { // GetMetrics connects to Redis and finds the length of the list func (s *redisScaler) GetMetrics(ctx context.Context, metricName string, metricSelector labels.Selector) ([]external_metrics.ExternalMetricValue, error) { - listLen, err := getRedisListLength(ctx, s.metadata.address, s.metadata.password, s.metadata.listName) + listLen, err := getRedisListLength(ctx, s.metadata.address, s.metadata.password, s.metadata.listName, s.metadata.enableTLS) if err != nil { redisLog.Error(err, "error getting list length") @@ -142,18 +144,25 @@ func (s *redisScaler) GetMetrics(ctx context.Context, metricName string, metricS return append([]external_metrics.ExternalMetricValue{}, metric), nil } -func getRedisListLength(ctx context.Context, address string, password string, listName string) (int64, error) { - client := redis.NewClient(&redis.Options{ +func getRedisListLength(ctx context.Context, address string, password string, listName string, enableTLS bool) (int64, error) { + options := &redis.Options{ Addr: address, Password: password, DB: 0, - }) + } + + if enableTLS == true { + options.TLSConfig = &tls.Config{ + InsecureSkipVerify: enableTLS, + } + } + + client := redis.NewClient(options) cmd := client.LLen(listName) if cmd.Err() != nil { return -1, cmd.Err() } - return cmd.Result() } From 841d7573c4804e6b3e369f427b0750d44ba707e5 Mon Sep 17 00:00:00 2001 From: Ivan Gualandri Date: Fri, 24 Jan 2020 09:40:05 +0000 Subject: [PATCH 3/3] Remove debug print --- pkg/scalers/redis_scaler.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkg/scalers/redis_scaler.go b/pkg/scalers/redis_scaler.go index 28caf71c447..e7707080f37 100644 --- a/pkg/scalers/redis_scaler.go +++ b/pkg/scalers/redis_scaler.go @@ -101,11 +101,9 @@ func parseRedisMetadata(metadata, resolvedEnv, authParams map[string]string) (*r // IsActive checks if there is any element in the Redis list func (s *redisScaler) IsActive(ctx context.Context) (bool, error) { - fmt.Printf("ISActive: ==========%t===================\n", s.metadata.enableTLS) - fmt.Printf("ISACtive: %+v\n", s.metadata) length, err := getRedisListLength( ctx, s.metadata.address, s.metadata.password, s.metadata.listName, s.metadata.enableTLS) - fmt.Printf("IsActive: list length: %v\n", length) + if err != nil { redisLog.Error(err, "error") return false, err