-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhello-world-template.yaml
219 lines (219 loc) · 6.5 KB
/
hello-world-template.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
kind: Template
apiVersion: template.openshift.io/v1
metadata:
name: hello-world-template
annotations:
openshift.io/display-name: Node.js
description: Simple Hello World app in NodeJS
tags: nodejs
iconClass: icon-nodejs
openshift.io/long-description: This template defines resources needed to develop a basic Hello World NodeJS application, including a build configuration and application deployment configuration. It does not include a database.
openshift.io/provider-display-name: jeremycaine
openshift.io/documentation-url: https://github.com/jeremycaine/hello-world
openshift.io/support-url: https://github.com/jeremycaine
template.openshift.io/bindable: 'false'
objects:
- kind: Service
apiVersion: v1
metadata:
name: "${NAME}-service"
annotations:
description: Exposes and load balances the application pods
spec:
ports:
- name: web
port: "${{SERVER_PORT}}"
targetPort: "${{SERVER_PORT}}"
selector:
name: "${NAME}"
- kind: Route
apiVersion: route.openshift.io/v1
metadata:
name: "${NAME}-route"
spec:
host: "${APPLICATION_DOMAIN}"
to:
kind: Service
name: "${NAME}-service"
- kind: ImageStream
apiVersion: image.openshift.io/v1
metadata:
labels:
app: "${NAME}"
app.kubernetes.io/component: "${NAME}"
app.kubernetes.io/instance: "${NAME}"
name: "${NAME}"
namespace: "${PROJECT}"
annotations:
description: Keeps track of changes in the application image
spec:
tags:
- annotations:
openshift.io/imported-from: registry.access.redhat.com/ubi9/nodejs-16-minimal
from:
kind: DockerImage
name: registry.access.redhat.com/ubi9/nodejs-16-minimal
- kind: ImageStream
apiVersion: image.openshift.io/v1
metadata:
labels:
app: "${NAME}"
app.kubernetes.io/component: "${NAME}"
app.kubernetes.io/instance: "${NAME}"
name: nodejs-16-minimal
namespace: "${PROJECT}"
spec:
lookupPolicy:
local: false
tags:
- annotations:
openshift.io/imported-from: registry.access.redhat.com/ubi9/nodejs-16-minimal
from:
kind: DockerImage
name: registry.access.redhat.com/ubi9/nodejs-16-minimal
name: latest
referencePolicy:
type: Source
- kind: BuildConfig
apiVersion: build.openshift.io/v1
metadata:
name: "${NAME}-build"
namespace: "${PROJECT}"
annotations:
description: Defines how to build the application
template.alpha.openshift.io/wait-for-ready: 'true'
spec:
source:
git:
ref: "${SOURCE_REPOSITORY_REF}"
uri: "${SOURCE_REPOSITORY_URL}"
type: Git
strategy:
dockerStrategy:
from:
kind: ImageStreamTag
namespace: "${PROJECT}"
name: nodejs-16-minimal:latest
type: Docker
output:
to:
kind: ImageStreamTag
namespace: "${PROJECT}"
name: "${NAME}:latest"
triggers:
- type: ImageChange
- type: ConfigChange
- type: GitHub
github:
secret: "${GITHUB_WEBHOOK_SECRET}"
- type: Generic
generic:
secret: "${GENERIC_WEBHOOK_SECRET}"
postCommit:
script: "npm run test"
- kind: DeploymentConfig
apiVersion: apps.openshift.io/v1
metadata:
name: "${NAME}-deployment"
annotations:
description: Defines how to deploy the application server
template.alpha.openshift.io/wait-for-ready: 'true'
spec:
strategy:
type: Rolling
triggers:
- type: ImageChange
imageChangeParams:
automatic: true
containerNames:
- "${NAME}"
from:
kind: ImageStreamTag
namespace: "${PROJECT}"
name: "${NAME}:latest"
- type: ConfigChange
replicas: 1
selector:
name: "${NAME}"
template:
metadata:
name: "${NAME}"
labels:
name: "${NAME}"
spec:
containers:
- name: "${NAME}"
image: "${NAME}:latest"
securityContext:
runAsUser: null
runAsGroup: null
supplementalGroups:
- null
- null
fsGroup: null
ports:
- containerPort: "${{SERVER_PORT}}"
readinessProbe:
timeoutSeconds: 3
initialDelaySeconds: 3
httpGet:
path: "/"
port: "${{SERVER_PORT}}"
livenessProbe:
timeoutSeconds: 3
initialDelaySeconds: 30
httpGet:
path: "/"
port: "${{SERVER_PORT}}"
resources:
limits:
memory: "${MEMORY_LIMIT}"
serviceAccountName: "${SERVICE_ACCOUNT_NAME}"
parameters:
- name: NAME
displayName: Name
description: The application name assigned to all of the objects defined in this template.
required: true
value: hello-world
- name: PROJECT
displayName: Project
description: The OpenShift Project (Namespace) where the objects reside.
required: true
- name: SERVICE_ACCOUNT_NAME
displayName: Service Account Name
description: The service account the deployment will run under.
required: true
value: developer-sa
- name: MEMORY_LIMIT
displayName: Memory Limit
description: Maximum amount of memory the container can use.
required: true
value: 256Mi
- name: SOURCE_REPOSITORY_URL
displayName: Git Repository URL
description: The URL of the repository with the application source code.
required: true
value: https://github.com/jeremycaine/hello-world
- name: SOURCE_REPOSITORY_REF
displayName: Git Reference
description: Set this to a branch name, tag, or other ref of your repository if you are not using the default branch.
value: main
- name: APPLICATION_DOMAIN
displayName: Application Hostname
description: The exposed hostname that will route to the Node.js service. If left blank, a value will be defaulted.
value: ''
- name: GITHUB_WEBHOOK_SECRET
displayName: GitHub Webhook Secret
description: Github trigger secret. A difficult-to-guess string encoded as part of the webhook URL. Not encrypted.
generate: expression
from: "[a-zA-Z0-9]{40}"
- name: GENERIC_WEBHOOK_SECRET
displayName: Generic Webhook Secret
description: A secret string used to configure the Generic webhook.
generate: expression
from: "[a-zA-Z0-9]{40}"
- name: SERVER_PORT
displayName: Server Listen Port
description: Port the Server will listen on.
required: true
value: '3000'