How we wrote Tarantool Kubernetes Operator

This page summarizes the projects mentioned and recommended in the original post on dev.to

Our great sponsors
  • InfluxDB - Access the most powerful time series database as a service
  • SonarLint - Clean code begins in your IDE with SonarLint
  • SaaSHub - Software Alternatives and Reviews
  • go-tarantool

    Tarantool 1.10+ client for Go language

    The Tarantool ecosystem is constantly growing. Today it already has a lot of connectors for popular programming languages (Golang, Python, Java, etc.), extension modules for building applications with blocks (vshard, queue, etc.), and frameworks that speed up the development process (Cartridge and Luatest).

  • tarantool-python

    Python client library for Tarantool

    The Tarantool ecosystem is constantly growing. Today it already has a lot of connectors for popular programming languages (Golang, Python, Java, etc.), extension modules for building applications with blocks (vshard, queue, etc.), and frameworks that speed up the development process (Cartridge and Luatest).

  • InfluxDB

    Access the most powerful time series database as a service. Ingest, store, & analyze all types of time series data in a fully-managed, purpose-built database. Keep data forever with low-cost storage and superior data compression.

  • tarantool-java

    A Java client for Tarantool

    The Tarantool ecosystem is constantly growing. Today it already has a lot of connectors for popular programming languages (Golang, Python, Java, etc.), extension modules for building applications with blocks (vshard, queue, etc.), and frameworks that speed up the development process (Cartridge and Luatest).

  • vshard

    The new generation of sharding based on virtual buckets

    The Tarantool ecosystem is constantly growing. Today it already has a lot of connectors for popular programming languages (Golang, Python, Java, etc.), extension modules for building applications with blocks (vshard, queue, etc.), and frameworks that speed up the development process (Cartridge and Luatest).

  • queue

    Create task queues, add and take jobs, monitor failed tasks

    The Tarantool ecosystem is constantly growing. Today it already has a lot of connectors for popular programming languages (Golang, Python, Java, etc.), extension modules for building applications with blocks (vshard, queue, etc.), and frameworks that speed up the development process (Cartridge and Luatest).

  • cartridge

    Out-of-the-box cluster manager for Tarantool with a modern web UI (by tarantool)

    The Tarantool ecosystem is constantly growing. Today it already has a lot of connectors for popular programming languages (Golang, Python, Java, etc.), extension modules for building applications with blocks (vshard, queue, etc.), and frameworks that speed up the development process (Cartridge and Luatest).

  • luatest

    Tarantool test framework written in Lua

    The Tarantool ecosystem is constantly growing. Today it already has a lot of connectors for popular programming languages (Golang, Python, Java, etc.), extension modules for building applications with blocks (vshard, queue, etc.), and frameworks that speed up the development process (Cartridge and Luatest).

  • SonarLint

    Clean code begins in your IDE with SonarLint. Up your coding game and discover issues early. SonarLint is a free plugin that helps you find & fix bugs and security issues from the moment you start writing code. Install from your favorite IDE marketplace today.

  • tarantool-operator

    Tarantool Operator manages Tarantool Cartridge clusters atop Kubernetes

    Development of the Enterprise version of the operator started with reevaluating its Community version where three CRDs were used to describe a cluster:

  • operator-sdk

    SDK for building Kubernetes applications. Provides high level APIs, useful abstractions, and project scaffolding.

    • You can download Tarantool on the official website • Get help in our Telegram chat • Read more about Operator SDK here • Creating fake Kubernetes topology • The testify library we used for unit tests • E2E framework

  • gomock

    GoMock is a mocking framework for the Go programming language. (by golang)

    As every software, the operator needs to be tested. In our case, we use two types of tests: Unit and E2E. For testing, usually mock code generation is used (for example, via golang/mock). We didn't like this option, so we decided to use Testify's mock module that allows to mock required function interfaces using the reflection API—the interfaces used to configure Tarantool.

  • Testify

    A toolkit with common assertions and mocks that plays nicely with the standard library

    • You can download Tarantool on the official website • Get help in our Telegram chat • Read more about Operator SDK here • Creating fake Kubernetes topology • The testify library we used for unit tests • E2E framework

  • controller-runtime

    Repo for the controller-runtime subproject of kubebuilder (sig-apimachinery)

    • You can download Tarantool on the official website • Get help in our Telegram chat • Read more about Operator SDK here • Creating fake Kubernetes topology • The testify library we used for unit tests • E2E framework

  • e2e-framework

    A Go framework for end-to-end testing of components running in Kubernetes clusters.

    As for E2E tests, we used the E2E framework for their implementation. It allowed us to fully check the operator's Helm chart and test it in different Kubernetes versions with KinD. Due to the specifics of tests in Kubernetes, we have to wait until different pods are created. Therefore, the duration of all tests grows very fast. E2E framework helped us solve this problem since it supports parallel start of test cases. It let us shorten the time of tests from 30 to 8 minutes.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts