Skip to content

Commit cb7ab98

Browse files
authored
RHIROS-465 | Move deployment templates to github repository (#167)
Changes: 1. Created saas_templates folder at root level and added the deployment templates References: https://mailman-int.corp.redhat.com/archives/insights-platform/2022-January/msg00011.html Co-authored-by: Sagnik Dutta <[email protected]>
1 parent ec76329 commit cb7ab98

File tree

4 files changed

+566
-0
lines changed

4 files changed

+566
-0
lines changed

saas-templates/_imagestreams.yaml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
apiVersion: v1
2+
items:
3+
- apiVersion: image.openshift.io/v1
4+
kind: ImageStream
5+
metadata:
6+
name: ros-backend
7+
spec:
8+
lookupPolicy:
9+
local: false
10+
tags:
11+
- from:
12+
kind: DockerImage
13+
name: quay.io/cloudservices/ros-backend:latest
14+
importPolicy:
15+
scheduled: true
16+
name: latest
17+
referencePolicy:
18+
type: Source
19+
- apiVersion: image.openshift.io/v1
20+
kind: ImageStream
21+
metadata:
22+
name: ros-backend
23+
spec:
24+
lookupPolicy:
25+
local: false
26+
tags:
27+
- from:
28+
kind: DockerImage
29+
name: quay.io/cloudservices/ros-backend:qa
30+
importPolicy:
31+
scheduled: true
32+
name: qa
33+
referencePolicy:
34+
type: Source
35+
kind: List

saas-templates/ros-backend.yaml

Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
apiVersion: v1
2+
kind: Template
3+
metadata:
4+
name: ros-backend-deployment-config
5+
objects:
6+
- apiVersion: v1
7+
kind: Service
8+
metadata:
9+
labels:
10+
app: ros-backend
11+
name: ros-backend
12+
spec:
13+
ports:
14+
- name: 8080-tcp
15+
port: 8080
16+
protocol: TCP
17+
targetPort: 8000
18+
selector:
19+
app: ros-backend
20+
type: ClusterIP
21+
- apiVersion: apps/v1
22+
kind: Deployment
23+
metadata:
24+
labels:
25+
app: ros-backend
26+
name: ros-backend
27+
spec:
28+
minReadySeconds: 15
29+
progressDeadlineSeconds: 600
30+
replicas: ${{MINIMUM_REPLICAS}}
31+
revisionHistoryLimit: 9
32+
selector:
33+
matchLabels:
34+
app: ros-backend
35+
strategy:
36+
type: Recreate
37+
template:
38+
metadata:
39+
annotations:
40+
prometheus.io/path: /metrics
41+
prometheus.io/port: '8000'
42+
prometheus.io/scrape: 'true'
43+
labels:
44+
app: ros-backend
45+
name: ros-backend
46+
spec:
47+
affinity:
48+
podAntiAffinity:
49+
preferredDuringSchedulingIgnoredDuringExecution:
50+
- podAffinityTerm:
51+
labelSelector:
52+
matchExpressions:
53+
- key: app
54+
operator: In
55+
values:
56+
- ros-backend
57+
topologyKey: failure-domain.beta.kubernetes.io/zone
58+
weight: 100
59+
- podAffinityTerm:
60+
labelSelector:
61+
matchExpressions:
62+
- key: app
63+
operator: In
64+
values:
65+
- ros-backend
66+
topologyKey: kubernetes.io/hostname
67+
weight: 99
68+
containers:
69+
- args:
70+
- -c
71+
- python -m manage db upgrade && python -m manage seed && python -m ros.api.main
72+
command:
73+
- bash
74+
env:
75+
- name: INVENTORY_HOST
76+
value: ${HOST_INVENTORY_HOST}
77+
- name: INVENTORY_PORT
78+
value: '8080'
79+
- name: ROS_DB_USER
80+
valueFrom:
81+
secretKeyRef:
82+
key: db.user
83+
name: ros-db
84+
optional: false
85+
- name: ROS_DB_PASS
86+
valueFrom:
87+
secretKeyRef:
88+
key: db.password
89+
name: ros-db
90+
optional: false
91+
- name: ROS_DB_HOST
92+
valueFrom:
93+
secretKeyRef:
94+
key: db.host
95+
name: ros-db
96+
optional: false
97+
- name: ROS_DB_PORT
98+
valueFrom:
99+
secretKeyRef:
100+
key: db.port
101+
name: ros-db
102+
optional: false
103+
- name: ROS_DB_NAME
104+
valueFrom:
105+
secretKeyRef:
106+
key: db.name
107+
name: ros-db
108+
optional: false
109+
- name: RBAC_SVC_URL
110+
value: http://${RBAC_HOST}:8080
111+
- name: ENABLE_RBAC
112+
value: ${ENABLE_RBAC}
113+
image: quay.io/cloudservices/ros-backend:${IMAGE_TAG}
114+
livenessProbe:
115+
failureThreshold: 3
116+
httpGet:
117+
path: /api/ros/v1/status
118+
port: 8000
119+
scheme: HTTP
120+
initialDelaySeconds: 30
121+
periodSeconds: 10
122+
successThreshold: 1
123+
timeoutSeconds: 3
124+
name: ros-backend
125+
ports:
126+
- containerPort: 8000
127+
protocol: TCP
128+
readinessProbe:
129+
failureThreshold: 3
130+
httpGet:
131+
path: /api/ros/v1/status
132+
port: 8000
133+
scheme: HTTP
134+
initialDelaySeconds: 3
135+
periodSeconds: 10
136+
successThreshold: 1
137+
timeoutSeconds: 3
138+
resources:
139+
limits:
140+
cpu: ${CPU_LIMIT}
141+
memory: ${MEMORY_LIMIT}
142+
requests:
143+
cpu: ${CPU_REQUEST}
144+
memory: ${MEMORY_REQUEST}
145+
imagePullSecrets:
146+
- name: quay-cloudservices-pull
147+
- name: rh-registry-pull
148+
parameters:
149+
- name: HOST_INVENTORY_HOST
150+
required: true
151+
value: insights-inventory.platform-ci.svc
152+
- description: rbac service host for accessing API within cluster
153+
name: RBAC_HOST
154+
- description: enable rbac. needs to be "True" or "False".
155+
name: ENABLE_RBAC
156+
value: 'True'
157+
- description: Minimum Replicas for Autoscaling
158+
displayName: Minimum Replicas
159+
name: MINIMUM_REPLICAS
160+
required: true
161+
value: '1'
162+
- description: Initial cpu request.
163+
displayName: CPU Request
164+
name: CPU_REQUEST
165+
required: true
166+
value: 500m
167+
- description: Initial amount of memory the container will request.
168+
displayName: Memory Request
169+
name: MEMORY_REQUEST
170+
required: true
171+
value: 1Gi
172+
- description: Maximum amount of memory the Django container can use.
173+
displayName: Memory Limit
174+
name: MEMORY_LIMIT
175+
required: true
176+
value: 1Gi
177+
- description: Maximum amount of CPU the build container can use.
178+
displayName: CPU Limit
179+
name: CPU_LIMIT
180+
required: true
181+
value: '1'
182+
- description: Image tag
183+
name: IMAGE_TAG
184+
required: true

saas-templates/ros-db.yaml

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
apiVersion: v1
2+
kind: Template
3+
labels:
4+
app: ros
5+
template: ros-db
6+
metadata:
7+
name: ros-database-template
8+
objects:
9+
- apiVersion: apps/v1
10+
kind: Deployment
11+
metadata:
12+
labels:
13+
app: ros
14+
template: ros-template
15+
name: ros-db
16+
spec:
17+
minReadySeconds: 15
18+
progressDeadlineSeconds: 600
19+
replicas: 1
20+
revisionHistoryLimit: 9
21+
selector:
22+
matchLabels:
23+
name: ros-db
24+
strategy:
25+
type: Recreate
26+
template:
27+
metadata:
28+
labels:
29+
app: ros
30+
name: ros-db
31+
template: ros-template
32+
name: ros-db
33+
spec:
34+
affinity:
35+
podAntiAffinity:
36+
preferredDuringSchedulingIgnoredDuringExecution:
37+
- podAffinityTerm:
38+
labelSelector:
39+
matchExpressions:
40+
- key: app
41+
operator: In
42+
values:
43+
- ros
44+
- key: template
45+
operator: In
46+
values:
47+
- ros-template
48+
topologyKey: failure-domain.beta.kubernetes.io/zone
49+
weight: 100
50+
- podAffinityTerm:
51+
labelSelector:
52+
matchExpressions:
53+
- key: app
54+
operator: In
55+
values:
56+
- ros
57+
- key: template
58+
operator: In
59+
values:
60+
- ros-template
61+
topologyKey: kubernetes.io/hostname
62+
weight: 99
63+
containers:
64+
- env:
65+
- name: POSTGRESQL_USER
66+
valueFrom:
67+
secretKeyRef:
68+
key: db.user
69+
name: ros-db
70+
- name: POSTGRESQL_PASSWORD
71+
valueFrom:
72+
secretKeyRef:
73+
key: db.password
74+
name: ros-db
75+
- name: POSTGRESQL_DATABASE
76+
valueFrom:
77+
secretKeyRef:
78+
key: db.name
79+
name: ros-db
80+
image: registry.access.redhat.com/rhscl/postgresql-96-rhel7
81+
imagePullPolicy: IfNotPresent
82+
livenessProbe:
83+
exec:
84+
command:
85+
- /usr/libexec/check-container
86+
- --live
87+
failureThreshold: 3
88+
initialDelaySeconds: 120
89+
periodSeconds: 10
90+
successThreshold: 1
91+
timeoutSeconds: 10
92+
name: ros-db
93+
ports:
94+
- containerPort: 5432
95+
protocol: TCP
96+
readinessProbe:
97+
exec:
98+
command:
99+
- /usr/libexec/check-container
100+
failureThreshold: 3
101+
initialDelaySeconds: 5
102+
periodSeconds: 10
103+
successThreshold: 1
104+
timeoutSeconds: 1
105+
resources:
106+
limits:
107+
cpu: ${POSTGRESQL_CPU_LIMIT}
108+
memory: ${POSTGRESQL_MEMORY_LIMIT}
109+
requests:
110+
cpu: ${POSTGRESQL_CPU_REQUEST}
111+
memory: ${POSTGRESQL_MEMORY_REQUEST}
112+
volumeMounts:
113+
- mountPath: /var/lib/pgsql/data
114+
name: ros-db-data
115+
imagePullSecrets:
116+
- name: quay-cloudservices-pull
117+
- name: rh-registry-pull
118+
volumes:
119+
- name: ros-db-data
120+
persistentVolumeClaim:
121+
claimName: ros-db
122+
- apiVersion: v1
123+
kind: PersistentVolumeClaim
124+
metadata:
125+
labels:
126+
app: ros
127+
template: ros-template
128+
name: ros-db
129+
spec:
130+
accessModes:
131+
- ReadWriteOnce
132+
resources:
133+
requests:
134+
storage: ${VOLUME_CAPACITY}
135+
- apiVersion: v1
136+
kind: Service
137+
metadata:
138+
annotations:
139+
description: Exposes the database server
140+
labels:
141+
app: ros
142+
template: ros-template
143+
name: ros-db
144+
spec:
145+
ports:
146+
- name: ros-db
147+
port: 5432
148+
protocol: TCP
149+
targetPort: 5432
150+
selector:
151+
name: ros-db
152+
parameters:
153+
- description: Initial amount of memory the PostgreSQL container will request.
154+
displayName: Memory Request (PostgreSQL)
155+
name: POSTGRESQL_MEMORY_REQUEST
156+
required: true
157+
value: 1Gi
158+
- description: Maximum amount of memory the PostgreSQL container can use.
159+
displayName: Memory Limit (PostgreSQL)
160+
name: POSTGRESQL_MEMORY_LIMIT
161+
required: true
162+
value: 1Gi
163+
- description: Initial amount of CPU the build container will request.
164+
displayName: CPU Request
165+
name: POSTGRESQL_CPU_REQUEST
166+
required: true
167+
value: 500m
168+
- description: Maximum amount of CPU the build container can use.
169+
displayName: CPU Limit
170+
name: POSTGRESQL_CPU_LIMIT
171+
required: true
172+
value: '1'
173+
- description: Volume space available for data, e.g. 512Mi, 2Gi
174+
displayName: Volume Capacity
175+
name: VOLUME_CAPACITY
176+
required: true
177+
value: 10Gi

0 commit comments

Comments
 (0)