-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkube-deployment.yaml
144 lines (130 loc) · 2.97 KB
/
kube-deployment.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
# application namespace
apiVersion: v1
kind: Namespace
metadata:
name: playground-websocket
---
# REDIS (service and deployment)
apiVersion: v1
kind: Service
metadata:
name: redis-srv
namespace: playground-websocket
spec:
type: NodePort
selector:
app: redis
ports:
- port: 6379
targetPort: 6379
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-deployment
namespace: playground-websocket
spec:
replicas: 1
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redis
ports:
- containerPort: 6379
---
# application service, ingresses and deployment
apiVersion: v1
kind: Service
metadata:
name: playground-srv
namespace: playground-websocket
spec:
selector:
app: playground
ports:
- port: 8080
targetPort: 8080
---
# first ingress to serve all the resources that doesn't require a sticky session
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: playground-ingress
namespace: playground-websocket
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/proxy-connect-timeout: "86400"
nginx.ingress.kubernetes.io/proxy-read-timeout: "86400"
nginx.ingress.kubernetes.io/proxy-write-timeout: "86400"
spec:
rules:
- http:
paths:
- path: /playground
pathType: Prefix
backend:
service:
name: playground-srv
port:
number: 8080
---
# second ingress to serve only the requests that requires a sticky session
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: playground-ingress-sticky
namespace: playground-websocket
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-path: /playground/w
nginx.ingress.kubernetes.io/affinity-mode: persistent
nginx.ingress.kubernetes.io/proxy-connect-timeout: "86400"
nginx.ingress.kubernetes.io/proxy-read-timeout: "86400"
nginx.ingress.kubernetes.io/proxy-write-timeout: "86400"
spec:
rules:
- http:
paths:
- path: /playground/w
pathType: Prefix
backend:
service:
name: playground-srv
port:
number: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: playground-deployment
namespace: playground-websocket
labels:
app: playground
spec:
replicas: 3
selector:
matchLabels:
app: playground
template:
metadata:
labels:
app: playground
spec:
containers:
- name: playground-websocket
image: amodolo/playground-websocket
ports:
- containerPort: 8080
env:
- name: REDIS_HOST
value: 'redis-srv'
- name: REDIS_PORT
value: '6379'