Skip to content

feat(scaletest): add scaletest-runner template #9662

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 36 commits into from
Sep 15, 2023
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
51b5054
feat(scaletest): add scaletest-runner template
mafredri Sep 13, 2023
9a579fb
add setup/scaletest-sa.yaml
mafredri Sep 13, 2023
cde4388
fix typo
mafredri Sep 13, 2023
cd20cb8
shfmt
mafredri Sep 13, 2023
12ecd71
fix typo
mafredri Sep 13, 2023
55d6fd8
fix shellcheck
mafredri Sep 13, 2023
b251af9
fmt
mafredri Sep 13, 2023
1b1b401
improve precondition
mafredri Sep 13, 2023
fa0de66
turn namespace into param
mafredri Sep 14, 2023
77d575c
turn some params to non-ephemeral
mafredri Sep 14, 2023
abab20f
expose concurrency knobs as parameters
mafredri Sep 14, 2023
dac2ff8
refactor phase, create lib
mafredri Sep 14, 2023
059988e
refactor to use state dir in run dir
mafredri Sep 14, 2023
6352ce1
move permission check higher up
mafredri Sep 14, 2023
67e54a6
fixup! turn namespace into param
mafredri Sep 14, 2023
8f6950a
fixup! turn namespace into param
mafredri Sep 14, 2023
964778e
add cleanup strategy and make minor tweaks
mafredri Sep 14, 2023
57fd74e
move prepare/install step to Dockerfile
mafredri Sep 14, 2023
4c22a73
fix
mafredri Sep 14, 2023
35ac68f
add todo for cleanup
mafredri Sep 14, 2023
7cffd30
store timestamps for all status messages
mafredri Sep 14, 2023
5cb0e9b
make fmt/shfmt
mafredri Sep 14, 2023
e037b6b
fix unbound var
mafredri Sep 14, 2023
f336a0a
clean up previous runs if needed
mafredri Sep 14, 2023
047c784
clean up results json files
mafredri Sep 14, 2023
18875f4
add previous phase
mafredri Sep 14, 2023
0507591
fix
mafredri Sep 14, 2023
d83f480
grep -c <3
mafredri Sep 14, 2023
179f5b4
ns
mafredri Sep 14, 2023
5f5d3b1
add compression of old archives
mafredri Sep 14, 2023
c9205ce
s/echo/log/
mafredri Sep 14, 2023
f7b8c00
increase zstd compression level
mafredri Sep 15, 2023
4688f59
make sleep a dry-run op
mafredri Sep 15, 2023
3f4008c
make compression a dry-run op
mafredri Sep 15, 2023
0fce513
show dry-run in status
mafredri Sep 15, 2023
94b49e9
make shellcheck happy
mafredri Sep 15, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cli/exp_scaletest.go
Original file line number Diff line number Diff line change
Expand Up @@ -858,7 +858,7 @@ func (r *RootCmd) scaletestCreateWorkspaces() *clibase.Cmd {
Flag: "use-host-login",
Env: "CODER_SCALETEST_USE_HOST_LOGIN",
Default: "false",
Description: "Use the use logged in on the host machine, instead of creating users.",
Description: "Use the user logged in on the host machine, instead of creating users.",
Value: clibase.BoolOf(&useHostUser),
},
}
Expand Down
51 changes: 51 additions & 0 deletions scaletest/setup/scaletest-sa.yaml
Copy link
Member

@johnstcn johnstcn Sep 14, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should probably be incorporated into scaletest/terraform instead

EDIT: If you prefer, I can incorporate this when I'm going through and updating the tf config instead.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, I'd appreciate that! Should I remove it from this PR?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nah you can leave it.

Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: scaletest-sa
namespace: coder-big
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: scaletest-role
namespace: coder-big
rules:
- apiGroups:
- ""
resources: ["*"]
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- deletecollection
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: scaletest-rolebinding
namespace: coder-big
subjects:
- kind: ServiceAccount
name: scaletest-sa
roleRef:
kind: Role
name: scaletest-role
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: coder-provisioner-podmonitor-rolebinding
namespace: coder-big
subjects:
- kind: ServiceAccount
name: coder-provisioner
roleRef:
kind: Role
name: coder-podmonitor
---

34 changes: 34 additions & 0 deletions scaletest/templates/scaletest-runner/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# This image is used to run scaletest jobs and, although it is inside
# the template directory, it is built separately and pushed to
# gcr.io/coder-dev-1/scaletest-runner:latest.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Self-review: I ended up keeping this file close to where it's used, however, it may be confusing if someone tries to edit it in the template editor and there are no changes.

Perhaps I should move it elsewhere?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, in theory we could use our CI to build and push it...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, that was the idea behind the "Future improvements" below. 👍🏻 IMO not the highest priority right now, though.

#
# Future improvements will include versioning and including the version
# in the template push.

FROM codercom/enterprise-base:ubuntu

ARG DEBIAN_FRONTEND=noninteractive

USER root

RUN wget --quiet -O /tmp/terraform.zip https://releases.hashicorp.com/terraform/1.5.7/terraform_1.5.7_linux_amd64.zip \
&& unzip /tmp/terraform.zip -d /usr/local/bin \
&& rm /tmp/terraform.zip \
&& terraform --version

RUN wget --quiet -O /tmp/envsubst "https://github.com/a8m/envsubst/releases/download/v1.2.0/envsubst-$(uname -s)-$(uname -m)" \
&& chmod +x /tmp/envsubst \
&& mv /tmp/envsubst /usr/local/bin

RUN echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list \
&& curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - \
&& apt-get update \
&& apt-get install --yes \
google-cloud-cli \
jq \
kubectl \
&& gcloud --version \
&& kubectl version --client \
&& rm -rf /var/lib/apt/lists/*

USER coder
9 changes: 9 additions & 0 deletions scaletest/templates/scaletest-runner/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
name: Scaletest Runner
description: Run a scaletest.
tags: [local]
---

# Scaletest Runner

Run a scaletest.
Loading