Skip to content

Commit 943f4c1

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

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
@@ -14,6 +14,8 @@ import (
1414
"strings"
1515

1616
"github.com/gitpod-io/gitpod/common-go/baseserver"
17+
public_api_server "github.com/gitpod-io/gitpod/installer/pkg/components/public-api-server"
18+
"github.com/gitpod-io/gitpod/installer/pkg/components/server"
1719
config "github.com/gitpod-io/gitpod/installer/pkg/config/v1"
1820
"github.com/gitpod-io/gitpod/installer/pkg/config/v1/experimental"
1921

@@ -493,6 +495,48 @@ func RedisWaiterContainer(ctx *RenderContext) *corev1.Container {
493495
}
494496
}
495497

498+
// ServerDeploymentWaiterContainer is the container used to wait for the deployment/server to be ready
499+
// it requires deployment get access to the cluster
500+
func ServerDeploymentWaiterContainer(ctx *RenderContext) *corev1.Container {
501+
image := ctx.ImageName(ctx.Config.Repository, server.Component, ctx.VersionManifest.Components.Server.Version)
502+
return &corev1.Container{
503+
Name: "server-waiter",
504+
Image: ctx.ImageName(ctx.Config.Repository, "service-waiter", ctx.VersionManifest.Components.ServiceWaiter.Version),
505+
Args: []string{
506+
"-v",
507+
"server",
508+
"--image",
509+
image,
510+
},
511+
SecurityContext: &corev1.SecurityContext{
512+
Privileged: pointer.Bool(false),
513+
AllowPrivilegeEscalation: pointer.Bool(false),
514+
RunAsUser: pointer.Int64(31001),
515+
},
516+
}
517+
}
518+
519+
// PublicAPIServerDeploymentWaiterContainer is the container used to wait for the deployment/public-api-server to be ready
520+
// it requires deployment get access to the cluster
521+
func PublicAPIServerDeploymentWaiterContainer(ctx *RenderContext) *corev1.Container {
522+
image := ctx.ImageName(ctx.Config.Repository, public_api_server.Component, 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)