Skip to content

Commit ee3db0a

Browse files
Furst RomanFurst Roman
authored andcommitted
enable override defaults for redis images
1 parent 632aa3d commit ee3db0a

File tree

7 files changed

+92
-27
lines changed

7 files changed

+92
-27
lines changed

api/redisfailover/v1/defaults.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
package v1
22

33
const (
4-
defaultRedisNumber = 3
5-
defaultSentinelNumber = 3
6-
defaultSentinelExporterImage = "quay.io/oliver006/redis_exporter:v1.43.0"
7-
defaultExporterImage = "quay.io/oliver006/redis_exporter:v1.43.0"
8-
defaultImage = "redis:6.2.6-alpine"
9-
defaultRedisPort = 6379
4+
defaultRedisNumber = 3
5+
defaultSentinelNumber = 3
6+
defaultRedisPort = 6379
107
)
118

129
var (
@@ -20,4 +17,7 @@ var (
2017
bootstrappingRedisCustomConfig = []string{
2118
"replica-priority 0",
2219
}
20+
DefaultSentinelExporterImage = "quay.io/oliver006/redis_exporter:v1.43.0"
21+
DefaultExporterImage = "quay.io/oliver006/redis_exporter:v1.43.0"
22+
DefaultImage = "redis:6.2.6-alpine"
2323
)

api/redisfailover/v1/validate.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ func (r *RedisFailover) Validate() error {
3030
}
3131

3232
if r.Spec.Redis.Image == "" {
33-
r.Spec.Redis.Image = defaultImage
33+
r.Spec.Redis.Image = DefaultImage
3434
}
3535

3636
if r.Spec.Sentinel.Image == "" {
37-
r.Spec.Sentinel.Image = defaultImage
37+
r.Spec.Sentinel.Image = DefaultImage
3838
}
3939

4040
if r.Spec.Redis.Replicas <= 0 {
@@ -50,11 +50,11 @@ func (r *RedisFailover) Validate() error {
5050
}
5151

5252
if r.Spec.Redis.Exporter.Image == "" {
53-
r.Spec.Redis.Exporter.Image = defaultExporterImage
53+
r.Spec.Redis.Exporter.Image = DefaultExporterImage
5454
}
5555

5656
if r.Spec.Sentinel.Exporter.Image == "" {
57-
r.Spec.Sentinel.Exporter.Image = defaultSentinelExporterImage
57+
r.Spec.Sentinel.Exporter.Image = DefaultSentinelExporterImage
5858
}
5959

6060
if len(r.Spec.Sentinel.CustomConfig) == 0 {

api/redisfailover/v1/validate_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,20 +102,20 @@ func TestValidate(t *testing.T) {
102102
},
103103
Spec: RedisFailoverSpec{
104104
Redis: RedisSettings{
105-
Image: defaultImage,
105+
Image: DefaultImage,
106106
Replicas: defaultRedisNumber,
107107
Port: defaultRedisPort,
108108
Exporter: Exporter{
109-
Image: defaultExporterImage,
109+
Image: DefaultExporterImage,
110110
},
111111
CustomConfig: expectedRedisCustomConfig,
112112
},
113113
Sentinel: SentinelSettings{
114-
Image: defaultImage,
114+
Image: DefaultImage,
115115
Replicas: defaultSentinelNumber,
116116
CustomConfig: expectedSentinelCustomConfig,
117117
Exporter: Exporter{
118-
Image: defaultSentinelExporterImage,
118+
Image: DefaultSentinelExporterImage,
119119
},
120120
},
121121
BootstrapNode: test.expectedBootstrapNode,

cmd/redisoperator/main.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ func (m *Main) Run() error {
8787
// Get lease lock resource namespace
8888
lockNamespace := getNamespace()
8989

90+
// Override default values provided by flags
91+
m.flags.ReinitiliazeDefaults()
92+
9093
// Create operator and run.
9194
redisfailoverOperator, err := redisfailover.New(m.flags.ToRedisOperatorConfig(), k8sservice, k8sClient, lockNamespace, redisClient, metricsRecorder, m.logger)
9295
if err != nil {

cmd/utils/flags.go

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package utils
33
import (
44
"flag"
55
"fmt"
6+
v1 "github.com/spotahome/redis-operator/api/redisfailover/v1"
67
"path/filepath"
78
"regexp"
89

@@ -13,15 +14,18 @@ import (
1314
// CMDFlags are the flags used by the cmd
1415
// TODO: improve flags.
1516
type CMDFlags struct {
16-
KubeConfig string
17-
SupportedNamespacesRegex string
18-
Development bool
19-
ListenAddr string
20-
MetricsPath string
21-
K8sQueriesPerSecond int
22-
K8sQueriesBurstable int
23-
Concurrency int
24-
LogLevel string
17+
KubeConfig string
18+
SupportedNamespacesRegex string
19+
Development bool
20+
ListenAddr string
21+
MetricsPath string
22+
K8sQueriesPerSecond int
23+
K8sQueriesBurstable int
24+
Concurrency int
25+
LogLevel string
26+
DefaultRedisImage string
27+
DefaultRedisExporterImage string
28+
DefaultSentinelExporterImage string
2529
}
2630

2731
// Init initializes and parse the flags
@@ -39,6 +43,9 @@ func (c *CMDFlags) Init() {
3943
// reference: https://github.com/spotahome/kooper/blob/master/controller/controller.go#L89
4044
flag.IntVar(&c.Concurrency, "concurrency", 3, "Number of conccurent workers meant to process events")
4145
flag.StringVar(&c.LogLevel, "log-level", "info", "set log level")
46+
flag.StringVar(&c.DefaultRedisImage, "redis-default-image", v1.DefaultImage, "default redis image")
47+
flag.StringVar(&c.DefaultRedisExporterImage, "rfr-exporter-default-image", v1.DefaultExporterImage, "default redis exporter image")
48+
flag.StringVar(&c.DefaultSentinelExporterImage, "rfs-exporter-default", v1.DefaultSentinelExporterImage, "default sentinel exporter image")
4249
// Parse flags
4350
flag.Parse()
4451

@@ -56,3 +63,10 @@ func (c *CMDFlags) ToRedisOperatorConfig() redisfailover.Config {
5663
SupportedNamespacesRegex: c.SupportedNamespacesRegex,
5764
}
5865
}
66+
67+
// ReinitiliazeDefaults redefine default values overridden by flags
68+
func (c *CMDFlags) ReinitiliazeDefaults() {
69+
v1.DefaultImage = c.DefaultRedisImage
70+
v1.DefaultExporterImage = c.DefaultRedisExporterImage
71+
v1.DefaultSentinelExporterImage = c.DefaultSentinelExporterImage
72+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
labels:
5+
app: redisoperator
6+
name: redisoperator
7+
spec:
8+
replicas: 1
9+
selector:
10+
matchLabels:
11+
app: redisoperator
12+
strategy:
13+
type: RollingUpdate
14+
template:
15+
metadata:
16+
labels:
17+
app: redisoperator
18+
spec:
19+
serviceAccountName: redisoperator
20+
containers:
21+
- image: quay.io/spotahome/redis-operator:latest
22+
args:
23+
- -redis-default-image=redis:6.2.4-alpine
24+
- -rfr-exporter-default-image=quay.io/oliver006/redis_exporter:v1.50.0
25+
- -rfs-exporter-default=quay.io/oliver006/redis_exporter:v1.50.0
26+
imagePullPolicy: IfNotPresent
27+
name: app
28+
securityContext:
29+
readOnlyRootFilesystem: true
30+
runAsNonRoot: true
31+
runAsUser: 1000
32+
resources:
33+
limits:
34+
cpu: 100m
35+
memory: 50Mi
36+
requests:
37+
cpu: 10m
38+
memory: 50Mi
39+
env:
40+
- name: POD_NAMESPACE
41+
valueFrom:
42+
fieldRef:
43+
apiVersion: v1
44+
fieldPath: metadata.namespace
45+
restartPolicy: Always

operator/redisfailover/config.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@ package redisfailover
22

33
// Config is the configuration for the redis operator.
44
type Config struct {
5-
ListenAddress string
6-
MetricsPath string
7-
Concurrency int
8-
SupportedNamespacesRegex string
5+
ListenAddress string
6+
MetricsPath string
7+
Concurrency int
8+
SupportedNamespacesRegex string
9+
DefaultImage string
10+
DefaultExporterImage string
11+
DefaultSentinelExporterImage string
912
}

0 commit comments

Comments
 (0)