UNPKG

lightweight-browser-load-tester

Version:

A lightweight load testing tool using real browsers for streaming applications with DRM support

252 lines 7.23 kB
apiVersion: batch/v1 kind: Job metadata: name: load-tester-job labels: app: load-tester type: job spec: ttlSecondsAfterFinished: 3600 # Clean up job after 1 hour backoffLimit: 3 template: metadata: labels: app: load-tester type: job spec: restartPolicy: Never containers: - name: load-tester image: load-tester:latest imagePullPolicy: IfNotPresent command: ["node", "dist/index.js", "test"] args: - "--config" - "/config/load-test-config.yaml" - "--output" - "/results/test-results.json" env: - name: NODE_ENV value: "production" - name: LT_CONCURRENT_USERS valueFrom: configMapKeyRef: name: load-tester-config key: concurrent-users optional: true - name: LT_TEST_DURATION valueFrom: configMapKeyRef: name: load-tester-config key: test-duration optional: true - name: LT_STREAMING_URL valueFrom: configMapKeyRef: name: load-tester-config key: streaming-url - name: LT_DRM_LICENSE_URL valueFrom: secretKeyRef: name: load-tester-secrets key: drm-license-url optional: true - name: LT_PROMETHEUS_ENABLED valueFrom: configMapKeyRef: name: load-tester-config key: prometheus-enabled optional: true - name: LT_PROMETHEUS_URL valueFrom: secretKeyRef: name: load-tester-secrets key: prometheus-url optional: true - name: LT_PROMETHEUS_USERNAME valueFrom: secretKeyRef: name: load-tester-secrets key: prometheus-username optional: true - name: LT_PROMETHEUS_PASSWORD valueFrom: secretKeyRef: name: load-tester-secrets key: prometheus-password optional: true - name: LT_OTEL_ENABLED valueFrom: configMapKeyRef: name: load-tester-config key: otel-enabled optional: true - name: LT_OTEL_ENDPOINT valueFrom: secretKeyRef: name: load-tester-secrets key: otel-endpoint optional: true resources: requests: memory: "2Gi" cpu: "1000m" limits: memory: "8Gi" cpu: "4000m" volumeMounts: - name: config-volume mountPath: /config readOnly: true - name: results-volume mountPath: /results - name: tmp-volume mountPath: /tmp - name: dev-shm mountPath: /dev/shm securityContext: runAsNonRoot: true runAsUser: 1000 runAsGroup: 1000 allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: false volumes: - name: config-volume configMap: name: load-tester-config-file - name: results-volume persistentVolumeClaim: claimName: load-tester-results-pvc - name: tmp-volume emptyDir: {} - name: dev-shm emptyDir: medium: Memory sizeLimit: 2Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: load-tester-results-pvc labels: app: load-tester spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: standard # Adjust based on your cluster's storage classes --- apiVersion: batch/v1 kind: CronJob metadata: name: load-tester-cronjob labels: app: load-tester type: cronjob spec: schedule: "0 2 * * *" # Run daily at 2 AM jobTemplate: spec: ttlSecondsAfterFinished: 86400 # Clean up job after 24 hours backoffLimit: 2 template: metadata: labels: app: load-tester type: cronjob spec: restartPolicy: Never containers: - name: load-tester image: load-tester:latest imagePullPolicy: IfNotPresent command: ["node", "dist/index.js", "test"] args: - "--config" - "/config/load-test-config.yaml" - "--output" - "/results/scheduled-test-$(date +%Y%m%d-%H%M%S).json" env: - name: NODE_ENV value: "production" - name: LT_CONCURRENT_USERS valueFrom: configMapKeyRef: name: load-tester-config key: concurrent-users optional: true - name: LT_TEST_DURATION valueFrom: configMapKeyRef: name: load-tester-config key: test-duration optional: true - name: LT_STREAMING_URL valueFrom: configMapKeyRef: name: load-tester-config key: streaming-url - name: LT_PROMETHEUS_ENABLED value: "true" - name: LT_PROMETHEUS_URL valueFrom: secretKeyRef: name: load-tester-secrets key: prometheus-url optional: true - name: LT_PROMETHEUS_USERNAME valueFrom: secretKeyRef: name: load-tester-secrets key: prometheus-username optional: true - name: LT_PROMETHEUS_PASSWORD valueFrom: secretKeyRef: name: load-tester-secrets key: prometheus-password optional: true resources: requests: memory: "2Gi" cpu: "1000m" limits: memory: "8Gi" cpu: "4000m" volumeMounts: - name: config-volume mountPath: /config readOnly: true - name: results-volume mountPath: /results - name: tmp-volume mountPath: /tmp - name: dev-shm mountPath: /dev/shm securityContext: runAsNonRoot: true runAsUser: 1000 runAsGroup: 1000 allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: false volumes: - name: config-volume configMap: name: load-tester-config-file - name: results-volume persistentVolumeClaim: claimName: load-tester-results-pvc - name: tmp-volume emptyDir: {} - name: dev-shm emptyDir: medium: Memory sizeLimit: 2Gi