apiVersion: v1 kind: ConfigMap metadata: name: locust-cm data: ATTACKED_HOST: http://hotrod:8080 --- apiVersion: v1 kind: ConfigMap metadata: name: scripts-cm data: locustfile.py: | from locust import HttpLocust, TaskSet, task class UserTasks(TaskSet): @task def rachel(self): self.client.get("/dispatch?customer=123&nonse=0.6308392664170006") @task def trom(self): self.client.get("/dispatch?customer=392&nonse=0.015296363321630757") @task def japanese(self): self.client.get("/dispatch?customer=731&nonse=0.8022286220408668") @task def coffee(self): self.client.get("/dispatch?customer=567&nonse=0.0022220379420636593") class WebsiteUser(HttpLocust): task_set = UserTasks --- apiVersion: apps/v1 kind: Deployment metadata: labels: service: hotrod name: hotrod spec: replicas: 1 selector: matchLabels: service: hotrod strategy: {} template: metadata: labels: service: hotrod spec: containers: - args: - all env: - name: JAEGER_ENDPOINT value: http://my-release-signoz-otel-collector.platform.svc.cluster.local:14268/api/traces image: jaegertracing/example-hotrod:1.30 imagePullPolicy: IfNotPresent name: hotrod ports: - containerPort: 8080 resources: requests: cpu: 100m memory: 100Mi limits: cpu: 200m memory: 200Mi restartPolicy: Always --- apiVersion: v1 kind: Service metadata: labels: service: hotrod name: hotrod spec: ports: - name: "8080" port: 8080 targetPort: 8080 selector: service: hotrod --- apiVersion: apps/v1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: "1" labels: role: locust-master name: locust-master spec: replicas: 1 selector: matchLabels: role: locust-master strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 type: RollingUpdate template: metadata: labels: role: locust-master spec: containers: - image: grubykarol/locust:0.8.1-py3.6 imagePullPolicy: IfNotPresent name: locust-master env: - name: ATTACKED_HOST valueFrom: configMapKeyRef: name: locust-cm key: ATTACKED_HOST - name: LOCUST_MODE value: MASTER - name: LOCUST_OPTS value: --print-stats volumeMounts: - mountPath: /locust name: locust-scripts ports: - containerPort: 5557 name: comm - containerPort: 5558 name: comm-plus-1 - containerPort: 8089 name: web-ui resources: requests: cpu: 100m memory: 100Mi limits: cpu: 200m memory: 200Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: locust-scripts configMap: name: scripts-cm --- apiVersion: v1 kind: Service metadata: labels: role: locust-master name: locust-master spec: ports: - port: 5557 name: communication - port: 5558 name: communication-plus-1 - port: 8089 targetPort: 8089 name: web-ui selector: role: locust-master --- apiVersion: apps/v1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: "1" labels: role: locust-slave name: locust-slave spec: replicas: 1 selector: matchLabels: role: locust-slave strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 type: RollingUpdate template: metadata: labels: role: locust-slave spec: containers: - image: grubykarol/locust:0.8.1-py3.6 imagePullPolicy: IfNotPresent name: locust-slave env: - name: ATTACKED_HOST valueFrom: configMapKeyRef: name: locust-cm key: ATTACKED_HOST - name: LOCUST_MODE value: SLAVE - name: LOCUST_MASTER value: locust-master volumeMounts: - mountPath: /locust name: locust-scripts resources: requests: cpu: 100m memory: 100Mi limits: cpu: 200m memory: 200Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: locust-scripts configMap: name: scripts-cm