Commit Graph

823 Commits

Author SHA1 Message Date
Iramis Valentin 84dddf93e3
Generic tofu updates (#114)
* add tunnel retry logic, defaults for optional cluster template fields"

* reduce bash 'set' flag usage
2025-10-23 19:18:37 -04:00
Michael Spencer 74bc8c9412
[k6] Added resource creation scripts for vai testing (#86)
* initial commit, updates for independent count values

* support for downstreams, aligned function params with other tests

* updated login, cleanup

* updated thresholds

* Updated deployments to busybox
2025-10-07 10:56:31 -07:00
Iramis Valentin ea95c35c53
Fix AWS SG issues, add all server addresses to TLS SAN (#108)
* fix SG issues, add all server addresses to tls san

* add specific distro + rancher port rules

* add specific rancher-related ports to private SG
2025-10-03 17:40:01 -04:00
Mario Manno 790bd050cc
Fix rke2 setup (#109)
* Fix An argument named "datastore_endpoint" is not expected here

* Fix RKE2 arm64 install
2025-09-22 15:04:18 -07:00
Mario Manno 458a2e8a88
Add max_pods and node_cidr_mask_size to test environment downstream clusters (#110)
Co-authored-by: Mario Manno <mario.manno@suse.com>
2025-09-22 15:03:45 -07:00
Iramis Valentin b50dae1b13
[k6] Add new VAI-focused resource churn script (#100)
* wip resource churn

* updates to  scenario

* add default 'system' filters, format api_benchmark

* optional filters, remove cruft, fix list urls

* added separate VU params

* re-add old change_configmaps.js, rename new configmap script

* add potential threshold updates, resolve various feedback points

* move script to vai dir

* fix per-scenario thresholds

* final threshold fix
2025-09-09 16:17:15 -04:00
Iramis Valentin dd2a0681e2
Fix broken `dartboard load` command (#101)
* modify configmap.yaml template to account for new dir structure, have load.go account for new dir structure, added TODO to load.go

* account for new k6 folder structure in k6Run()

* add .helmignore

* fix linter issues

* use sync.Once to ensure file path entries are only cached once per-command execution

* remove debug log lines

* add comments to 'FileEntries' functions

* fix unused assignment

* add relative paths to K6Run() calls
2025-09-03 18:19:32 -04:00
Iramis Valentin 50c2a1330d
Make the AWS module's network more secure (#107)
* update providers, add VPC and SG rules, reduce flakiness of k3s/rke2 modules, add toggle for public ips and tunnels

* fix install scripts

* only use prefix list if input var is not null

* reintroduce sudo -s block

* fix distro install

* remove misc cidrs from ssh SG

* remove default of private SG
2025-09-03 15:37:53 -04:00
Silvio Moioli e4bcfc9e18
Kine/Postgres: various fixes (#76)
* tofu/postgres: bugfix: directory already existed, use it

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* tofu/postgres: bugfix: use correct sh syntax

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* tofu/postgres: listen from any addresses to allow use of non-standalone kine (integrated in distros)

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* tofu/postgres: do not install kine standalone

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* tofu/postgres: bugfix: use correct username

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* test_environment: support postgres as kine backend

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* tofu/postgres: make kine password a parameter

Signed-off-by: Silvio Moioli <silvio@moioli.net>

---------

Signed-off-by: Silvio Moioli <silvio@moioli.net>
2025-08-19 14:23:46 -04:00
Silvio Moioli 985ad080b3
feat(k6): Add Steve Watch API benchmark test (#102)
* first version from Gemini

Prompt used:

Take a look at the @k6 directory scripts, particularly @k6/tests/api_benchmark.js targeting Steve. I need a new k6 benchmark script along the same lines that tests the Watch functionality described in https://github.com/moio/apiserver/blob/watch_readme/README.md and https://github.com/moio/steve/blob/readme_watch/README.md. Specifically, I need to start watching the same resource (default: configmaps) in a configurable namespace (default: scalability-tests) from multiple Steve servers backed by the same Kubernetes API. A parallel scenario should change configmaps at a configurable rate, updating one configmaps at random via PUT to one of the configured Steve servers. There will be some delay between resource.changed events coming from the Steve servers, as they might not always have exactly the same speed. I need to measure and report the delta between the fastest and the slowest Steve (with stats: min, max, avg, p(95)), as well as the delay between a change in a configmap and the time the first Steve observes the change via Watch (with stats) and the time the last Steve observes it (with stats). mode should be the default for this test, but make it configurable to use resources.changes optionally.

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* fix durations and iterations

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* fix cookie passing in the websocket case - api is different there

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* fixup! fix durations and iterations

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* Rework delay computation logic. VUs do not share data, not even global variables, piggyback on the ConfigMap instead

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* spray logging all over

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* Use WebSocket async API

Gemini prompt:

you used the standard k6 websocket api documented here https://grafana.com/docs/k6/latest/using-k6/protocols/websockets/. The problem is that it is blocking, so no more than one websocket is opened at any time. Re-read @k6/tests/steve_watch_benchmark.js considering all manual changes I've made as the good starting point. Migrate it over the new experimental API which is non-blocking, see https://grafana.com/docs/k6/latest/javascript-api/k6-experimental/websockets/

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* fix timeout and error handling

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* add time after creation to not pollute watch measurements

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* improve logging

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* bugfix: ensure ints are ints

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* add settle time for watchers to start watching

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* hardcode watchers vus to 1. What we are interested in measuring is delay of replicas, not load here

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* make change vus parametric

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* add sainty thresholds

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* tear down before setup, in case an earlier run is half finished

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* rework logging so that verbose messages are only output with the verbose option

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* fix id to be truly unique and avoid misassignment of timestamps

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* hardcode resource type for now

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* add the ability to target both Steve and Kubernetes APIs

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* as an additional check, log the time the listener takes to run

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* add kube api watching

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* tune settle time

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* explainer for origin url

Signed-off-by: Silvio Moioli <silvio@moioli.net>

---------

Signed-off-by: Silvio Moioli <silvio@moioli.net>
2025-08-19 14:22:22 -04:00
Silvio Moioli 0a0e3e4a4d
Merge pull request #105 from moio/k3d_bumps 2025-08-19 09:40:27 +02:00
Silvio Moioli 906c254c6d
bump versions in the k3d dart
Signed-off-by: Silvio Moioli <silvio@moioli.net>
2025-08-18 16:17:38 +02:00
Mario Manno e19e645190
Add setup docs for 5000 cluster fleet setup with k3k (#94)
Co-authored-by: Mario Manno <mario.manno@suse.com>
2025-07-31 15:10:27 -04:00
Mario Manno 04aceba635
Increase RKE2 neigh limits and inotify limits (#89)
* bigger arp cache needed for many hosts in same network
* inotify limits needed, e.g. for k3k vclusters

Co-authored-by: Mario Manno <mario.manno@suse.com>
2025-07-31 15:06:00 -04:00
Mario Manno e5b8e041cf
Increase cidr_block for AWS subnets (#88)
You may also need to increase node_cidr_mask_size

Co-authored-by: Mario Manno <mario.manno@suse.com>
2025-07-31 14:53:55 -04:00
Mario Manno cbce97bf85
Use prime ribs rke2 and avoid docker.io (#87) 2025-07-31 14:53:18 -04:00
Iramis Valentin 1d779acbe2
Fix scripts used by `dartboard load` command (#103)
* remove nonexistent roles/bindings

* remove nonexistent roles/bindings
2025-07-31 14:34:00 -04:00
Iramis Valentin 3ffbe61e4f
Misc fixes for AWS (#97) 2025-07-31 11:33:12 -07:00
Silvio Moioli c08bdffa2f
Merge pull request #104 from moio/api_benchmark_doc 2025-07-30 12:26:32 +02:00
Silvio Moioli 5eb356b6cf
Add API Benchmark HOWTO
Signed-off-by: Silvio Moioli <silvio@moioli.net>
2025-07-29 10:48:34 +02:00
Iramis Valentin fd824db806
Add override option to Dart files for rancher charts repo (#81) 2025-07-23 17:39:27 -04:00
Iramis Valentin a257320e86
Added custom rancher diagnostics metrics (#99)
* added rancher diagnostics metrics

* remove unused code

* fix time-based trend metrics
2025-07-18 15:09:34 -04:00
Iramis Valentin 669316955f
add load test for projects, namespaces, add various utils, rancher diagnostics (#84) 2025-07-15 12:25:43 -04:00
Iramis Valentin fe86eb53a9
update naming for data size tracking function, update retry function signatures (#85) 2025-07-15 12:25:31 -04:00
Silvio Moioli c09c1e11a1
Merge pull request #93 from moio/api_benchmark_pause 2025-07-11 00:23:57 +02:00
Silvio Moioli f31a60b111
fix types
Signed-off-by: Silvio Moioli <silvio@moioli.net>
2025-07-10 18:39:39 +02:00
Silvio Moioli 38e5d5023e
add optional pauses between requests
Signed-off-by: Silvio Moioli <silvio@moioli.net>
2025-07-10 16:53:51 +02:00
Alejandro Ruiz 03686ee82b
Fix k6-test-files ConfigMap misssing some files (#83) 2025-07-03 11:46:54 +02:00
Mario Manno bf722290b9
Fix inclusion of custom rke2 config for maxPods (#79)
Co-authored-by: Mario Manno <mario.manno@suse.com>
2025-07-02 22:51:27 -04:00
Iramis Valentin f2297ab4fa
update login() to return the response, other misc k6 updates (#82) 2025-07-01 18:23:40 -04:00
Silvio Moioli 4f97160dbc
Merge pull request #77 from moio/20250513_kubernetes_api_benchmark_doc 2025-06-30 10:49:56 +02:00
Michael Spencer 182d434138
Added export metrics script (#42)
* Initial commit

* Usage improvements, added README

* Updated names, added kubeconfig name to metrics directory

* updated printf calls

* small fixes

* fixes for date commands, updated README, added promethus memory check

* small fixes, improved tsdb aggregation step

* improved unnecessary arithmetic

* added date helpers

* Added prometheus memory requirement

* updated script name

* removed old filenames

* updated .gitignore for name changes

---------

Co-authored-by: Michael Spencer <MSpencer87@users.noreply.github.com>
2025-06-26 15:52:15 -04:00
Silvio Moioli 1503a0f5fd
Latest Kubernetes API benchmark: add docs and results
Signed-off-by: Silvio Moioli <silvio@moioli.net>
2025-06-18 16:18:14 +02:00
Mario Manno acc48f71c2
Add visualization of module import structure (#74)
A#	modified:   DEVELOPING.md

Co-authored-by: Mario Manno <mario.manno@suse.com>
2025-06-17 12:32:10 -04:00
Michael Spencer 93baa40f19
Improved structure of k6 test suite (#57)
* initial commit

* updated filenames, moved rancher files

* updated paths, adjusted filenames

* updated filenames

* path fix

---------

Co-authored-by: Michael Spencer <MSpencer87@users.noreply.github.com>
2025-06-12 13:32:50 -07:00
Silvio Moioli b980d1ff6d
bugfix: allow for a larger bastion to accommodate larger setups (#71)
Signed-off-by: Silvio Moioli <silvio@moioli.net>
2025-06-06 11:01:43 -04:00
Silvio Moioli 0fbefd3647
bugfix: kubectl run does not have --http-debug (#69)
Signed-off-by: Silvio Moioli <silvio@moioli.net>
2025-06-06 11:00:55 -04:00
Mario Manno ef1758f93f
Use unique user name in kubeconfig files for k3s and rke2 (#70)
Using unique names allows multiple kubeconfigs to be specified in
KUBECONFIG or merged into single kubeconfig file.

```
KUBECONFIG="$PWD/upstream.yaml:$PWD/downstream-0-0.yaml"
kubectl config view --flatten --raw > kubeconfig-all.yaml
```

Apparently the user name has no connection to the common name in the
certificate.

Co-authored-by: Mario Manno <mario.manno@suse.com>
2025-06-06 10:58:47 -04:00
Silvio Moioli 1cfd271de7
Harvester Image IDs: make them node_module_variables (#67)
Signed-off-by: Silvio Moioli <silvio@moioli.net>
2025-05-30 13:35:47 -04:00
Silvio Moioli c06f68e218
k6: add benchmark for listing resources directly from Kubernetes (#65)
* k6/k8s: make list limit configurable

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* k6: add Kubernetes api read benchmark

Signed-off-by: Silvio Moioli <silvio@moioli.net>

---------

Signed-off-by: Silvio Moioli <silvio@moioli.net>
2025-05-30 13:26:00 -04:00
Silvio Moioli aa87402359
make path to ssh scripts absolute for clarity (#68)
Signed-off-by: Silvio Moioli <silvio@moioli.net>
2025-05-30 13:19:20 -04:00
Silvio Moioli 0eeff27aea
tofu/aws: bugfix: correct vpc creation logic (#66)
Signed-off-by: Silvio Moioli <silvio@moioli.net>
2025-05-30 13:18:37 -04:00
Silvio Moioli 7a0b4186e6
k6/create_k8s_resources: script improvements (#64)
* create_k8s_resources: make namespace parametric

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* create_k8s_resources: make data size parametric

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* create_k8s_resources: make vus parametric

Signed-off-by: Silvio Moioli <silvio@moioli.net>

* create_k8s_resources: bugfix: actually add data to configmaps

Signed-off-by: Silvio Moioli <silvio@moioli.net>

---------

Signed-off-by: Silvio Moioli <silvio@moioli.net>
2025-05-30 12:38:51 -04:00
Chris Kim 3d94c8e874
Fix harvester things (#58)
* Fix Harvester auto-downloaded image namespace

Signed-off-by: Chris Kim <oats87g@gmail.com>

* Disable IPv6 on Harvester VMs

Signed-off-by: Chris Kim <oats87g@gmail.com>

---------

Signed-off-by: Chris Kim <oats87g@gmail.com>
2025-05-30 12:37:26 -04:00
Iramis Valentin 53479fd4ac
add support for extra env vars, add rancher chart repo override (#54)
* add support for extra env vars, add rancher chart repo override

* fix ineffectual assignment
2025-05-29 11:18:01 -04:00
Iramis Valentin c8c62cc430
remove inifinitely recursive Date() function (#55) 2025-05-01 12:39:43 -04:00
Iramis Valentin 8b4a04bedb
Update steve schema tests 2025-04-29 11:34:27 -04:00
Iramis Valentin f47e010e16
Add Harvester infra modules (#13)
Signed-off-by: Silvio Moioli <silvio@moioli.net>
Co-authored-by: Silvio Moioli <silvio@moioli.net>
2025-04-14 15:46:52 -04:00
Iramis Valentin eeacca101c
Merge pull request #50 from git-ival/complex-crd
Add complex tests for CRD changes from 2.9 Steve updates
2025-04-14 13:18:02 -04:00
Iramis Valentin 3f2aed0b86
Merge pull request #43 from git-ival/lastused-tokens-k6
Basic Lastused tokens k6 test
2025-04-14 13:17:50 -04:00