Clarification required: order of execution with k6-operator

hi,

i need a clarification regarding execution order: when the runner pod is created, does it first mount all the volumes described in TestRun.spec.runner.volumes? and only then starts looking for the script specified in TestRun.spec.script?

the use case:

  • we have a shared EKS cluster for load testing
  • there is a common k6-operator installation
  • however, each project/team have a separate namespace, where every resource actually required for running the tests is scoped to their particular namespace (this is for accounting purposes)
    • there is a MNG for the project/team, where a single node is running (we don’t need to run the tests on multiple nodes, our testing volume does not require that)
    • TestRuns are specced so that we use node affinity and taints to make sure all k6 pods are scheduled to this single node
    • this all is to make sure that EC2 costs are routed to the right team budget
    • and it would make sense to use the local filesystem on the node
  • so is this possible:
    • i specify in TestRun.spec.runner.volumes :
      - name: testspath
      hostPath:
      path: /tmp/tests
      type: DirectoryOrCreate
    • in TestRun.spec.runner.volumeMounts :
      - name: testspath
      mountPath: /tests
    • in TestRun.spec.script :
      localfile: /tests/test.js
    • ?

TIA,

Andras

Hi @subpardaemon,

Mount of volumes is part of Kubernetes flow: it happens upon the start of the Pod. So in general, yes, it always happens before the script is accessed (assuming “access” here means “read” and “execute”).

However, you don’t need to use localFile with a separate volume mount: for this case you can use the volumeClaim option directly. See the docs:

Hope it helps.