Operators within Kubernetes are useful tools, designed to extend the container orchestration platform with additional resources. More directly, an Operator, sometimes referred to as custom controllers, is a method of packaging, deploying, and managing a Kubernetes application.
As useful as Operators are, they have had one limitation: originally they all had to be written in the Go programming language. Thanks to the Operator SDK, you do not need to develop your Operators in Go. The Operator SDK has options for Ansible and Helm that may be better suited for the way you or your team work. But, it can still be limiting for dev teams trying to build an operator if they don’t happen to be skilled in Helm or Ansible.
“If someone who knows how to use Eclipse Che wants to write an Operator,” explained Red Hat engineer Jiri Kremser, “then the abstract operator is a great place to start, as it leverages the JVM stack.”
Kremser, along with his colleague Mike McCune, are working towards a solution for this limitation. Golang operators compile to binary code, but Kremser has created an abstract-operator, which has the advantage of being based on the Java Virtual Machine (JVM), and can enable a wide range of language options for developers. Such a tool would open up operators to a lot more developers.
“Essentially, you could even write an Operator in Bash,” McCune explained. “We are abstracting away the communications layer from the Operator to Kubernetes.”
Kremser says that there will be two implementations of this polyglot tooling: the abstract-operator that the upstream community can develop and expand, and a downstream Spark-operator that is a concrete instance of an operator for managing Apache Spark clusters. The spark-operator, which took a year and a half to develop, is ready now.
For now, Kremser and McCune are pleased to see the interest generated in the upstream Operator toolset. Opening Kubernetes to more coders is a positive move in a world where containers and their orchestration are such a big driver.