Testkube: The Kubernetes-native testing framework

Testkube: The Kubernetes-native testing framework

Shivam Katare's photo
Shivam Katare
Β·Aug 30, 2022Β·

4 min read

Subscribe to our newsletter and never miss any upcoming articles

Table of contents

  • What is TestKube?
  • Prerequisties
  • Why TestKube?
  • Is TestKube for you?
  • Installation
  • Demo of testing using K6 with Testkube
  • Thank You

Hello Hashnode Community! Today we will discover a fantastic OpenSource testing tool for Kubernetes.TestKube.

What is TestKube?

Testkube is a Kubernetes-native testing framework. It enables running tests directly in your Kubernetes cluster and then saves the results to a centralized space. It abstracts away all the troubles of containerizing different test types. Testkube makes testing in Kubernetes a smooth cloud-native experience.

  • TestKube gives us a centralized test result and is simple to integrate with GitOps and CI/CD procedures.

So, in this blog, we will go to cover:

  1. Why Testkube?
  2. Is it for you?
  3. Installation of Testkube
  4. Demo.

Prerequisties

  • Basic knowledge of K8s

Why TestKube?

TestKube Decouples the testing activities performed at CI/CD pipeline and defines them in Testkube so that we can run our tests anytime without having to run the entire CI/CD pipeline for running an individual test, So moving across CI/CD platforms becomes more accessible as we don't need to redefine all the tests as we can reuse the way tests has been defined and orchestrated in TestKube.

CI/CD Workflow With TestKube

image.png

CI/CD Workflow Without TestKube

image.png

Because TestKube retrieves the test files from the project repository and executes them as you want, you don't need to perform any complicated settings to run your tests.

The complexities involved with CI/CD testing are simplified as TestKube Manages all the testing activities themselves.

TestKube provides the entire infrastructure for taking care of all testing workloads from inside the Kubernetes cluster.

Is TestKube for you?

  • If you are doing Integration testing for your application under Kubernetes, Testkube is for you.

  • If you wish to surpass K8's limitations, such as network limits or lack of access to testing environments

  • If your CI/CD and testing processes are too closely related

Installation

So, for installing TestKube you can go through this detailed guide, or you can also watch this video (from 03:23).

  • Now, open your terminal and write this command.πŸ‘‡
$ kubectl testkube install

After Installation, this screen will be visible to youπŸ‘‡

WHWUjdAYr.png

Note- This will be only visible if you have already installed K8s in your system.

  • Now, run thisπŸ‘‡ command to view all the TestKube components.
$ kubectl get pods -n testkube

Now, your screen will look like thisπŸ‘‡

Cg66jmHH655.png

Now, we will be able to see both client and server versions.

  • To see the version of the TestKube, run this command.πŸ‘‡
$ kubectl testkube version
  • The screen will look like thisπŸ‘‡

this.png

Note - TestKube installs in an empty cluster. We will need some service to test

To run your test, run this command.πŸ‘‡

kubectl testkube run test our-first-test-name

The screen will look like this.πŸ‘‡

twooo.png

πŸ“Œ The whole process will be going to look like this.πŸ‘‡

testkube-intro.gif

Demo of testing using K6 with Testkube

Now, we will go to see a demo using k6 with Testkube.

Running a K6 Test

K6 is integral part of Testkube. During the Testkube installation, the Testkube k6 executor installs by default. You must first build a Test in Testkube to perform a K6 test.

  • Create a new JS file.
// bash

$ touch k6-test.js

// You can give any name

Now we will create a k6 load test and run it. Write this code πŸ‘‡ inside the k6-test.js file.

import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
stages: [
 { duration: '5s', target: 20 },
 { duration: '5s', target: 10 },
],
};
export default function () {
const res = http.get('https://httpbin.test.k6.io/');
check(res, { 'status was 200': (r) => r.status == 200 });
sleep(2);
}

Save the file as k6-test.js or anything you like.

  • Now execute the test script. First, we need to define it as k6/script πŸ‘‡
$ kubectl testkube create test --file path/to/your/k6-test.js --type "k6/script" --name k6-test

Now, run this command.

$ kubectl testkube run test k6-test -f

Now, we can view our logs and test results in the Testkube dashboard. Run this command.πŸ‘‡

$ kubectl testkube dashboard

Now, the dashboard will look like this.πŸ‘‡

image.png

Thank You

I hope you learn something from this blog. You can view this video to learn more about Testkube.

Did you find this article valuable?

Support Kubeworld by becoming a sponsor. Any amount is appreciated!

See recent sponsors |Β Learn more about Hashnode Sponsors
Β 
Share this