Skip to content

Latest commit

 

History

History
 
 

k6

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Performance testing ingress-nginx-controller in GithubAction-CI

This README will evolve as the development of testing occurs.

INFORMATION

1. No CPU/Memory for stress

2. Scale is work-in-progress

  • We are grateful to have got a free account on K6.io, as part of their OSS Program. But it is limited to 600 tests per year.

3. No Testplans

  • Testplan discussion and coding is needed for more practical real-world testing reports

DESCRIPTION

What

  • An issue was created for performance tests, for the ingress-nginx-controller builds, kubernetes#8033 .

How

  • A step by step guide to using https://k6.io with GithubActions is here https://k6.io/blog/load-testing-using-github-actions/

    • The link above contains sample code image

    • Copy sample test code from website and edit to taste

    image
    • The CI launches a ubuntu environment and uses make dev-env to create a kind cluster. The popular https://httpbin.org api docker image is used to create a workload

      image
    • We don't want the test to block CI so this syntax from Github-Actions creates a button to run the test image

    • The button looks like this (the Run Workflow dropdown at bottom right of screenshot) image

      image

fqdn

  • Obtained a freenom domain ingress-nginx-controller.ga

    • The test uses a fqdn test.ingress-nginx-controller.ga

    • The K6 api has configuration options for dns resolution of (above mentioned fqdn) to localhost/loopback/127.0.0.1 (make dev-env cluster) image

    • Will need to discuss and decide on fqdn, as it relates to tls secret

tls

  • Procured a letsencrypt wildcard certificate for *.ingress-nginx-controller.ga

    • base64 encoded hash of the cert + key is stored in the Github Project Settings Secrets as a variable

    • The GithubActions secrets variables are decoded in the CI to create the TLS secret

      image

Visualization

  • Plan is to run tests locally on a kind cluster, in the CI pipeline, but push results to K6-cloud

    • Pushing and visualization on K6 cloud is as simple as executing k6 run -o cloud test.js

    • Currently there is a personal account in trial period (50 tests or 1 year limit) bing used

    • Pushing test-results from K6 tests on laptop, to K6-cloud personal trial account on K6-Cloud, to see what the graphs look like

      image image
    • The cli result looks like this image

  • Before merging the PR, the testing is being done on personal Github project with exact same code as this PR here https://github.com/longwuyuan/k6-loadtest-example/runs/6545706269?check_suite_focus=true