From e6db9b2d88ecb6d1ab1878340cdc0135be621239 Mon Sep 17 00:00:00 2001 From: Eric Malloy Date: Tue, 8 Oct 2019 21:01:16 -0400 Subject: [PATCH 1/3] previous multistage didn't include libraries that weren't compiled in. now use alpine image for portability. add entrypoint a, git and bash --- Dockerfile | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) 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"] From 0731f05f572447f3a02942a7a7ca778a42258221 Mon Sep 17 00:00:00 2001 From: Eric Malloy Date: Tue, 8 Oct 2019 21:02:05 -0400 Subject: [PATCH 2/3] add entrypoint , config template and vars with defaulted values --- config-template.sh | 16 ++++++++++++++++ entrypoint.sh | 6 ++++++ vars.sh | 15 +++++++++++++++ 3 files changed, 37 insertions(+) create mode 100755 config-template.sh create mode 100755 entrypoint.sh create mode 100644 vars.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/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;"} + + From 966ea4757d6b40314be89fae00dea986d2b2e644 Mon Sep 17 00:00:00 2001 From: Eric Malloy Date: Tue, 8 Oct 2019 18:32:49 -0700 Subject: [PATCH 3/3] add example kubernetes deployment manifest --- load-gen.deployment.yaml | 50 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 load-gen.deployment.yaml 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;" +