Skip to content

Commit 3dee5ef

Browse files
committed
[installer] make dashboard to wait server and papi
1 parent 68e6562 commit 3dee5ef

File tree

5 files changed

+90
-5
lines changed

5 files changed

+90
-5
lines changed

install/installer/pkg/common/common.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,50 @@ func RedisWaiterContainer(ctx *RenderContext) *corev1.Container {
493493
}
494494
}
495495

496+
// ServerDeploymentWaiterContainer is the container used to wait for the deployment/server to be ready
497+
// it requires deployment get access to the cluster
498+
func ServerDeploymentWaiterContainer(ctx *RenderContext) *corev1.Container {
499+
// TODO: use common-go
500+
image := ctx.ImageName(ctx.Config.Repository, "server", ctx.VersionManifest.Components.Server.Version)
501+
return &corev1.Container{
502+
Name: "server-waiter",
503+
Image: ctx.ImageName(ctx.Config.Repository, "service-waiter", ctx.VersionManifest.Components.ServiceWaiter.Version),
504+
Args: []string{
505+
"-v",
506+
"server",
507+
"--image",
508+
image,
509+
},
510+
SecurityContext: &corev1.SecurityContext{
511+
Privileged: pointer.Bool(false),
512+
AllowPrivilegeEscalation: pointer.Bool(false),
513+
RunAsUser: pointer.Int64(31001),
514+
},
515+
}
516+
}
517+
518+
// PublicAPIServerDeploymentWaiterContainer is the container used to wait for the deployment/public-api-server to be ready
519+
// it requires deployment get access to the cluster
520+
func PublicAPIServerDeploymentWaiterContainer(ctx *RenderContext) *corev1.Container {
521+
// TODO: use common-go
522+
image := ctx.ImageName(ctx.Config.Repository, "public-api-server", ctx.VersionManifest.Components.Server.Version)
523+
return &corev1.Container{
524+
Name: "papi-server-waiter",
525+
Image: ctx.ImageName(ctx.Config.Repository, "service-waiter", ctx.VersionManifest.Components.ServiceWaiter.Version),
526+
Args: []string{
527+
"-v",
528+
"public-api-server",
529+
"--image",
530+
image,
531+
},
532+
SecurityContext: &corev1.SecurityContext{
533+
Privileged: pointer.Bool(false),
534+
AllowPrivilegeEscalation: pointer.Bool(false),
535+
RunAsUser: pointer.Int64(31001),
536+
},
537+
}
538+
}
539+
496540
func KubeRBACProxyContainer(ctx *RenderContext) *corev1.Container {
497541
return KubeRBACProxyContainerWithConfig(ctx)
498542
}

install/installer/pkg/components/dashboard/deployment.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ func deployment(ctx *common.RenderContext) ([]runtime.Object, error) {
4848
DNSPolicy: corev1.DNSClusterFirst,
4949
RestartPolicy: corev1.RestartPolicyAlways,
5050
TerminationGracePeriodSeconds: pointer.Int64(30),
51+
InitContainers: []corev1.Container{
52+
*common.PublicAPIServerDeploymentWaiterContainer(ctx),
53+
*common.ServerDeploymentWaiterContainer(ctx),
54+
},
5155
Containers: []corev1.Container{{
5256
Name: Component,
5357
Image: ctx.ImageName(ctx.Config.Repository, Component, ctx.VersionManifest.Components.Dashboard.Version),

install/installer/pkg/components/dashboard/objects.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,19 @@
44

55
package dashboard
66

7-
import "github.com/gitpod-io/gitpod/installer/pkg/common"
7+
import (
8+
"github.com/gitpod-io/gitpod/installer/pkg/common"
9+
"k8s.io/apimachinery/pkg/runtime"
10+
)
811

912
var Objects = common.CompositeRenderFunc(
1013
deployment,
1114
networkpolicy,
1215
rolebinding,
1316
pdb,
17+
func(ctx *common.RenderContext) ([]runtime.Object, error) {
18+
return Role(ctx)
19+
},
1420
common.GenerateService(Component, []common.ServicePort{
1521
{
1622
Name: PortName,
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Copyright (c) 2023 Gitpod GmbH. All rights reserved.
2+
// Licensed under the GNU Affero General Public License (AGPL).
3+
// See License.AGPL.txt in the project root for license information.
4+
5+
package dashboard
6+
7+
import (
8+
"github.com/gitpod-io/gitpod/installer/pkg/common"
9+
10+
rbacv1 "k8s.io/api/rbac/v1"
11+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
12+
"k8s.io/apimachinery/pkg/runtime"
13+
)
14+
15+
func Role(ctx *common.RenderContext) ([]runtime.Object, error) {
16+
return []runtime.Object{&rbacv1.Role{
17+
TypeMeta: common.TypeMetaRole,
18+
ObjectMeta: metav1.ObjectMeta{
19+
Name: Component,
20+
Namespace: ctx.Namespace,
21+
Labels: common.DefaultLabels(Component),
22+
},
23+
Rules: []rbacv1.PolicyRule{
24+
{
25+
APIGroups: []string{""},
26+
Resources: []string{"deployment"},
27+
Verbs: []string{
28+
"get",
29+
},
30+
},
31+
},
32+
}}, nil
33+
}

install/installer/pkg/components/dashboard/rolebinding.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
package dashboard
66

77
import (
8-
"fmt"
9-
108
"github.com/gitpod-io/gitpod/installer/pkg/common"
119

1210
rbacv1 "k8s.io/api/rbac/v1"
@@ -23,8 +21,8 @@ func rolebinding(ctx *common.RenderContext) ([]runtime.Object, error) {
2321
Labels: common.DefaultLabels(Component),
2422
},
2523
RoleRef: rbacv1.RoleRef{
26-
Kind: "ClusterRole",
27-
Name: fmt.Sprintf("%s-ns-psp:restricted-root-user", ctx.Namespace),
24+
Kind: "Role",
25+
Name: Component,
2826
APIGroup: "rbac.authorization.k8s.io",
2927
},
3028
Subjects: []rbacv1.Subject{{

0 commit comments

Comments
 (0)