计划 k6 测试
虽然 k6 Operator 不直接支持计划 k6 测试,但您可以直接使用 Kubernetes 的 CronJob
对象来计划测试。CronJob
将按计划运行,并执行 TestRun
对象的创建和删除操作。
运行这些测试比运行独立的测试需要更多的设置。
创建一个包含 k6 脚本的 ConfigMap
有关如何创建包含 k6 脚本的 ConfigMap
的详细信息,请参阅 使用 TestRun
CRD 运行 k6 脚本。
为 TestRun
作业创建 YAML 文件的 ConfigMap
使用 make deploy
安装方法时,向 kustomization.yaml
添加 configMapGenerator
configMapGenerator:
- name: <test-name>-config
files:
- <test-name>.yaml
为 CronJob
创建 ServiceAccount
为了让 CronJob
能够创建和删除 TestRun
对象,需要创建一个服务帐户
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: k6-<namespace>
rules:
- apiGroups:
- k6.io
resources:
- testruns
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: k6-<namespace>
roleRef:
kind: Role
name: k6-<namespace>
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: k6-<namespace>
namespace: <namespace>
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: k6-<namespace>
创建 CronJob
这是一个如何在 YAML 文件中定义 CronJob
的示例
# snapshotter.yml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: <test-name>-cron
spec:
schedule: '<cron-schedule>'
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
serviceAccount: k6
containers:
- name: kubectl
image: bitnami/kubectl
volumeMounts:
- name: k6-yaml
mountPath: /tmp/
command:
- /bin/bash
args:
- -c
- 'kubectl delete -f /tmp/<test-name>.yaml; kubectl apply -f /tmp/<test-name>.yaml'
restartPolicy: OnFailure
volumes:
- name: k6-yaml
configMap:
name: <test-name>-config