Skip to content

Commit 0bba6f6

Browse files
committed
Add securityContext to skupper-router deployment
Fixes #2326
1 parent 24720f8 commit 0bba6f6

File tree

2 files changed

+46
-5
lines changed

2 files changed

+46
-5
lines changed

internal/kube/site/resources/apply.go

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
_ "embed"
77
"fmt"
88
"strconv"
9+
"strings"
910

1011
"k8s.io/apimachinery/pkg/runtime/schema"
1112
"sigs.k8s.io/yaml"
@@ -29,12 +30,12 @@ type Labelling interface {
2930
SetAnnotations(namespace string, name string, kind string, annotations map[string]string) bool
3031
}
3132

32-
func resourceTemplates(site *skupperv2alpha1.Site, group string, size sizing.Sizing, labelling Labelling) []resource.Template {
33+
func resourceTemplates(clients internalclient.Clients, site *skupperv2alpha1.Site, group string, size sizing.Sizing, labelling Labelling) []resource.Template {
3334
templates := []resource.Template{
3435
{
3536
Name: "deployment",
3637
Template: routerDeploymentTemplate,
37-
Parameters: getCoreParams(site, group, size).setLabelsAndAnnotations(labelling, site.Namespace, "skupper-router", "Deployment"),
38+
Parameters: getCoreParams(clients, site, group, size).setLabelsAndAnnotations(labelling, site.Namespace, "skupper-router", "Deployment"),
3839
Resource: schema.GroupVersionResource{
3940
Group: "apps",
4041
Version: "v1",
@@ -44,7 +45,7 @@ func resourceTemplates(site *skupperv2alpha1.Site, group string, size sizing.Siz
4445
{
4546
Name: "localService",
4647
Template: routerLocalServiceTemplate,
47-
Parameters: getCoreParams(site, group, size).setLabelsAndAnnotations(labelling, site.Namespace, "skupper-router-local", "Service"),
48+
Parameters: getCoreParams(clients, site, group, size).setLabelsAndAnnotations(labelling, site.Namespace, "skupper-router-local", "Service"),
4849
Resource: schema.GroupVersionResource{
4950
Group: "",
5051
Version: "v1",
@@ -68,6 +69,7 @@ type CoreParams struct {
6869
Labels map[string]string
6970
Annotations map[string]string
7071
EnableAntiAffinity bool
72+
AddPodSecurity bool
7173
}
7274

7375
func (p *CoreParams) setLabelsAndAnnotations(labelling Labelling, namespace string, name string, kind string) *CoreParams {
@@ -149,7 +151,7 @@ func configDigest(config *skupperv2alpha1.SiteSpec) string {
149151
return ""
150152
}
151153

152-
func getCoreParams(site *skupperv2alpha1.Site, group string, size sizing.Sizing) *CoreParams {
154+
func getCoreParams(clients internalclient.Clients, site *skupperv2alpha1.Site, group string, size sizing.Sizing) *CoreParams {
153155
return &CoreParams{
154156
SiteId: site.GetSiteId(),
155157
SiteName: site.Name,
@@ -162,11 +164,26 @@ func getCoreParams(site *skupperv2alpha1.Site, group string, size sizing.Sizing)
162164
Sizing: size,
163165
Labels: map[string]string{},
164166
EnableAntiAffinity: enableAntiAffinity(site),
167+
AddPodSecurity: addPodSecurityContext(clients),
168+
}
169+
}
170+
171+
// addPodSecurityContext Only added if server version is >=1.24
172+
func addPodSecurityContext(cli internalclient.Clients) bool {
173+
vi, err := cli.GetKubeClient().Discovery().ServerVersion()
174+
if err != nil {
175+
return false
176+
}
177+
// for kubernetes versions 1.24+
178+
if vi.Major == "1" && strings.Compare(vi.Minor, "24") >= 0 {
179+
return true
180+
} else {
181+
return false
165182
}
166183
}
167184

168185
func Apply(clients internalclient.Clients, ctx context.Context, site *skupperv2alpha1.Site, group string, size sizing.Sizing, labelling Labelling) error {
169-
for _, t := range resourceTemplates(site, group, size, labelling) {
186+
for _, t := range resourceTemplates(clients, site, group, size, labelling) {
170187
_, err := t.Apply(clients.GetDynamicClient(), ctx, site.Namespace)
171188
if err != nil {
172189
return err

internal/kube/site/resources/skupper-router-deployment.yaml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,12 @@ spec:
7979
successThreshold: 1
8080
timeoutSeconds: 1
8181
name: router
82+
securityContext:
83+
allowPrivilegeEscalation: false
84+
capabilities:
85+
drop:
86+
- ALL
87+
runAsNonRoot: true
8288
ports:
8389
- containerPort: 5671
8490
name: amqps
@@ -125,6 +131,12 @@ spec:
125131
image: {{ .AdaptorImage.Name }}
126132
imagePullPolicy: {{ .AdaptorImage.PullPolicy }}
127133
name: kube-adaptor
134+
securityContext:
135+
allowPrivilegeEscalation: false
136+
capabilities:
137+
drop:
138+
- ALL
139+
runAsNonRoot: true
128140
readinessProbe:
129141
failureThreshold: 3
130142
httpGet:
@@ -152,6 +164,12 @@ spec:
152164
image: {{ .AdaptorImage.Name }}
153165
imagePullPolicy: {{ .AdaptorImage.PullPolicy }}
154166
name: config-init
167+
securityContext:
168+
allowPrivilegeEscalation: false
169+
capabilities:
170+
drop:
171+
- ALL
172+
runAsNonRoot: true
155173
command: ["/app/kube-adaptor", "-init"]
156174
volumeMounts:
157175
- mountPath: /etc/skupper-router-certs
@@ -163,6 +181,12 @@ spec:
163181
volumes:
164182
- emptyDir: {}
165183
name: skupper-router-certs
184+
{{- if .AddPodSecurity }}
185+
securityContext:
186+
runAsNonRoot: true
187+
seccompProfile:
188+
type: RuntimeDefault
189+
{{- end }}
166190
{{- if .EnableAntiAffinity}}
167191
affinity:
168192
podAntiAffinity:

0 commit comments

Comments
 (0)