@@ -5,9 +5,16 @@ package public_api_server
5
5
6
6
import (
7
7
"github.com/gitpod-io/gitpod/common-go/log"
8
+ "github.com/gitpod-io/gitpod/installer/pkg/cluster"
8
9
"github.com/gitpod-io/gitpod/installer/pkg/common"
9
10
"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"
10
15
"k8s.io/apimachinery/pkg/runtime"
16
+ "k8s.io/apimachinery/pkg/util/intstr"
17
+ "k8s.io/utils/pointer"
11
18
)
12
19
13
20
func deployment (ctx * common.RenderContext ) ([]runtime.Object , error ) {
@@ -26,5 +33,68 @@ func deployment(ctx *common.RenderContext) ([]runtime.Object, error) {
26
33
publicAPIConfig := experimentalCfg .WebApp .PublicAPI
27
34
log .Debug ("Detected experimental.WebApp.PublicApi configuration" , publicAPIConfig )
28
35
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
30
100
}
0 commit comments