Skip to content

Commit

Permalink
feat: add securityContext for exporter, initcontainers and sidecars (O…
Browse files Browse the repository at this point in the history
…T-CONTAINER-KIT#987)

* feat: add securityContext for exporter, initcontainers and sidecars

Signed-off-by: laurentiusoica <laurentiu.soica@spirent.com>

* fix: add docs

Signed-off-by: laurentiusoica <laurentiu.soica@spirent.com>

* fix: RedisExporterSecurityContext instead of SecurityContext

Signed-off-by: laurentiusoica <laurentiu.soica@spirent.com>

* fix: code review

Signed-off-by: laurentiusoica <laurentiu.soica@spirent.com>

* fix: refresh crds

Signed-off-by: laurentiusoica <laurentiu.soica@spirent.com>

* fix: refresh crds

Signed-off-by: laurentiusoica <laurentiu.soica@spirent.com>

---------

Signed-off-by: laurentiusoica <laurentiu.soica@spirent.com>
Co-authored-by: laurentiusoica <laurentiu.soica@spirent.com>
Signed-off-by: Matt Robinson <mattrobinsonsre@gmail.com>
  • Loading branch information
2 people authored and mattrobinsonsre committed Jul 11, 2024
1 parent aad2d83 commit 0465cf2
Show file tree
Hide file tree
Showing 18 changed files with 10,791 additions and 876 deletions.
1 change: 1 addition & 0 deletions api/common_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ type RedisExporter struct {
Resources *corev1.ResourceRequirements `json:"resources,omitempty"`
ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy,omitempty"`
EnvVars *[]corev1.EnvVar `json:"env,omitempty"`
SecurityContext *corev1.SecurityContext `json:"securityContext,omitempty"`
}

// RedisConfig defines the external configuration of Redis
Expand Down
10 changes: 6 additions & 4 deletions api/v1beta2/common_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,11 @@ type ACLConfig struct {

// Sidecar for each Redis pods
type Sidecar struct {
common.Sidecar `json:",inline"`
Volumes *[]corev1.VolumeMount `json:"mountPath,omitempty"`
Command []string `json:"command,omitempty" protobuf:"bytes,3,rep,name=command"`
Ports *[]corev1.ContainerPort `json:"ports,omitempty" patchStrategy:"merge" patchMergeKey:"containerPort" protobuf:"bytes,6,rep,name=ports"`
common.Sidecar `json:",inline"`
Volumes *[]corev1.VolumeMount `json:"mountPath,omitempty"`
Command []string `json:"command,omitempty" protobuf:"bytes,3,rep,name=command"`
Ports *[]corev1.ContainerPort `json:"ports,omitempty" patchStrategy:"merge" patchMergeKey:"containerPort" protobuf:"bytes,6,rep,name=ports"`
SecurityContext *corev1.SecurityContext `json:"securityContext,omitempty"`
}

// InitContainer for each Redis pods
Expand All @@ -88,4 +89,5 @@ type InitContainer struct {
EnvVars *[]corev1.EnvVar `json:"env,omitempty"`
Command []string `json:"command,omitempty"`
Args []string `json:"args,omitempty"`
SecurityContext *corev1.SecurityContext `json:"securityContext,omitempty"`
}
10 changes: 10 additions & 0 deletions api/v1beta2/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions api/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3,222 changes: 2,870 additions & 352 deletions charts/redis-operator/crds/redis-cluster.yaml

Large diffs are not rendered by default.

2,079 changes: 1,893 additions & 186 deletions charts/redis-operator/crds/redis-replication.yaml

Large diffs are not rendered by default.

1,581 changes: 1,495 additions & 86 deletions charts/redis-operator/crds/redis-sentinel.yaml

Large diffs are not rendered by default.

2,073 changes: 1,887 additions & 186 deletions charts/redis-operator/crds/redis.yaml

Large diffs are not rendered by default.

679 changes: 679 additions & 0 deletions config/crd/bases/redis.redis.opstreelabs.in_redis.yaml

Large diffs are not rendered by default.

803 changes: 741 additions & 62 deletions config/crd/bases/redis.redis.opstreelabs.in_redisclusters.yaml

Large diffs are not rendered by default.

679 changes: 679 additions & 0 deletions config/crd/bases/redis.redis.opstreelabs.in_redisreplications.yaml

Large diffs are not rendered by default.

510 changes: 510 additions & 0 deletions config/crd/bases/redis.redis.opstreelabs.in_redissentinels.yaml

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions docs/content/en/docs/CRD Reference/Redis API/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,7 @@ _Appears in:_
| `resources` _[ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core)_ | |
| `imagePullPolicy` _[ImagePullPolicy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy)_ | |
| `env` _[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#envvar-v1-core)_ | |
| `securityContext` _[PodSecurityContext](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#podsecuritycontext-v1-core)_ | |

#### RedisFollower

Expand Down Expand Up @@ -323,6 +324,7 @@ _Appears in:_
| `imagePullPolicy` _[ImagePullPolicy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy)_ | |
| `resources` _[ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#resourcerequirements-v1-core)_ | |
| `env` _[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#envvar-v1-core)_ | |
| `securityContext` _[PodSecurityContext](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#podsecuritycontext-v1-core)_ | |

#### Storage

Expand Down
2 changes: 2 additions & 0 deletions k8sutils/redis-cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ func generateRedisClusterInitContainerParams(cr *redisv1beta2.RedisCluster) init
AdditionalEnvVariable: initContainer.EnvVars,
Command: initContainer.Command,
Arguments: initContainer.Args,
SecurityContext: initContainer.SecurityContext,
}

if cr.Spec.Storage != nil {
Expand Down Expand Up @@ -177,6 +178,7 @@ func generateRedisClusterContainerParams(cl kubernetes.Interface, logger logr.Lo
if cr.Spec.RedisExporter != nil {
containerProp.RedisExporterImage = cr.Spec.RedisExporter.Image
containerProp.RedisExporterImagePullPolicy = cr.Spec.RedisExporter.ImagePullPolicy
containerProp.RedisExporterSecurityContext = cr.Spec.RedisExporter.SecurityContext

if cr.Spec.RedisExporter.Resources != nil {
containerProp.RedisExporterResources = cr.Spec.RedisExporter.Resources
Expand Down
2 changes: 2 additions & 0 deletions k8sutils/redis-replication.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ func generateRedisReplicationContainerParams(cr *redisv1beta2.RedisReplication)
if cr.Spec.RedisExporter != nil {
containerProp.RedisExporterImage = cr.Spec.RedisExporter.Image
containerProp.RedisExporterImagePullPolicy = cr.Spec.RedisExporter.ImagePullPolicy
containerProp.RedisExporterSecurityContext = cr.Spec.RedisExporter.SecurityContext

if cr.Spec.RedisExporter.Resources != nil {
containerProp.RedisExporterResources = cr.Spec.RedisExporter.Resources
Expand Down Expand Up @@ -188,6 +189,7 @@ func generateRedisReplicationInitContainerParams(cr *redisv1beta2.RedisReplicati
AdditionalEnvVariable: initContainer.EnvVars,
Command: initContainer.Command,
Arguments: initContainer.Args,
SecurityContext: initContainer.SecurityContext,
}

if cr.Spec.Storage != nil {
Expand Down
2 changes: 2 additions & 0 deletions k8sutils/redis-sentinel.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ func generateRedisSentinelInitContainerParams(cr *redisv1beta2.RedisSentinel) in
AdditionalEnvVariable: initContainer.EnvVars,
Command: initContainer.Command,
Arguments: initContainer.Args,
SecurityContext: initContainer.SecurityContext,
}
}
return initcontainerProp
Expand Down Expand Up @@ -162,6 +163,7 @@ func generateRedisSentinelContainerParams(ctx context.Context, client kubernetes
if cr.Spec.RedisExporter != nil {
containerProp.RedisExporterImage = cr.Spec.RedisExporter.Image
containerProp.RedisExporterImagePullPolicy = cr.Spec.RedisExporter.ImagePullPolicy
containerProp.RedisExporterSecurityContext = cr.Spec.RedisExporter.SecurityContext

if cr.Spec.RedisExporter.Resources != nil {
containerProp.RedisExporterResources = cr.Spec.RedisExporter.Resources
Expand Down
2 changes: 2 additions & 0 deletions k8sutils/redis-standalone.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ func generateRedisStandaloneContainerParams(cr *redisv1beta2.Redis) containerPar
if cr.Spec.RedisExporter.EnvVars != nil {
containerProp.RedisExporterEnv = cr.Spec.RedisExporter.EnvVars
}
containerProp.RedisExporterSecurityContext = cr.Spec.RedisExporter.SecurityContext
}
if cr.Spec.ReadinessProbe != nil {
containerProp.ReadinessProbe = cr.Spec.ReadinessProbe
Expand Down Expand Up @@ -186,6 +187,7 @@ func generateRedisStandaloneInitContainerParams(cr *redisv1beta2.Redis) initCont
AdditionalEnvVariable: initContainer.EnvVars,
Command: initContainer.Command,
Arguments: initContainer.Args,
SecurityContext: initContainer.SecurityContext,
}

if cr.Spec.Storage != nil {
Expand Down
5 changes: 5 additions & 0 deletions k8sutils/statefulset.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ type containerParameters struct {
RedisExporterResources *corev1.ResourceRequirements
RedisExporterEnv *[]corev1.EnvVar
RedisExporterPort *int
RedisExporterSecurityContext *corev1.SecurityContext
Role string
EnabledPassword *bool
SecretName *string
Expand Down Expand Up @@ -146,6 +147,7 @@ type initContainerParameters struct {
AdditionalEnvVariable *[]corev1.EnvVar
AdditionalVolume []corev1.Volume
AdditionalMountPath []corev1.VolumeMount
SecurityContext *corev1.SecurityContext
}

// CreateOrUpdateStateFul method will create or update Redis service
Expand Down Expand Up @@ -438,6 +440,7 @@ func generateContainerDef(name string, containerParams containerParameters, clus
Name: sidecar.Name,
Image: sidecar.Image,
ImagePullPolicy: sidecar.ImagePullPolicy,
SecurityContext: sidecar.SecurityContext,
}
if sidecar.Command != nil {
container.Command = sidecar.Command
Expand Down Expand Up @@ -473,6 +476,7 @@ func generateInitContainerDef(name string, initcontainerParams initContainerPara
Command: initcontainerParams.Command,
Args: initcontainerParams.Arguments,
VolumeMounts: getVolumeMount(name, initcontainerParams.PersistenceEnabled, false, false, nil, mountpath, nil, nil),
SecurityContext: initcontainerParams.SecurityContext,
},
}

Expand Down Expand Up @@ -540,6 +544,7 @@ func enableRedisMonitoring(params containerParameters) corev1.Container {
Protocol: corev1.ProtocolTCP,
},
},
SecurityContext: params.RedisExporterSecurityContext,
}
if params.RedisExporterResources != nil {
exporterDefinition.Resources = *params.RedisExporterResources
Expand Down

0 comments on commit 0465cf2

Please sign in to comment.