Skip to content

Commit 4a0f6ce

Browse files
committed
[public-api-server] Add deployment into installer
1 parent 3c5e91d commit 4a0f6ce

File tree

3 files changed

+83
-1
lines changed

3 files changed

+83
-1
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// Copyright (c) 2021 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 public_api_server
6+
7+
const (
8+
Component = "public-api-server"
9+
ContainerPort = 9000
10+
PortName = "http"
11+
)

install/installer/pkg/components/public-api-server/deployment.go

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,16 @@ package public_api_server
55

66
import (
77
"github.com/gitpod-io/gitpod/common-go/log"
8+
"github.com/gitpod-io/gitpod/installer/pkg/cluster"
89
"github.com/gitpod-io/gitpod/installer/pkg/common"
910
"github.com/gitpod-io/gitpod/installer/pkg/config/v1/experimental"
11+
appsv1 "k8s.io/api/apps/v1"
12+
corev1 "k8s.io/api/core/v1"
13+
"k8s.io/apimachinery/pkg/api/resource"
14+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1015
"k8s.io/apimachinery/pkg/runtime"
16+
"k8s.io/apimachinery/pkg/util/intstr"
17+
"k8s.io/utils/pointer"
1118
)
1219

1320
func deployment(ctx *common.RenderContext) ([]runtime.Object, error) {
@@ -26,5 +33,68 @@ func deployment(ctx *common.RenderContext) ([]runtime.Object, error) {
2633
publicAPIConfig := experimentalCfg.WebApp.PublicAPI
2734
log.Debug("Detected experimental.WebApp.PublicApi configuration", publicAPIConfig)
2835

29-
return nil, nil
36+
labels := common.DefaultLabels(Component)
37+
return []runtime.Object{
38+
&appsv1.Deployment{
39+
TypeMeta: common.TypeMetaDeployment,
40+
ObjectMeta: metav1.ObjectMeta{
41+
Name: Component,
42+
Namespace: ctx.Namespace,
43+
Labels: labels,
44+
},
45+
Spec: appsv1.DeploymentSpec{
46+
Selector: &metav1.LabelSelector{MatchLabels: labels},
47+
Replicas: pointer.Int32(1),
48+
Strategy: common.DeploymentStrategy,
49+
Template: corev1.PodTemplateSpec{
50+
ObjectMeta: metav1.ObjectMeta{
51+
Name: Component,
52+
Namespace: ctx.Namespace,
53+
Labels: labels,
54+
},
55+
Spec: corev1.PodSpec{
56+
Affinity: common.Affinity(cluster.AffinityLabelMeta),
57+
ServiceAccountName: Component,
58+
EnableServiceLinks: pointer.Bool(false),
59+
DNSPolicy: "ClusterFirst",
60+
RestartPolicy: "Always",
61+
TerminationGracePeriodSeconds: pointer.Int64(30),
62+
Containers: []corev1.Container{{
63+
Name: Component,
64+
Image: common.ImageName(ctx.Config.Repository, Component, ctx.VersionManifest.Components.PublicAPIServer.Version),
65+
ImagePullPolicy: corev1.PullIfNotPresent,
66+
Resources: corev1.ResourceRequirements{
67+
Requests: corev1.ResourceList{
68+
"cpu": resource.MustParse("100m"),
69+
"memory": resource.MustParse("32Mi"),
70+
},
71+
},
72+
Ports: []corev1.ContainerPort{{
73+
ContainerPort: ContainerPort,
74+
Name: PortName,
75+
}},
76+
SecurityContext: &corev1.SecurityContext{
77+
Privileged: pointer.Bool(false),
78+
},
79+
Env: common.MergeEnv(
80+
common.DefaultEnv(&ctx.Config),
81+
),
82+
ReadinessProbe: &corev1.Probe{
83+
ProbeHandler: corev1.ProbeHandler{
84+
HTTPGet: &corev1.HTTPGetAction{
85+
Path: "/",
86+
Port: intstr.IntOrString{IntVal: ContainerPort},
87+
Scheme: corev1.URISchemeHTTP,
88+
},
89+
},
90+
FailureThreshold: 3,
91+
SuccessThreshold: 1,
92+
TimeoutSeconds: 1,
93+
},
94+
}},
95+
},
96+
},
97+
},
98+
},
99+
}, nil
30100
}

install/installer/pkg/config/versions/versions.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ type Components struct {
3333
OpenVSXProxy Versioned `json:"openVSXProxy"`
3434
PaymentEndpoint Versioned `json:"paymentEndpoint"`
3535
Proxy Versioned `json:"proxy"`
36+
PublicAPIServer Versioned `json:"public-api-server"`
3637
RegistryFacade Versioned `json:"registryFacade"`
3738
Server Versioned `json:"server"`
3839
ServiceWaiter Versioned `json:"serviceWaiter"`

0 commit comments

Comments
 (0)