39 lines
1.0 KiB
YAML
39 lines
1.0 KiB
YAML
apiVersion: v1
|
|
kind: Namespace
|
|
metadata:
|
|
name: loadtest
|
|
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: k6-script
|
|
namespace: loadtest
|
|
data:
|
|
test.js: |
|
|
// Generic load generator. Configured by env:
|
|
// TARGET_URL - full URL to hit
|
|
// VUS - virtual users per pod (default 20)
|
|
// DURATION - k6 duration string (default "60s")
|
|
import http from 'k6/http';
|
|
import { check, sleep } from 'k6';
|
|
|
|
const target = __ENV.TARGET_URL || 'http://example.com';
|
|
const vus = parseInt(__ENV.VUS || '20');
|
|
const duration = __ENV.DURATION || '60s';
|
|
|
|
export const options = {
|
|
stages: [
|
|
{ duration: '10s', target: vus },
|
|
{ duration: duration, target: vus },
|
|
{ duration: '5s', target: 0 },
|
|
],
|
|
thresholds: { http_req_failed: ['rate<0.01'] },
|
|
noConnectionReuse: false,
|
|
};
|
|
|
|
export default function () {
|
|
const res = http.get(target, { timeout: '10s' });
|
|
check(res, { 'status 2xx/3xx': (r) => r.status < 300 });
|
|
sleep(1 / vus * 10);
|
|
}
|