diff --git a/Dockerfile b/Dockerfile index ccc30ea..9d33570 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,10 @@ -FROM golang:1.9 AS builder +FROM golang:1.9-alpine RUN mkdir /app ADD . /app/ WORKDIR /app +RUN apk add git bash RUN go get github.com/go-sql-driver/mysql RUN go build -o main . -FROM alpine:3.10 - -COPY --from=builder /app/main /usr/bin/mysql-load-generator -CMD ["/usr/bin/mysql-load-generator"] +CMD ["/app/entrypoint.sh"] diff --git a/config-template.sh b/config-template.sh new file mode 100755 index 0000000..c144c06 --- /dev/null +++ b/config-template.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set -x + +. vars.sh + +cat << EOF > config.json +{ + "connectionString": "${USER}:${PASSWORD}@tcp(${HOST}:${PORT})/${DB}", + "requestsPerSecond": ${RPS}, + "printLogs": true, + "timeToRunInSeconds": ${TTR}, + "queries" : [ + "${QUERY}" + ] +} +EOF diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000..d606bdb --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +./config-template.sh + +/app/main "$@" + diff --git a/load-gen.deployment.yaml b/load-gen.deployment.yaml new file mode 100644 index 0000000..c0ed1e1 --- /dev/null +++ b/load-gen.deployment.yaml @@ -0,0 +1,50 @@ +--- +apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 +kind: Deployment +metadata: + name: loadgen + labels: + app: loadgen +spec: + strategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: 0% + maxSurge: 66% + revisionHistoryLimit: 5 + replicas: 1 + selector: + matchLabels: + app: loadgen + template: + metadata: + labels: + app: loadgen + spec: + containers: + - image: lvejm/mysql-load-generator + name: loadgen + imagePullPolicy: Always + resources: + limits: + cpu: 200m + memory: 200Mi + requests: + cpu: 100m + memory: 75Mi + env: + - name: lg_USER + value: maxscale1 + - name: lg_PASSWORD + value: maxscaledemo1 + - name: lg_HOST + value: maxscale.maxscale.svc.cluster.local + - name: lg_DB + value: employees + - name: lg_RPS + value: "2" + - name: lg_TTR + value: "90" + - name: lg_QUERY + value: "select emp.emp_no, emp.first_name, emp.last_name, sal.salary, sal.from_date from employees emp inner join (select emp_no, MAX(salary) as salary, from_date from salaries group by emp_no) sal on (emp.emp_no = sal.emp_no) LIMIT 50;" + diff --git a/vars.sh b/vars.sh new file mode 100644 index 0000000..9926434 --- /dev/null +++ b/vars.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# setup for overrides in container environment prefixed by "lg_" + +export USER=${lg_USER:-maxscale1} +export PASSWORD=${lg_PASSWORD:-maxscaledemo} +export HOST=${lg_HOST:-maxscale.maxscale.svc.cluster.local} +export PORT=${lg_PORT:-3306} +export DB=${lg_DB:-employees} + +export RPS=${lg_RPS:-2} +export TTR=${lg_TTR:-90} +export QUERY=${lg_QUERY:-"select emp.emp_no, emp.first_name, emp.last_name, sal.salary, sal.from_date from employees emp inner join (select emp_no, MAX(salary) as salary, from_date from salaries group by emp_no) sal on (emp.emp_no = sal.emp_no) LIMIT 50;"} + +