Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 3c6cbff

Browse files
support custom imagePullPolicy imagePullSecrets nodeSelector
1 parent 9033479 commit 3c6cbff

File tree

3 files changed

+88
-51
lines changed

3 files changed

+88
-51
lines changed

‎pkg/apis/redis/v1beta1/rediscluster_types.go‎

Lines changed: 32 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,23 @@ import (
1111
// RedisClusterSpec defines the desired state of RedisCluster
1212
// +k8s:openapi-gen=true
1313
type RedisClusterSpec struct {
14-
Size int32 `json:"size,omitempty"`
15-
Resources corev1.ResourceRequirements `json:"resources,omitempty"`
16-
Image string `json:"image,omitempty"`
17-
Command []string `json:"command,omitempty"`
18-
ShutdownConfigMap string `json:"shutdownConfigMap,omitempty"`
19-
Storage RedisStorage `json:"storage,omitempty"`
20-
Password string `json:"password,omitempty"`
21-
Exporter RedisExporter `json:"exporter,omitempty"`
22-
Affinity *corev1.Affinity `json:"affinity,omitempty"`
23-
SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"`
24-
ToleRations []corev1.Toleration `json:"toleRations,omitempty"`
25-
Config map[string]string `json:"config,omitempty"`
26-
Annotations map[string]string `json:"annotations,omitempty"`
27-
DisablePersistence bool `json:"disablePersistence,omitempty"`
14+
Size int32 `json:"size,omitempty"`
15+
Resources corev1.ResourceRequirements `json:"resources,omitempty"`
16+
Image string `json:"image,omitempty"`
17+
ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy,omitempty"`
18+
ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"`
19+
Command []string `json:"command,omitempty"`
20+
ShutdownConfigMap string `json:"shutdownConfigMap,omitempty"`
21+
Storage RedisStorage `json:"storage,omitempty"`
22+
Password string `json:"password,omitempty"`
23+
Exporter RedisExporter `json:"exporter,omitempty"`
24+
Affinity *corev1.Affinity `json:"affinity,omitempty"`
25+
SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"`
26+
ToleRations []corev1.Toleration `json:"toleRations,omitempty"`
27+
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
28+
Config map[string]string `json:"config,omitempty"`
29+
Annotations map[string]string `json:"annotations,omitempty"`
30+
DisablePersistence bool `json:"disablePersistence,omitempty"`
2831

2932
// Sentinel defines its cluster settings
3033
Sentinel SentinelSettings `json:"sentinel,omitempty"`
@@ -55,36 +58,27 @@ func init() {
5558
SchemeBuilder.Register(&RedisCluster{}, &RedisClusterList{})
5659
}
5760

58-
//// RedisSettings defines the specification of the redis cluster
59-
//type RedisSettings struct {
60-
// Size int32 `json:"size,omitempty"`
61-
// Resources corev1.ResourceRequirements `json:"resources,omitempty"`
62-
// Image string `json:"image,omitempty"`
63-
// Command []string `json:"command,omitempty"`
64-
// ShutdownConfigMap string `json:"shutdownConfigMap,omitempty"`
65-
// Storage RedisStorage `json:"storage,omitempty"`
66-
// Password string `json:"password,omitempty"`
67-
// Exporter RedisExporter `json:"exporter,omitempty"`
68-
// Affinity *corev1.Affinity `json:"affinity,omitempty"`
69-
// SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"`
70-
//}
71-
7261
// RedisExporter defines the specification for the redis exporter
7362
type RedisExporter struct {
74-
Enabled bool `json:"enabled,omitempty"`
75-
Image string `json:"image,omitempty"`
63+
Enabled bool `json:"enabled,omitempty"`
64+
Image string `json:"image,omitempty"`
65+
ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy,omitempty"`
7666
}
7767

7868
// SentinelSettings defines the specification of the sentinel cluster
7969
type SentinelSettings struct {
80-
Image string `json:"image,omitempty"`
81-
Replicas int32 `json:"replicas,omitempty"`
82-
Resources corev1.ResourceRequirements `json:"resources,omitempty"`
83-
CustomConfig []string `json:"customConfig,omitempty"`
84-
Command []string `json:"command,omitempty"`
85-
Affinity *corev1.Affinity `json:"affinity,omitempty"`
86-
SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"`
87-
ToleRations []corev1.Toleration `json:"tolerations,omitempty"`
70+
Image string `json:"image,omitempty"`
71+
ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy,omitempty"`
72+
ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"`
73+
Replicas int32 `json:"replicas,omitempty"`
74+
Resources corev1.ResourceRequirements `json:"resources,omitempty"`
75+
CustomConfig []string `json:"customConfig,omitempty"`
76+
Command []string `json:"command,omitempty"`
77+
Affinity *corev1.Affinity `json:"affinity,omitempty"`
78+
SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"`
79+
ToleRations []corev1.Toleration `json:"tolerations,omitempty"`
80+
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
81+
Annotations map[string]string `json:"annotations,omitempty"`
8882
}
8983

9084
// RedisStorage defines the structure used to store the Redis Data

‎pkg/apis/redis/v1beta1/zz_generated.deepcopy.go‎

Lines changed: 31 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎pkg/controller/service/generator.go‎

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -231,14 +231,16 @@ func generateRedisStatefulSet(rc *redisv1beta1.RedisCluster, labels map[string]s
231231
Annotations: rc.Spec.Annotations,
232232
},
233233
Spec: corev1.PodSpec{
234-
Affinity: getAffinity(rc.Spec.Affinity, labels),
235-
Tolerations: rc.Spec.ToleRations,
236-
SecurityContext: getSecurityContext(rc.Spec.SecurityContext),
234+
Affinity: getAffinity(rc.Spec.Affinity, labels),
235+
Tolerations: rc.Spec.ToleRations,
236+
NodeSelector: rc.Spec.NodeSelector,
237+
SecurityContext: getSecurityContext(rc.Spec.SecurityContext),
238+
ImagePullSecrets: rc.Spec.ImagePullSecrets,
237239
Containers: []corev1.Container{
238240
{
239241
Name: "redis",
240242
Image: rc.Spec.Image,
241-
ImagePullPolicy: "Always",
243+
ImagePullPolicy: pullPolicy(rc.Spec.ImagePullPolicy),
242244
Ports: []corev1.ContainerPort{
243245
{
244246
Name: "redis",
@@ -332,17 +334,20 @@ func generateSentinelStatefulSet(rc *redisv1beta1.RedisCluster, labels map[strin
332334
},
333335
Template: corev1.PodTemplateSpec{
334336
ObjectMeta: metav1.ObjectMeta{
335-
Labels: labels,
337+
Labels: labels,
338+
Annotations: rc.Spec.Sentinel.Annotations,
336339
},
337340
Spec: corev1.PodSpec{
338-
Affinity: getAffinity(rc.Spec.Sentinel.Affinity, labels),
339-
Tolerations: rc.Spec.Sentinel.ToleRations,
340-
SecurityContext: getSecurityContext(rc.Spec.Sentinel.SecurityContext),
341+
Affinity: getAffinity(rc.Spec.Sentinel.Affinity, labels),
342+
Tolerations: rc.Spec.Sentinel.ToleRations,
343+
NodeSelector: rc.Spec.Sentinel.NodeSelector,
344+
SecurityContext: getSecurityContext(rc.Spec.Sentinel.SecurityContext),
345+
ImagePullSecrets: rc.Spec.Sentinel.ImagePullSecrets,
341346
InitContainers: []corev1.Container{
342347
{
343348
Name: "sentinel-config-copy",
344-
Image: rc.Spec.Image,
345-
ImagePullPolicy: "IfNotPresent",
349+
Image: rc.Spec.Sentinel.Image,
350+
ImagePullPolicy: pullPolicy(rc.Spec.Sentinel.ImagePullPolicy),
346351
VolumeMounts: []corev1.VolumeMount{
347352
{
348353
Name: "sentinel-config",
@@ -373,8 +378,8 @@ func generateSentinelStatefulSet(rc *redisv1beta1.RedisCluster, labels map[strin
373378
Containers: []corev1.Container{
374379
{
375380
Name: "sentinel",
376-
Image: rc.Spec.Image,
377-
ImagePullPolicy: "Always",
381+
Image: rc.Spec.Sentinel.Image,
382+
ImagePullPolicy: pullPolicy(rc.Spec.Sentinel.ImagePullPolicy),
378383
Ports: []corev1.ContainerPort{
379384
{
380385
Name: "sentinel",
@@ -489,7 +494,7 @@ func createRedisExporterContainer(rc *redisv1beta1.RedisCluster) corev1.Containe
489494
container := corev1.Container{
490495
Name: exporterContainerName,
491496
Image: rc.Spec.Exporter.Image,
492-
ImagePullPolicy: "Always",
497+
ImagePullPolicy: pullPolicy(rc.Spec.Exporter.ImagePullPolicy),
493498
Env: []corev1.EnvVar{
494499
{
495500
Name: "REDIS_ALIAS",
@@ -724,3 +729,10 @@ func newHeadLessSvcForCR(cluster *redisv1beta1.RedisCluster, labels map[string]s
724729

725730
return svc
726731
}
732+
733+
func pullPolicy(specPolicy corev1.PullPolicy) corev1.PullPolicy {
734+
if specPolicy == "" {
735+
return corev1.PullAlways
736+
}
737+
return specPolicy
738+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /