Skip to content

Commit

Permalink
Add Security Context
Browse files Browse the repository at this point in the history
Signed-off-by: Muhammad Raisul Islam Evan <[email protected]>
  • Loading branch information
Evanraisul committed May 2, 2024
1 parent 71b8b1a commit e4f1066
Showing 1 changed file with 46 additions and 1 deletion.
47 changes: 46 additions & 1 deletion apis/kubedb/v1alpha2/memcached_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,23 @@ import (
"fmt"

"kubedb.dev/apimachinery/apis"
catalog "kubedb.dev/apimachinery/apis/catalog/v1alpha1"
"kubedb.dev/apimachinery/apis/kubedb"
"kubedb.dev/apimachinery/crds"

promapi "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
"gomodules.xyz/pointer"
core "k8s.io/api/core/v1"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
appslister "k8s.io/client-go/listers/apps/v1"
"kmodules.xyz/client-go/apiextensions"
meta_util "kmodules.xyz/client-go/meta"
"kmodules.xyz/client-go/policy/secomp"
appcat "kmodules.xyz/custom-resources/apis/appcatalog/v1alpha1"
mona "kmodules.xyz/monitoring-agent-api/api/v1"
ofst "kmodules.xyz/offshoot-api/api/v1"
)

func (_ Memcached) CustomResourceDefinition() *apiextensions.CustomResourceDefinition {
Expand Down Expand Up @@ -166,11 +171,12 @@ func (m Memcached) StatsServiceLabels() map[string]string {
return m.ServiceLabels(StatsServiceAlias, map[string]string{LabelRole: RoleStats})
}

func (m *Memcached) SetDefaults() {
func (m *Memcached) SetDefaults(mcVersion *catalog.MemcachedVersion) {
if m == nil {
return
}

m.setDefaultContainerSecurityContext(mcVersion, &m.Spec.PodTemplate)
// perform defaulting
if m.Spec.TerminationPolicy == "" {
m.Spec.TerminationPolicy = TerminationPolicyDelete
Expand All @@ -196,6 +202,45 @@ func (m *Memcached) SetHealthCheckerDefaults() {
}
}

func (m *Memcached) setDefaultContainerSecurityContext(mcVersion *catalog.MemcachedVersion, podTemplate *ofst.PodTemplateSpec) {
if podTemplate == nil {
return
}
if podTemplate.Spec.ContainerSecurityContext == nil {
podTemplate.Spec.ContainerSecurityContext = &corev1.SecurityContext{}
}
if podTemplate.Spec.SecurityContext == nil {
podTemplate.Spec.SecurityContext = &corev1.PodSecurityContext{}
}
if podTemplate.Spec.SecurityContext.FSGroup == nil {
podTemplate.Spec.SecurityContext.FSGroup = mcVersion.Spec.SecurityContext.RunAsUser
}
m.assignDefaultContainerSecurityContext(mcVersion, podTemplate.Spec.ContainerSecurityContext)
}

func (m *Memcached) assignDefaultContainerSecurityContext(mcVersion *catalog.MemcachedVersion, sc *core.SecurityContext) {
if sc.AllowPrivilegeEscalation == nil {
sc.AllowPrivilegeEscalation = pointer.BoolP(false)
}
if sc.Capabilities == nil {
sc.Capabilities = &corev1.Capabilities{
Drop: []corev1.Capability{"ALL"},
}
}
if sc.RunAsNonRoot == nil {
sc.RunAsNonRoot = pointer.BoolP(true)
}
if sc.RunAsUser == nil {
sc.RunAsUser = mcVersion.Spec.SecurityContext.RunAsUser
}
if sc.RunAsGroup == nil {
sc.RunAsGroup = mcVersion.Spec.SecurityContext.RunAsUser
}
if sc.SeccompProfile == nil {
sc.SeccompProfile = secomp.DefaultSeccompProfile()
}
}

func (m *MemcachedSpec) GetPersistentSecrets() []string {
return nil
}
Expand Down

0 comments on commit e4f1066

Please sign in to comment.