stress-test/locust-manifest.yaml (295 lines of code) (raw):
---
# Source: locust/templates/master-serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: locust-master
labels:
app.kubernetes.io/name: locust
app.kubernetes.io/instance: locust
load_test: example
app.kubernetes.io/version: "2.15.1"
---
# Source: locust/templates/worker-serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: locust-worker
labels:
app.kubernetes.io/name: locust
app.kubernetes.io/instance: locust
load_test: example
app.kubernetes.io/version: "2.15.1"
---
# Source: locust/templates/configmap-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: locust-config
labels:
app.kubernetes.io/name: locust
app.kubernetes.io/instance: locust
load_test: example
app.kubernetes.io/version: "2.15.1"
data:
docker-entrypoint.sh: |
#!/bin/sh
set -eu
exec /opt/venv/bin/locust $@
---
# Source: locust/templates/configmap-locust-lib.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: example-lib
labels:
app.kubernetes.io/name: locust
app.kubernetes.io/instance: locust
load_test: example
app.kubernetes.io/version: "2.15.1"
data:
__init__.py: |
# -*- coding: utf-8 -*-
example_functions.py: |
# -*- coding: utf-8 -*-
import random
def choose_random_page():
pages = [
'/api/v1/web/nuvolaris/default/echo0?name=call1',
'/api/v1/web/nuvolaris/default/echo1?name=call2',
'/api/v1/web/nuvolaris/default/echo2?name=call3',
'/api/v1/web/nuvolaris/default/echo3?name=call4',
'/api/v1/web/nuvolaris/default/echo4?name=call5',
'/api/v1/web/nuvolaris/default/redis0',
'/api/v1/web/nuvolaris/default/redis1',
'/api/v1/web/nuvolaris/default/redis2',
'/api/v1/web/nuvolaris/default/redis3',
'/api/v1/web/nuvolaris/default/redis4',
'/api/v1/web/nuvolaris/default/postgres0',
'/api/v1/web/nuvolaris/default/postgres1',
'/api/v1/web/nuvolaris/default/postgres2',
'/api/v1/web/nuvolaris/default/postgres3',
'/api/v1/web/nuvolaris/default/postgres4'
]
return random.choice(pages)
---
# Source: locust/templates/configmap-locust-locustfile.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: example-locustfile
labels:
app.kubernetes.io/name: locust
app.kubernetes.io/instance: locust
load_test: example
app.kubernetes.io/version: "2.15.1"
data:
main.py: |
# -*- coding: utf-8 -*-
from locust import HttpUser, task, between
from lib.example_functions import choose_random_page
default_headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'}
class WebsiteUser(HttpUser):
wait_time = between(1, 2)
@task(1)
def get_index(self):
self.client.get("/", headers=default_headers)
@task(3)
def get_random_page(self):
self.client.get(choose_random_page(), headers=default_headers)
---
# Source: locust/templates/master-service.yaml
apiVersion: v1
kind: Service
metadata:
name: locust
labels:
app.kubernetes.io/name: locust
app.kubernetes.io/instance: locust
load_test: example
app.kubernetes.io/version: "2.15.1"
component: "master"
spec:
type: ClusterIP
ports:
- name: master-p1
port: 5557
protocol: TCP
targetPort: 5557
- name: master-p2
port: 5558
protocol: TCP
targetPort: 5558
- name: master-p3
port: 8089
protocol: TCP
targetPort: 8089
selector:
component: master
app.kubernetes.io/name: locust
app.kubernetes.io/instance: locust
load_test: example
---
# Source: locust/templates/master-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: locust-master
labels:
component: master
app.kubernetes.io/name: locust
app.kubernetes.io/instance: locust
load_test: example
app.kubernetes.io/version: "2.15.1"
spec:
selector:
matchLabels:
component: master
app.kubernetes.io/name: locust
app.kubernetes.io/instance: locust
load_test: example
replicas: 1
strategy:
type: RollingUpdate
template:
metadata:
annotations:
checksum/config-locust-lib: 11c642231170fa1b5e10aa04c620bd3c99f9608585636773b9db2b15e184ce23
checksum/config-locust-locustfile: 4eb6e87d2d38fd9804e45d87115499590a0c87768df3032e060d55c5e94a6e45
checksum/config-config: 6e010ffbb07a7d3337f1fc2f53a8e2b40b3bf4ad494ad819e7c294f13cf4e298
checksum/config-secret: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
labels:
component: master
app.kubernetes.io/name: locust
app.kubernetes.io/instance: locust
load_test: example
app.kubernetes.io/version: "2.15.1"
spec:
securityContext:
{}
serviceAccountName: locust-master
containers:
- name: locust
securityContext:
{}
image: "locustio/locust:2.15.1"
command:
- sh
- /config/docker-entrypoint.sh
args:
- --master
imagePullPolicy: IfNotPresent
resources:
{}
volumeMounts:
- name: locustfile
mountPath: "/mnt/locust"
- name: lib
mountPath: "/mnt/locust/lib"
- name: config
mountPath: /config
env:
- name: LOCUST_HOST
value: "http://controller.nuvolaris:3233"
- name: LOCUST_LOGLEVEL
value: "INFO"
- name: LOCUST_LOCUSTFILE
value: "/mnt/locust/main.py"
ports:
- containerPort: 8089
name: loc-master-web
protocol: TCP
- containerPort: 5557
name: loc-master-p1
protocol: TCP
- containerPort: 5558
name: loc-master-p2
protocol: TCP
readinessProbe:
initialDelaySeconds: 5
periodSeconds: 30
timeoutSeconds: 30
failureThreshold: 2
httpGet:
path: /
port: 8089
restartPolicy: Always
volumes:
- name: lib
configMap:
name: example-lib
- name: locustfile
configMap:
name: example-locustfile
- name: config
configMap:
name: locust-config
---
# Source: locust/templates/worker-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: locust-worker
labels:
component: worker
app.kubernetes.io/name: locust
app.kubernetes.io/instance: locust
load_test: example
app.kubernetes.io/version: "2.15.1"
spec:
selector:
matchLabels:
component: worker
app.kubernetes.io/name: locust
app.kubernetes.io/instance: locust
load_test: example
replicas: 5
strategy:
type: RollingUpdate
template:
metadata:
annotations:
checksum/config-locust-lib: 11c642231170fa1b5e10aa04c620bd3c99f9608585636773b9db2b15e184ce23
checksum/config-locust-locustfile: 4eb6e87d2d38fd9804e45d87115499590a0c87768df3032e060d55c5e94a6e45
checksum/config-config: 6e010ffbb07a7d3337f1fc2f53a8e2b40b3bf4ad494ad819e7c294f13cf4e298
checksum/config-secret: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
labels:
component: worker
app.kubernetes.io/name: locust
app.kubernetes.io/instance: locust
load_test: example
app.kubernetes.io/version: "2.15.1"
spec:
securityContext:
{}
serviceAccountName: locust-worker
containers:
- name: locust
securityContext:
{}
image: "locustio/locust:2.15.1"
command:
- sh
- /config/docker-entrypoint.sh
args:
- --worker
imagePullPolicy: IfNotPresent
resources:
{}
volumeMounts:
- name: locustfile
mountPath: "/mnt/locust"
- name: lib
mountPath: "/mnt/locust/lib"
- name: config
mountPath: /config
env:
- name: LOCUST_HOST
value: "http://controller.nuvolaris:3233"
- name: LOCUST_MASTER_NODE_HOST
value: "locust"
- name: LOCUST_MASTER_NODE_PORT
value: "5557"
- name: LOCUST_LOGLEVEL
value: "INFO"
- name: LOCUST_LOCUSTFILE
value: "/mnt/locust/main.py"
restartPolicy: Always
volumes:
- name: lib
configMap:
name: example-lib
- name: locustfile
configMap:
name: example-locustfile
- name: config
configMap:
name: locust-config