Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions k8s/chart/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
apiVersion: v2
name: quickticket
description: QuickTicket SRE learning project
version: 0.1.0
63 changes: 63 additions & 0 deletions k8s/chart/templates/events.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: events
spec:
replicas: {{ .Values.events.replicas }}
selector:
matchLabels:
app: events
template:
metadata:
labels:
app: events
spec:
containers:
- name: events
image: {{ .Values.events.image }}
imagePullPolicy: Never
ports:
- containerPort: 8081
env:
- name: DB_HOST
value: "{{ .Values.events.db.host}}"
- name: DB_PORT
value: "{{ .Values.events.db.port }}"
- name: DB_NAME
value: "{{ .Values.events.db.name }}"
- name: DB_USER
value: "{{ .Values.events.db.user }}"
- name: DB_PASS
value: "{{ .Values.events.db.password }}"
- name: REDIS_HOST
value: "redis"
- name: REDIS_PORT
value: "6379"
livenessProbe:
httpGet:
path: /health
port: 8081
initialDelaySeconds: 10
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8081
periodSeconds: 5
failureThreshold: 2
resources:
{{- toYaml .Values.resources | nindent 12 }}

---
apiVersion: v1
kind: Service
metadata:
name: events
spec:
type: ClusterIP
selector:
app: events
ports:
- port: 8081
targetPort: 8081
55 changes: 55 additions & 0 deletions k8s/chart/templates/gateway.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: gateway
spec:
replicas: {{ .Values.gateway.replicas }}
selector:
matchLabels:
app: gateway
template:
metadata:
labels:
app: gateway
spec:
containers:
- name: gateway
image: {{ .Values.gateway.image }}
imagePullPolicy: Never
ports:
- containerPort: 8080
env:
- name: EVENTS_URL
value: "http://events:8081"
- name: PAYMENTS_URL
value: "http://payments:8082"
- name: GATEWAY_TIMEOUT_MS
value: "5000"
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 10
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8080
periodSeconds: 5
failureThreshold: 2
resources:
{{- toYaml .Values.resources | nindent 12 }}

---
apiVersion: v1
kind: Service
metadata:
name: gateway
spec:
type: ClusterIP
selector:
app: gateway
ports:
- port: 8080
targetPort: 8080
53 changes: 53 additions & 0 deletions k8s/chart/templates/payments.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: payments
spec:
replicas: {{ .Values.payments.replicas }}
selector:
matchLabels:
app: payments
template:
metadata:
labels:
app: payments
spec:
containers:
- name: payments
image: {{ .Values.payments.image }}
imagePullPolicy: Never
ports:
- containerPort: 8082
env:
- name: PAYMENT_FAILURE_RATE
value: "{{ .Values.payments.failureRate }}"
- name: PAYMENT_LATENCY_MS
value: "{{ .Values.payments.latencyMs }}"
livenessProbe:
httpGet:
path: /health
port: 8082
initialDelaySeconds: 10
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8082
periodSeconds: 5
failureThreshold: 2
resources:
{{- toYaml .Values.resources | nindent 12 }}

---
apiVersion: v1
kind: Service
metadata:
name: payments
spec:
type: ClusterIP
selector:
app: payments
ports:
- port: 8082
targetPort: 8082
41 changes: 41 additions & 0 deletions k8s/chart/templates/postgres.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
spec:
replicas: {{ .Values.postgres.replicas }}
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: {{ .Values.postgres.image }}
ports:
- containerPort: 5432
env:
- name: POSTGRES_DB
value: "{{ .Values.postgres.db.name }}"
- name: POSTGRES_USER
value: "{{ .Values.postgres.db.user }}"
- name: POSTGRES_PASSWORD
value: "{{ .Values.postgres.db.password }}"
resources:
{{- toYaml .Values.resources | nindent 12 }}

---
apiVersion: v1
kind: Service
metadata:
name: postgres
spec:
type: ClusterIP
selector:
app: postgres
ports:
- port: 5432
targetPort: 5432
34 changes: 34 additions & 0 deletions k8s/chart/templates/redis.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
spec:
replicas: {{ .Values.redis.replicas}}
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: {{ .Values.redis.image }}
ports:
- containerPort: 6379
resources:
{{- toYaml .Values.resources | nindent 12 }}

---
apiVersion: v1
kind: Service
metadata:
name: redis
spec:
type: ClusterIP
selector:
app: redis
ports:
- port: 6379
targetPort: 6379
39 changes: 39 additions & 0 deletions k8s/chart/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
gateway:
replicas: 1
image: quickticket-gateway:v1

events:
replicas: 1
image: quickticket-events:v1
db:
host: postgres
port: 5432
name: quickticket
user: quickticket
password: quickticket

payments:
replicas: 1
image: quickticket-payments:v1
failureRate: "0.0"
latencyMs: "0"

postgres:
replicas: 1
image: postgres:17-alpine
db:
name: quickticket
user: quickticket
password: quickticket

redis:
replicas: 1
image: redis:7-alpine

resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 200m
memory: 256Mi
68 changes: 68 additions & 0 deletions k8s/events.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: events
spec:
replicas: 1
selector:
matchLabels:
app: events
template:
metadata:
labels:
app: events
spec:
containers:
- name: events
image: quickticket-events:v1
imagePullPolicy: Never
ports:
- containerPort: 8081
env:
- name: DB_HOST
value: "postgres"
- name: DB_PORT
value: "5432"
- name: DB_NAME
value: "quickticket"
- name: DB_USER
value: "quickticket"
- name: DB_PASS
value: "quickticket"
- name: REDIS_HOST
value: "redis"
- name: REDIS_PORT
value: "6379"
livenessProbe:
httpGet:
path: /health
port: 8081
initialDelaySeconds: 10
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8081
periodSeconds: 5
failureThreshold: 2
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 200m
memory: 256Mi

---
apiVersion: v1
kind: Service
metadata:
name: events
spec:
type: ClusterIP
selector:
app: events
ports:
- port: 8081
targetPort: 8081
Loading