KubeLibrary: Testing Kubernetes with RobotFramework

in Kubernetes , Configuration Management , DevOps


This article explores the RobotFramework library KubeLibrary. KubeLibrary is a wrapper for the Python Kubernetes Client. It enables you to assert the status of various objects in your Kubernetes Clusters. As the library can be integrated with any RobotFramework test suite, it is ideal to verify the testability of your System-under-Test by asserting the status of your nodes, deployments, pods, configmaps, and others Kubernetes objects before running any end to end tests.

    What is the KubeLibrary?

    As KubeLibrary is based on the official python kubernetes client you can connect to your Kubernetes cluster while executing any Kubernetes API command.

    Being part of the broader RobotFramework Library, all code is wrapped into keywords that can be used in test cases defined in ATDD (Acceptance Test Driven Development) or in BDD (Behavioral Driven Development) syntax.

    Why use the KubeLibrary?

    When running end to end tests, you need to ensure that your system-under-test is fully available and runs the latest deployed version. With the KubeLibrary you can easily build tests to verify that all objects in your Kubernetes cluster are up and running and in the state that you expect them. This ensures that a successful end to end test run can be performed.

    How to use the KubeLibrary

    There are many different examples available within the GitHub repository of the KubeLibrary. But let’s show you a small example here:

    Let’s say you want to make sure that all pods in a certain namespace are running and use a specific image version.

    https://gist.github.com/Nilsty/83ad625eb76a3fe5f9891919bb4f169a (sorry, can't embed on here)

    If you run this test in your Kubernetes cluster, it would check for pods matching the name pattern in ${POD_NAME_PATTERN} in a namespace ${NAMESPACE}. It will search for running pods for 2 minutes. Once the pods are confirmed running it will confirm the image they are using.
    After you have confirmed that your pods are running you can continue with any application-level testing.
    The KubeLibrary can be also used for checking nodes, jobs, configmaps, persistent volume claims, services, and other Kubernetes objects. Current keyword documentation is available on GitHub (link).

    Contributing to the KubeLibrary

    Almost every week new keywords are added to the library, but the Kubernetes API is big and not all of its functionality is covered in the KubeLibrary, yet. If you are missing certain functionality please file an issue in the GitHub project or create a pull request. Adding new functionality can be quite easy as the python client for kubernetes is well documented and often only a wrapper for the existing definitions is required.

    How do we use the KubeLibrary at Humanitec?

    At Humanitec our end to end test automation is organized in Robot Framework test suites. We utilize several libraries to gain a holistic view through our testing. For API testing we use the Requests Library, for UI testing we use the Selenium Library.
    Humanitec enables the user to develop, maintain, and deploy applications to Kubernetes clusters. Thus, we also utilize the KubeLibrary to verify the expected state of Kubernetes objects created and updated by Humanitec. For example, if you choose to update environment variables for your application through Humanitec, this will trigger an update to a configmap object in your applications cluster. In our tests, we trigger this update with an API call to the Humanitec API, then verify with the KubeLibrary if the update was done as expected in the cluster.

    This way, we can build easily automated regression tests for all the features provided by Humanitec.

    If you want to learn more about KubeLibrary, join our next webinar!

    Get similar stories in your inbox weekly, for free

    Share this story with your friends

    Humanitec builds your Internal Developer Platform. You create and deploy your best software, while leveraging full DevOps and Continuous Delivery.

    Latest stories

    200 Million Certificates in 24 Hours

    Let's Encrypt has been providing free Certificate Authority (CA) for websites in need of them …

    Gatling VS K6

    Gatling and K6 are performance load testing tools, and they are both open source, easy …

    Red Hat Ansible Platform 1 vs 2; What’s the Difference?

    Red Hat Ansible is a platform used by enterprises to manage, unify and execute infrastructure …

    Domino Data Labs Raised $100 Million in the Latest Funding Round

    Culled from the news released by Domino Data labs on funding and the company's progress …

    New Release: The Microsoft Azure Purview Is Now Available on General Availability

    News report detailing the announcement of the release of Azure purview on GA

    Google Introduces Online Training Program to Improve Cloud Skills

    Google addresses existing cloud personnel deficiency with training programs.