Skip to content

Commit 991bea1

Browse files
committed
Added locust k8s configurations
Signed-off-by: therahulbhati <rjbhati009@gmail.com>
1 parent 8110dd4 commit 991bea1

File tree

7 files changed

+197
-0
lines changed

7 files changed

+197
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: locust-master
5+
labels:
6+
name: locust-master
7+
spec:
8+
replicas: 1
9+
selector:
10+
matchLabels:
11+
app: locust-master
12+
template:
13+
metadata:
14+
labels:
15+
app: locust-master
16+
spec:
17+
containers:
18+
- name: locust-master
19+
image: rahulbhati/fission-locust:4
20+
ports:
21+
- name: loc-master-web
22+
containerPort: 8089
23+
protocol: TCP
24+
- name: loc-master-p1
25+
containerPort: 5557
26+
protocol: TCP
27+
- name: loc-master-p2
28+
containerPort: 5558
29+
protocol: TCP
30+
env:
31+
- name: LOCUST_MODE
32+
value: master
33+
- name: TARGET_HOST
34+
value: http://router.fission/
35+
- name: NET_TIMEOUT
36+
value: "3600"
37+
- name: CON_TIMEOUT
38+
value: "3600"
39+
- name: TASK_1
40+
value: hello-1-15
41+
- name: TASK_2
42+
value: hello-2-45
43+
- name: TASK_3
44+
value: hello-3-75
45+
- name: TASK_4
46+
value: hello-4-90
47+
- name: TASK_5
48+
value: hello-5-120
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
kind: Service
2+
apiVersion: v1
3+
metadata:
4+
name: locust-master
5+
labels:
6+
app: locust-master
7+
spec:
8+
ports:
9+
- port: 8089
10+
targetPort: loc-master-web
11+
protocol: TCP
12+
name: loc-master-web
13+
- port: 5557
14+
targetPort: loc-master-p1
15+
protocol: TCP
16+
name: loc-master-p1
17+
- port: 5558
18+
targetPort: loc-master-p2
19+
protocol: TCP
20+
name: loc-master-p2
21+
selector:
22+
app: locust-master
23+
type: LoadBalancer
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
apiVersion: apps/v1
2+
kind: "Deployment"
3+
metadata:
4+
name: locust-worker
5+
labels:
6+
name: locust-worker
7+
spec:
8+
replicas: 10
9+
selector:
10+
matchLabels:
11+
app: locust-worker
12+
template:
13+
metadata:
14+
labels:
15+
app: locust-worker
16+
spec:
17+
containers:
18+
- name: locust-worker
19+
image: rahulbhati/fission-locust:4
20+
env:
21+
- name: LOCUST_MODE
22+
value: worker
23+
- name: LOCUST_MASTER
24+
value: locust-master
25+
- name: TARGET_HOST
26+
value: http://router.fission/
27+
- name: NET_TIMEOUT
28+
value: "3600"
29+
- name: CON_TIMEOUT
30+
value: "3600"
31+
- name: TASK_1
32+
value: hello-1-15
33+
- name: TASK_2
34+
value: hello-2-45
35+
- name: TASK_3
36+
value: hello-3-75
37+
- name: TASK_4
38+
value: hello-4-90
39+
- name: TASK_5
40+
value: hello-5-120

locust/tasks/Dockerfile

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Start with a base Python 3.7.2 image
2+
FROM python:3.7.2
3+
4+
# Add the external tasks directory into /tasks
5+
ADD code /code
6+
7+
RUN pip install -r /code/requirements.txt
8+
9+
# Expose the required Locust ports
10+
EXPOSE 5557 5558 8089
11+
12+
# Set script to be executable
13+
RUN chmod 755 /code/run.sh
14+
15+
# Start Locust using LOCUS_OPTS environment variable
16+
ENTRYPOINT ["/code/run.sh"]

locust/tasks/code/requirements.txt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
certifi==2020.6.20
2+
chardet==3.0.4
3+
click==7.1.2
4+
ConfigArgParse==1.2.3
5+
Flask==1.1.2
6+
Flask-BasicAuth==0.2.0
7+
gevent==20.9.0
8+
geventhttpclient==1.4.4
9+
greenlet==0.4.17
10+
idna==2.10
11+
itsdangerous==1.1.0
12+
Jinja2==2.11.2
13+
locust==1.2.3
14+
MarkupSafe==1.1.1
15+
msgpack==1.0.0
16+
psutil==5.7.2
17+
pyzmq==19.0.2
18+
requests==2.24.0
19+
six==1.15.0
20+
urllib3==1.25.10
21+
Werkzeug==1.0.1
22+
zope.event==4.5.0
23+
zope.interface==5.1.2

locust/tasks/code/run.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/bin/bash
2+
LOCUST="/usr/local/bin/locust"
3+
LOCUS_OPTS="-f /code/tasks.py --host=$TARGET_HOST"
4+
LOCUST_MODE=${LOCUST_MODE:-standalone}
5+
6+
if [[ "$LOCUST_MODE" = "master" ]]; then
7+
LOCUS_OPTS="$LOCUS_OPTS --master"
8+
elif [[ "$LOCUST_MODE" = "worker" ]]; then
9+
LOCUS_OPTS="$LOCUS_OPTS --worker --master-host=$LOCUST_MASTER"
10+
fi
11+
12+
$LOCUST $LOCUS_OPTS

locust/tasks/code/tasks.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from datetime import datetime
2+
import os
3+
from locust import HttpUser, TaskSet, task, between
4+
from locust.contrib.fasthttp import FastHttpUser
5+
6+
7+
class FissionUser(FastHttpUser):
8+
network_timeout = float(os.environ['NET_TIMEOUT'])
9+
connection_timeout = float(os.environ['CON_TIMEOUT'])
10+
wait_time = between(1, 2)
11+
12+
@task(33)
13+
def task1(self):
14+
self.client.get(
15+
'/fission-function/' + os.environ['TASK_1'])
16+
17+
@task(19)
18+
def task2(self):
19+
self.client.get(
20+
'/fission-function/' + os.environ['TASK_2'])
21+
22+
@task(19)
23+
def task3(self):
24+
self.client.get(
25+
'/fission-function/' + os.environ['TASK_3'])
26+
27+
@task(13)
28+
def task4(self):
29+
self.client.get(
30+
'/fission-function/' + os.environ['TASK_4'])
31+
32+
@task(13)
33+
def task5(self):
34+
self.client.get(
35+
'/fission-function/' + os.environ['TASK_5'])

0 commit comments

Comments
 (0)