Skip to content
This repository was archived by the owner on May 28, 2021. It is now read-only.

Add support for defining securityContext in cluster spec #218

Merged
merged 1 commit into from
Sep 17, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions pkg/apis/mysql/v1alpha1/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ type ClusterSpec struct {
// and server key for group replication SSL.
// +optional
SSLSecret *corev1.LocalObjectReference `json:"sslSecret,omitempty"`
// SecurityContext holds pod-level security attributes and common container settings.
SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"`
}

// ClusterConditionType represents a valid condition of a Cluster.
Expand Down
3 changes: 3 additions & 0 deletions pkg/resources/statefulsets/statefulset.go
Original file line number Diff line number Diff line change
Expand Up @@ -391,5 +391,8 @@ func NewForCluster(cluster *v1alpha1.Cluster, images operatoropts.Images, servic
if cluster.Spec.BackupVolumeClaimTemplate != nil {
ss.Spec.VolumeClaimTemplates = append(ss.Spec.VolumeClaimTemplates, *cluster.Spec.BackupVolumeClaimTemplate)
}
if cluster.Spec.SecurityContext != nil {
ss.Spec.Template.Spec.SecurityContext = cluster.Spec.SecurityContext
}
return ss
}
21 changes: 21 additions & 0 deletions pkg/resources/statefulsets/statefulset_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,3 +165,24 @@ func TestClusterCustomSSLSetup(t *testing.T) {

assert.True(t, hasExpectedVolumeMount, "Cluster is missing expected volume mount for custom SSL certs")
}

func TestClusterCustomSecurityContext(t *testing.T) {
userID := int64(27)
cluster := &v1alpha1.Cluster{
Spec: v1alpha1.ClusterSpec{
SecurityContext: &corev1.PodSecurityContext{
RunAsUser: &userID,
FSGroup: &userID,
},
},
}

statefulSet := NewForCluster(cluster, mockOperatorConfig().Images, "mycluster")

if statefulSet.Spec.Template.Spec.SecurityContext != nil {
assert.EqualValues(t, userID, *statefulSet.Spec.Template.Spec.SecurityContext.RunAsUser, "SecurityContext Spec runAsUser does not have expected value")
assert.Equal(t, userID, *statefulSet.Spec.Template.Spec.SecurityContext.FSGroup, "SecurityContext Spec fsGroup does not have expected value")
} else {
t.Errorf("StatefulSet Spec is missing SecurityContext definition")
}
}