Skip to content

Commit 5f6b6f8

Browse files
committed
deployment: add kubernetes and google cloud manifests
1 parent 75ed25b commit 5f6b6f8

File tree

2 files changed

+183
-0
lines changed

2 files changed

+183
-0
lines changed

cloudbuild.cd.yaml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# BE CAREFUL MODIFYING THIS FILE
2+
3+
# This has our continous delivery steps.
4+
steps:
5+
# This step runs the unit tests on the app
6+
- id: Test
7+
name: 'gcr.io/cloud-builders/go'
8+
args: ['test','./...']
9+
env: ['PROJECT_ROOT=github.com/expandorg/assignment']
10+
# # This step builds the container image
11+
- id: Build
12+
name: 'gcr.io/cloud-builders/docker'
13+
args: ['build', '--tag=gcr.io/$PROJECT_ID/$_NAME:$SHORT_SHA', '.']
14+
- id: BuildMigration
15+
name: 'gcr.io/cloud-builders/docker'
16+
args: ['build', '--tag=gcr.io/$PROJECT_ID/$_NAME-migration:$SHORT_SHA', 'migrations']
17+
18+
# This step pushes the image to Container Registry
19+
- id: Push To Registry
20+
name: 'gcr.io/cloud-builders/docker'
21+
args: ['push', 'gcr.io/$PROJECT_ID/$_NAME:$SHORT_SHA']
22+
- id: PushMigration
23+
name: 'gcr.io/cloud-builders/docker'
24+
args: ['push', 'gcr.io/$PROJECT_ID/$_NAME-migration:$SHORT_SHA']
25+
26+
# This step deploys the new version of our container image
27+
# in the Kubernetes Engine cluster.
28+
- id: Generate Kuberentes Manifest
29+
name: 'gcr.io/cloud-builders/gcloud'
30+
entrypoint: /bin/sh
31+
args:
32+
- '-c'
33+
- |
34+
sed "s/VERSION/${SHORT_SHA}/g;s/NAME/${_NAME}/g;s/MIGRATION/${_MIGRATION}/g;s/ORG/${PROJECT_ID}/g;s/ENV/${_ENV}/g;s/APP/${_APP}/g;s/DATA/${_DATA}/g" k8s.yaml > kubernetes.yaml
35+
36+
# Jobs image field is immutable, we delete and recreate it with new image.
37+
- id: Delete Migration Job
38+
name: 'gcr.io/cloud-builders/kubectl'
39+
args:
40+
- 'delete'
41+
- 'job'
42+
- '${_MIGRATION}'
43+
env:
44+
- CLOUDSDK_COMPUTE_ZONE=$_ZONE
45+
- CLOUDSDK_CONTAINER_CLUSTER=$_CLUSTER
46+
47+
- id: Deploy
48+
name: 'gcr.io/cloud-builders/kubectl'
49+
args:
50+
- 'apply'
51+
- '-f'
52+
- 'kubernetes.yaml'
53+
env:
54+
- CLOUDSDK_COMPUTE_ZONE=$_ZONE
55+
- CLOUDSDK_CONTAINER_CLUSTER=$_CLUSTER
56+

k8s.yaml

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
# BE CAREFUL MODIFYING THIS FILE
2+
apiVersion: apps/v1
3+
kind: Deployment
4+
metadata:
5+
name: APP
6+
spec:
7+
selector:
8+
matchLabels:
9+
app: APP
10+
replicas: 3
11+
template:
12+
metadata:
13+
labels:
14+
app: APP
15+
spec:
16+
containers:
17+
- name: APP
18+
image: gcr.io/ORG/NAME:VERSION
19+
command: ["./assignment"]
20+
args: ["--env=ENV"]
21+
env:
22+
- name: ASSIGNMENT_DB_HOST
23+
valueFrom:
24+
configMapKeyRef:
25+
name: DATA
26+
key: ASSIGNMENT_DB_HOST
27+
- name: ASSIGNMENT_DB_PORT
28+
valueFrom:
29+
configMapKeyRef:
30+
name: DATA
31+
key: ASSIGNMENT_DB_PORT
32+
- name: ASSIGNMENT_DB
33+
valueFrom:
34+
configMapKeyRef:
35+
name: DATA
36+
key: ASSIGNMENT_DB
37+
- name: ASSIGNMENT_DB_USER
38+
valueFrom:
39+
configMapKeyRef:
40+
name: DATA
41+
key: ASSIGNMENT_DB_USER
42+
- name: ASSIGNMENT_DB_PASSWORD
43+
valueFrom:
44+
configMapKeyRef:
45+
name: DATA
46+
key: ASSIGNMENT_DB_PASSWORD
47+
- name: JWT_SECRET
48+
valueFrom:
49+
configMapKeyRef:
50+
name: DATA
51+
key: JWT_SECRET
52+
- name: TASK_SVC_URL
53+
valueFrom:
54+
configMapKeyRef:
55+
name: assignment-data
56+
key: TASK_SVC_URL
57+
ports:
58+
- containerPort: 8182
59+
resources: {}
60+
61+
---
62+
apiVersion: batch/v1
63+
kind: Job
64+
metadata:
65+
name: MIGRATION
66+
spec:
67+
ttlSecondsAfterFinished: 100
68+
template:
69+
metadata:
70+
labels:
71+
app: MIGRATION
72+
spec:
73+
containers:
74+
- name: MIGRATION
75+
image: gcr.io/ORG/NAME-migration:VERSION
76+
args: ["composeup"]
77+
env:
78+
- name: ASSIGNMENT_DB_HOST
79+
valueFrom:
80+
configMapKeyRef:
81+
name: DATA
82+
key: ASSIGNMENT_DB_HOST
83+
- name: ASSIGNMENT_DB_PORT
84+
valueFrom:
85+
configMapKeyRef:
86+
name: DATA
87+
key: ASSIGNMENT_DB_PORT
88+
- name: ASSIGNMENT_DB
89+
valueFrom:
90+
configMapKeyRef:
91+
name: DATA
92+
key: ASSIGNMENT_DB
93+
- name: ASSIGNMENT_DB_USER
94+
valueFrom:
95+
configMapKeyRef:
96+
name: DATA
97+
key: ASSIGNMENT_DB_USER
98+
- name: ASSIGNMENT_DB_PASSWORD
99+
valueFrom:
100+
configMapKeyRef:
101+
name: DATA
102+
key: ASSIGNMENT_DB_PASSWORD
103+
- name: JWT_SECRET
104+
valueFrom:
105+
configMapKeyRef:
106+
name: DATA
107+
key: JWT_SECRET
108+
- name: TASK_SVC_URL
109+
valueFrom:
110+
configMapKeyRef:
111+
name: assignment-data
112+
key: TASK_SVC_URL
113+
restartPolicy: Never
114+
backoffLimit: 4
115+
---
116+
117+
apiVersion: v1
118+
kind: Service
119+
metadata:
120+
name: APP
121+
spec:
122+
selector:
123+
app: APP
124+
ports:
125+
- port: 80
126+
targetPort: 8182
127+
type: LoadBalancer

0 commit comments

Comments
 (0)