Skip to content

Commit f89d72e

Browse files
Merge pull request #29513 from openshift-cherrypick-robot/cherry-pick-29395-to-release-4.18
[release-4.18] OCPBUGS-49687: Add Readiness Probe to Router Status Tests
2 parents 0c7bed9 + f2eadcb commit f89d72e

File tree

1 file changed

+59
-2
lines changed

1 file changed

+59
-2
lines changed

test/extended/router/stress.go

+59-2
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,10 @@ import (
2727
"k8s.io/client-go/tools/cache"
2828
e2e "k8s.io/kubernetes/test/e2e/framework"
2929
admissionapi "k8s.io/pod-security-admission/api"
30+
"k8s.io/utils/ptr"
3031

3132
routev1 "github.com/openshift/api/route/v1"
33+
v2 "github.com/openshift/api/security/v1"
3234
routeclientset "github.com/openshift/client-go/route/clientset/versioned"
3335
v1 "github.com/openshift/client-go/route/clientset/versioned/typed/route/v1"
3436
exutil "github.com/openshift/origin/test/extended/util"
@@ -78,6 +80,24 @@ var _ = g.Describe("[sig-network][Feature:Router][apigroup:route.openshift.io]",
7880
Name: "system:router",
7981
},
8082
}, metav1.CreateOptions{})
83+
// The router typically runs with allowPrivilegeEscalation enabled; however, all service accounts are assigned
84+
// to restricted-v2 scc by default, which disallows privilege escalation. The restricted policy permits
85+
// privilege escalation.
86+
_, err = oc.AdminKubeClient().RbacV1().RoleBindings(ns).Create(context.Background(), &rbacv1.RoleBinding{
87+
ObjectMeta: metav1.ObjectMeta{
88+
Name: "router-restricted",
89+
},
90+
Subjects: []rbacv1.Subject{
91+
{
92+
Kind: "ServiceAccount",
93+
Name: "default",
94+
},
95+
},
96+
RoleRef: rbacv1.RoleRef{
97+
Kind: "ClusterRole",
98+
Name: "system:openshift:scc:restricted",
99+
},
100+
}, metav1.CreateOptions{})
81101
o.Expect(err).NotTo(o.HaveOccurred())
82102
})
83103

@@ -546,17 +566,54 @@ func scaledRouter(name, image string, args []string) *appsv1.ReplicaSet {
546566
Template: corev1.PodTemplateSpec{
547567
ObjectMeta: metav1.ObjectMeta{
548568
Labels: map[string]string{"app": name},
569+
Annotations: map[string]string{
570+
// The restricted-v2 scc preempts restricted, so we must pin to restricted.
571+
v2.RequiredSCCAnnotation: "restricted",
572+
},
549573
},
550574
Spec: corev1.PodSpec{
551575
TerminationGracePeriodSeconds: &one,
552576
Containers: []corev1.Container{
553577
{
554578
Env: []corev1.EnvVar{
555-
{Name: "NAME", ValueFrom: &corev1.EnvVarSource{FieldRef: &corev1.ObjectFieldSelector{FieldPath: "metadata.name"}}},
579+
{
580+
Name: "NAME", ValueFrom: &corev1.EnvVarSource{
581+
FieldRef: &corev1.ObjectFieldSelector{
582+
FieldPath: "metadata.name",
583+
},
584+
},
585+
},
586+
{
587+
Name: "POD_NAMESPACE",
588+
ValueFrom: &corev1.EnvVarSource{
589+
FieldRef: &corev1.ObjectFieldSelector{
590+
FieldPath: "metadata.namespace",
591+
},
592+
},
593+
},
556594
},
557595
Name: "router",
558596
Image: image,
559-
Args: args,
597+
Args: append(args, "--stats-port=1936", "--metrics-type=haproxy"),
598+
Ports: []corev1.ContainerPort{
599+
{
600+
ContainerPort: 1936,
601+
Name: "stats",
602+
Protocol: corev1.ProtocolTCP,
603+
},
604+
},
605+
ReadinessProbe: &corev1.Probe{
606+
ProbeHandler: corev1.ProbeHandler{
607+
HTTPGet: &corev1.HTTPGetAction{
608+
Path: "/healthz/ready",
609+
Port: intstr.FromInt32(1936),
610+
},
611+
},
612+
},
613+
SecurityContext: &corev1.SecurityContext{
614+
// Default is true, but explicitly specified here for clarity.
615+
AllowPrivilegeEscalation: ptr.To[bool](true),
616+
},
560617
},
561618
},
562619
},

0 commit comments

Comments
 (0)