Installing a database is only the first job. Someone must also change its configuration, replace failed instances, upgrade it and recover its data. A Kubernetes operator automates some of that work using software that repeatedly checks the application and takes action. You describe the application through a custom Kubernetes resource; the operator turns that description into running components.

A Helm chart packages the resources needed to install software. An operator keeps managing software after installation. A chart can install an operator, so Helm versus an operator is often a question of which jobs you need automated, not a choice between two competing installers.

For example, CloudNativePG manages PostgreSQL databases, Strimzi manages Apache Kafka, cert-manager manages certificates, and External Secrets brings credentials from external stores into Kubernetes. Choose an operator for the particular application you need to manage, then check its upgrade and recovery behavior. There is no useful single ranking across such different jobs.

What to verify

  1. Identify the actual project, publisher, supported Kubernetes/application versions and release policy.
  2. Read how the operator handles upgrades, failed reconciliation and manual resource changes.
  3. Determine which custom resources and Secrets it owns, and the cluster-wide permissions it needs.
  4. Test backup and restore into a separate environment, including loss of the operator's original cluster.
  5. Document finalizers, uninstall behavior and the procedure for retaining or exporting data.

Start with a real operating requirement

A database operator is useful when its lifecycle automation matches the team's availability and recovery needs. For a small disposable application, a simpler deployment may be easier to understand. Automation is valuable only when its failure behavior is also supportable.

Read the historical directory carefully

The restored operator table preserves its original identities and provenance. Historical Alpha, Beta or Production labels are not current maintenance guarantees. An archived operator repository does not imply that its underlying application is retired. CoreOS etcd-operator and Vault Operator, for example, need separate treatment from etcd and Vault themselves.

The historical Velero row contains an unrelated Prometheus repository command in its description. Treat that cell as damaged source data, not an installation instruction. Velero is a backup and restore tool for Kubernetes resources and persistent volumes; consult its version-specific documentation.

Current evaluation candidates

CloudNativePG, Strimzi, cert-manager, External Secrets and KubeRay illustrate different operator jobs; they should not share one universal score. Compare them within their domain using version-specific documentation. A recent commit is a useful review signal, not evidence that an installation or restore has been tested by Kubedex.

This page provides the current selection framework around the recovered directory. See database migration planning for the data boundary and secret delivery choices for controller trust.

The original record

Historical Kubedex content

Original publication: 2018-12-01T06:10:13+00:00. Preserved for context. Commands, versions, prices and results below reflect the original research.

Have you ever been asked to provision a database, or other piece of software, for which you don’t have an expert level of knowledge? I believe this happens all of the time. What you do in response is usually one of the following.

  • Hope there’s a cloud service you can use
  • Read all of the docs and build competence through failure
  • Try to hire somebody with the skills
  • Purchase a support contract

When there’s no cloud service you’re usually forced to learn. This is expensive in terms of time and risk. I’ve had to do this in the past with Cassandra, Kafka, Couchbase, RabbitMQ, Hadoop, Solr, actually the list is almost endless. With each of these services we got to a point where we were proficient, but by no means expert. This was a proficiency in terms of housekeeping tasks, scaling, backups and fixing any issues that arose.

What if you could install something like Cassandra on your Kubernetes cluster and not have to worry about becoming an expert? Kubernetes Operators are designed to encapsulate all of the domain specific expertise within a controller. There could be a utopian future where all services are installed with a one line Helm command and then totally manage themselves.

The more likely scenario is that you’ll need to become an expert in Linux, Kubernetes, Golang, an Operator SDK and then the service itself. Certainly this is true for the Operator pioneers today but I hold a glimmer of hope for that utopian future.

Imagine that the human race has been wiped out by some kind of zombie virus and yet Kafka is still running on a solar powered Raspberry Pi Kubernetes cluster automatically balancing partitions.

This Operator stuff also begs the question: should I hire more support staff, or should I just hire a few SRE’s who know how to write and troubleshoot operators? I suspect the latter will become more cost effective over time.

In this blog we’re going to dig a bit deeper into the history, context and use cases for Operators so you get a flavor of their full power. Then we’ll have a look at the 120+ Operators currently available. Finally, we’ll compare ways to create Operators by looking at kubebuilder vs operator sdk vs metacontroller.

History, context and use cases for Operators

It was back in 2016 when CoreOs first announced Operators and provided examples for etcd and Prometheus. The Tectonic platform was based on this model and it was apparently working extremely well. It wasn’t long after that when people started to build their own.

You may be thinking what’s the difference between an Operator and a controller in Kubernetes? This Github Issue does a good job of explaining the subtleties.

By the beginning of 2017 we saw more companies moving to this model in order to package up administrative tasks alongside the software being deployed. An interesting article by Giant Swarm discusses how they provision Kubernetes clusters On-Prem using an Operator for KVM.

Operators are extremely valuable for managed service providers looking to standardise and automate application management. Presslabs recently wrote about how they are moving to this model to support WordPress installations. Similarly, Cloudark are doing the same thing for Moodle.

Services which were once a bit of a headache to run on Kubernetes also started to get Operators. Vault in particular was always a pain to run and this is now largely painless since the kind people at Banzai Cloud released their Vault Operator.

We are actually spoilt for choice when it comes to Operators for MySQL for which at least 3 options exist today. In October 2018 the ElasticSearch Operator was released and the comment in the launch blog highlights the power of Operators

I’m afraid we might not see an official operator from Elastic since it would “compete” with their Elastic Cloud Enterprise product.

The ElasticSearch Operator supports multiple clusters. This means if you need another cluster you simply need to duplicate a Yaml file and apply it. A lot of the Operators work this way. Often you’ll just need to update a resource to add a new user, or database, or other kind of object. The Operator pattern will notice the change and update the existing cluster.

Some of the cleverer companies like Couchbase have released their own proprietary Operators to manage their databases on Kubernetes.

It has really only been since the beginning of 2018 that we’ve seen the ecosystem for Operators start to pick up pace.

The other launch in October 2018 was the AWS service Operator. This could be an absolute game changer for anyone running Kubernetes on AWS. Including people using EKS.

If you look at the Github Issues for the AWS service Operator you can see just how amazing this will be. In the future your EKS control plane could come pre-installed with the AWS service operator. You could update a CRD to configure your worker node pools and the AWS service provider would spin up new EC2 instances. Perhaps this explains why there are no managed workers in EKS. If you have the control plane you could use it to configure all of your AWS resources.

In fact, this aligns with what Tim Hockin presented at the cloud native Kubernetes meetup in Warsaw last month. He talked about Kubernetes as an extensible platform that would stay cloud agnostic by moving that logic out into Controllers.

With so much development going on in this space a growing number of frameworks are emerging that we’ll discuss at the end of this blog.

Another interesting model that is emerging from the Operator pattern is GitOps application deployment. In this model you update a manifest in a Git repository and an Operator running on your cluster pulls down the appropriate Helm chart and performs the deployment. Weave Flux and Keel are very popular examples of deployment Operators. This pull based deployment approach creates a useful separation between CI tools that build and test, and the source of truth for what versions run in an environment, which is updated in Git on each successful PR merge. Another benefit is that deployment Operators often encapsulate rollback functionality.

Every Operator available

The credit for most of this list should go to the awesome operators page. Usually I’d just have linked directly but I wanted to add another column for status and add other Operators as I find them. I was interested to see which Operators could potentially be used in production today.

The table on this page is dynamically generated from this Google sheet. If you would like to add an operator or change the status leave a comment on the cell and I’ll update it, or alternatively request access.

Production ready projects have a release version > 1.0 and often declare themselves as such in the readme. Some projects are approaching production readiness but aren’t quite there yet so they are marked as beta. Many projects have self declared their status as ‘alpha’ in the readme so I have marked them as such.

Type Operator Status Description
Autoscaling HPA Operator Beta Horizontal Pod Autoscaler operator for Kubernetes. Annotate, and let HPA operator do the rest.
Autoscaling Cluster Autoscaler Beta Manage Kubernetes cluster-autoscaler deployments
Backup Ark Beta Ark is a utility for managing disaster recovery, this operator manages the backup and restoration of cluster components (pv,pvc,deployments, etc.) to aid in disaster recovery
Backup Kanister Beta Kanister is an extensible framework for application-level data management on Kubernetes
Big Data Airflow Alpha A Kubernetes operator to manage Apache Airflow.
Big Data MXNet Alpha Apache MXNet is a modern open-source deep learning framework used to train, and deploy deep neural networks. This operator manages the tools for ML/MXNet on Kubernetes.
Big Data Spark (GCP) Alpha Kubernetes CRD operator for specifying and running Apache Spark applications idiomatically on Kubernetes.
Big Data Spark (radanalytics.io) Beta ConfigMap-based operator for deploying ephemeral Apache Spark clusters and intelligent applications that spawn their own Spark clusters natively on Kubernetes and OpenShift.
Big Data Tensorflow Beta Tools for ML/Tensorflow on Kubernetes.
Big Data PyTorch Beta PyTorch on Kubernetes
Column Database Cassandra (instaclustr) Alpha Cassandra is a free and open-source distributed wide column store NoSQL database management system designed to handle large amounts of data. This is a Kubernetes operator for Apache Cassandra.
Column Database Cassandra (vgkowski) Alpha Cassandra is a free and open-source distributed wide column store NoSQL database management system designed to handle large amounts of data. This ia a Kubernetes operator for Cassandra cluster automation.
Column Database DynamoDB Alpha Amazon DynamoDB is a proprietary NoSQL database service that supports key-value and document data structures. This is a Kubernetes operator for DynamoDB
Deployment Keel Beta Kubernetes Operator to automate Helm, DaemonSet, StatefulSet & Deployment updates
Deployment Flux Beta The GitOps Kubernetes operator
Deployment Environment Operator Beta Kubernetes Environment Management
Deployment Chart Operator Alpha The chart-operator deploys Helm charts by reconciling against a CNR registry.
Document Database CouchDB Alpha Prototype Kubernetes operator for couchDB
Document Database Mongo (kbst) Alpha MongoDB Operator for Kubernetes
Document Database Mongo (ultimaker) Beta MongoDB Operator for MongoDB Replica Sets and Backups
Document Database MongoDB (Official) Beta MongoDB Enterprise Operator for Kubernetes
Document Database MongoDB (Percona) Beta A Kubernetes operator for Percona Server for MongoDB
Document Database RethinkDB Beta RethinkDB is a free and open-source, distributed document-oriented database. This is a Kubernetes operator to manage RethinkDB instances.
Document Database Couchbase (official) Production This is a paid product from Couchbase
Graph Database ArangoDB Beta ArangoDB Kubernetes Operator. Start ArangoDB on Kubernetes in 5min.
IaaS svcat Beta Service Catalog is a Kubernetes extension API that enables applications running on Kubernetes clusters to connect with service brokers and easily use external managed software offerings. For example, Service Catalog can connect to the Google Cloud Platform (GCP) Service Broker and easily provision GCP services.
IaaS AWS (Giant Swarm) Production Manages Giantnetes Kubernetes clusters running on Amazon Web Services
IaaS CloudFormation Alpha AWS CloudFormation is a service that helps you model and set up your Amazon Web Services resources. Using this operator run and manage CloudFormation stacks and manage AWS resources from Kubernetes.
IaaS KubeVirt Beta Kubernetes Virtualization Operator with API and runtime in order to define and manage virtual machines
IaaS OpenStack Beta SAP OpenStack operator creates various resources in OpenStack
IaaS VPC Peering Beta A Kubernetes Operator to manage the lifecycle of AWS VPC Peering Connections
IaaS AWS Service Operator (official) Alpha AWS Service Operator allows you to create AWS resources using kubectl
IaaS Azure Operator (Giant Swarm) Production Azure operator manages Kubernetes clusters running in Giantnetes on Azure
IaaS GCP Operator (paulczar) Alpha GCP operator for Kubernetes
Other KVM Production Handles Kubernetes clusters running on a Kubernetes cluster with workers and masters in KVMs on bare metal
Java WebLogic Production Oracle Weblogic Server Kubernetes Operator
Java WildFly Alpha Wildfly Operator let's you describe and deploy JEE application on Wildfly server by creating a Custom Resource Definitions in Kubernetes.
KV Database Aerospike Alpha Aerospike is a NoSQL distributed database. This Operator manages Aerospike clusters atop Kubernetes, automating their creation and administration.
KV Database Consul Alpha A Kubernetes operator for consul
KV Database etcd Beta etcd is a distributed key-value (k/v) store. This operator manages etcd k/v database clusters on Kubernetes.
KV Database Infinispan Alpha Infinispan is a distributed in-memory key/value data store. This operator deploys and runs an Infinispan cache cluster.
KV Database Memcached Alpha A Kubernetes operator for memcached
KV Database Redis (spotahome) Alpha Redis Operator creates/configures/manages redis clusters atop Kubernetes
KV Database Redis (jw-s) Beta Redis operator for Kubernetes
KV Database Redis Cluster Alpha A Kubernetes operator for running Redis in Cluster mode
Lucene Database ElasticSearch Beta Elasticsearch is a distributed, RESTful search and analytics engine. This operator manages one or more elastic search clusters on Kubernetes.
Mobile Android SDK Alpha A Kubernetes operator to manage android sdk packages syncronization in a persistent volume
Mobile Unifiedpush Beta UnifiedPush Server is a server that allows sending push notifications to different (mobile) platforms
Monitoring Icinga2 Operator Production Icinga is an open source computer system and network monitoring application. This operator provide alerts for Kubernetes
Monitoring Jaeger (official) Production Jaeger Operator for Kubernetes
Monitoring Logging Operator Alpha Logging operator for Kubernetes based on Fluentd and Fluent-bit
Monitoring FluentD Operator Production Auto-configuration of Fluentd daemon-set based on Kubernetes metadata
Monitoring Prometheus Beta Prometheus, a Cloud Native Computing Foundation project, is a systems and service monitoring system. It collects metrics from configured targets at given intervals, evaluates rule expressions, displays the results, and can trigger alerts if some condition is observed to be true. The Prometheus Operator for Kubernetes provides easy monitoring definitions for Kubernetes services and deployment and management of Prometheus instances.
Monitoring Prometheus Jmx Exporter Alpha This operator using Jmx Exporter enables Java processes running ok Kubernetes Pods to expose metrics collected form mBeans via JMX to Prometheus.
Monitoring InfluxDB (official) Alpha InfluxDB is an open-source time series database. This is the Kubernetes operator for InfluxDB and the TICK stack.
Monitoring Sens8 Beta Kubernetes controller for Sensu checks
Monitoring Alerting Rules Beta Kubernetes Operator for teams to create there own alerting rules as CRDs
Monitoring Grafana Alpha Grafana Operator for Kubernetes
Monitoring Chronologist Beta Continuously annotate Helm releases in Grafana
Monitoring Ingress Monitor Beta Kubenetes Operator to create external monitors for selected Ingresses e.g. with Statuscake
Monitoring M3DB (official) Alpha Distributed TSDB, Aggregator and Query Engine, Prometheus Sidecar, Metrics Platform
Monitoring Dynatrace Beta Kubernetes/Openshift Operator for managing Dynatrace OneAgent deployments
Networking IPAM Operator Alpha An operator to assign IP for Kubernetes Namespace.
Networking External DNS Beta Configure external DNS servers (AWS Route53, Google CloudDNS and others) for Kubernetes Ingresses and Services
Networking Flannel Beta The flannel-operator handles flannel for Kubernetes clusters running on Giantnetes
Other KubeDB Beta KubeDB Operator. Managed a lot of major databases on Kubernetes
Other Habitat Beta A Kubernetes operator for Habitat services
Other MultiCluster-Controller Beta Multicluster-controller is a Go library for building Kubernetes controllers that need to watch resources in multiple clusters
Other Pod Reaper Beta A kubernetes operator that reaps pods that have reached their lifetime
Other Kube Cleanup Operator Beta Kubernetes Operator to automatically delete completed Jobs and their Pods
Other Service Level Operator Beta Manage application's SLI and SLO's easily with the application lifecycle inside a Kubernetes cluster
Other Kube Replay Alpha Seamless integration of goReplay and Kubernetes
Other Feature Branch Janitor Alpha Kubernetes operator used to cleanup feature branch deployments when branch has been deleted
Other Kubechain Beta A simple blockchain implementation on top of kubernetes
Other Delete NS Beta Delete a Kubernetes Namespace thats older than some hours
Other OpenFaaS Beta Operator for OpenFaaS Functions on Kubernetes
Other RSS Operator Beta A Kubernetes Operator for managing and recovering replicated workflows
Other Jenkins Alpha Kubernetes operator for Jenkins CI
Other Jira Alpha A Kubernetes operator to manage JIRA instances.
Other Gitea Beta An Operator that installs Gitea.
Proxy Envoy Beta Envoy is a Microservice Abstraction Layer (also known as an API Gateway, API Middleware or in some cases Service Mesh)Run and manage Envoy on Kubernetes simply and securely.
Proxy Kong Alpha Manages Kong clusters on Kubernetes.
Queue Kafka (krallistic) Alpha A Kafka Operator for Kubernetes
Queue Kafka (strimzi) Beta Operator for running Kafka and Kafka Connect on Kubernetes and OpenShift
Queue NATS Beta NATS is an open-source, high-performance, lightweight and secure cloud native messaging system. This operator manages NATS clusters atop Kubernetes, automating their creation and administration.
Queue RocketMQ Alpha Create, operate and scale self-healing Rocketmq clusters on Kubernetes.
Relational Database MySQL (grtl) Alpha MySQL is an Open Source SQL database management system. This creates a Kubernetes Custom Resource for MySQL.
Relational Database MySQL (Oracle) Alpha MySQL is an Open Source SQL database management system. This operator creates, operates, and scales self-healing MySQL clusters in Kubernetes
Relational Database MySQL (Presslabs) Beta MySQL is an Open Source SQL database management system. This operator manages all the necessary resources for deploying and managing a highly available MySQL cluster. It provides efortless backups, while keeping the cluster highly-available.
Relational Database MySQL Operator (Banzai Cloud) Alpha Create, operate and scale self-healing MySQL clusters in Kubernetes.
Relational Database PostgreSQL (Crunchy Data) Production PostgreSQL Operator Creates/Configures/Manages PostgreSQL Clusters on Kubernetes
Relational Database PostgreSQL (Zalando) Production Create and manage PostgreSQL HA clusters on Kubernetes using Patroni
Relational Database RDS Alpha Operator to control RDS DBs in AWS
Relational Database TiDB (aliyx) Alpha Tidb-operator creates/configures/manages tidb clusters atop Kubernetes
Relational Database TiDB (Pingcap) Beta TiDB operator creates and manages TiDB clusters running in Kubernetes
Relational Database Vitess Beta Vitess Operator provides automation that simplifies the administration of Vitess clusters on Kubernetes
Relational Database Percona XtraDB Cluster Alpha A Kubernetes operator for Percona XtraDB Cluster based on the Operator SDK
Security cert-manager Beta Automatically provision and manage TLS certificates in Kubernetes
Security rbacsync Beta Automatically sync groups in Googkle Cloud into Kubernetes RBAC
Security RBAC Manager Beta This operator simplifies the management of RBAC Role Bindings in Kubernetes.
Security Vault (CoreOS) Beta *This is now unmaintained*. See https://github.com/coreos/vault-operator/issues/332
Security Vault (Banzai Cloud) Beta Vault secures, stores, and tightly controls access to tokens, passwords, certificates, API keys, and other secrets. This operator offers a feature rich HA Vault operator with TLS, external API based re/configuration, several/automatic unseal options and more.
Security Gatekeeper Beta Kubernetes Operator to manage Dynamic Admission Controllers using Open Policy Agent
Security Network Policy Beta Auto create common network policy in all namespaces
Security Regsecret Beta Kubernetes operator to automate imagePullSecrets creation
Security Replicator Alpha Kubernetes operator that copy secrets in all namespaces
Security Random Secret Operator Beta Creates Secrets containing random data
Security lessor Alpha A Kubernetes Operator for managing multi-tenant workloads
Security Cert Operator Beta cert-operator creates/manages certificates for Kubernetes clusters running on Giantnetes
Security SSO Operator Production Single Sign-On Kubernetes operator for Dex identity provider
Security Dex Alpha A Kubernetes operator for Dex
Security Falco Alpha Kubernetes operator for Sysdig Falco that allows developers to manage rules for detecting intruders and backdoors
Security AWS Secret Operator Alpha A Kubernetes operator that automatically creates and updates Kubernetes secrets according to what are stored in AWS Secrets Manager
Security Externalconfig Operator Alpha An operator to fetch configuration data from cloud services and inject it in Kubernetes
Security Certmerge Alpha a Kubernetes Operator that can merge many TLS secrets inside one Opaque secrets
Service Discovery ZooKeeper (Nuance Mobility) Alpha ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. This is an operator for ZooKeeper 3.5.x
Service Discovery ZooKeeper (pravega) Alpha This operator runs a Zookeeper 3.5 cluster, and uses Zookeeper dynamic reconfiguration to handle node membership.
Service Mesh Flagger Beta Istio progressive delivery Kubernetes operator
Service Mesh Istio Operator Beta Istio-operator is a Kubernetes operator to deploy and manage Istio resources for a Kubernetes cluster.
Storage PVC Beta This operator helps to use Kubernetes Persistent Volumes easier on cloud providers by dynamically creating the required accounts, classes and more.
Storage Quobyte Alpha Quobyte’s next-generation file system unifies file, block and object storage for enterprise and scientific applications.
Storage Rook Alpha File, Block, and Object Storage Services for your Cloud-Native Environment
Storage Gluster Alpha A Kubernetes/OpenShift operator to manage Gluster clusters
Storage Minio Alpha Minio Operator for k8s
Storage Pravega Alpha Pravega Kubernetes Operator
Testing Netperf Alpha This is a very simple operator that can be used to test network performance between 2 pods using the netperf tool. It is also a good operator for learning puposes, as the code base is pretty small and it's described in detail in this blog post.
Testing Kaos Alpha Kinda Chaos Monkey for Kubernetes

Out of almost 120 projects only 9 are production ready. It is a bit disappointing to see that even the original two operators (etcd and Prometheus) still aren’t > version 1. It is however promising to see a couple of Postgres Operators available today, as well as Jaeger. It’s still early days for Operators so I’m hopeful.

There are a few that I think are close to production ready. ArrangoDB is production ready on GKE, EKS and PKS but not on anything else. Etcd and Prometheus look stable but lack the full set of feature coverage.

Many people are using cert-manager even though it’s in beta. I suspect a few people will be using the vault Operators too. It’s worth evaluating each of these projects individually for yourself.

Creating an Operator

You may be wondering how you would create your own Operator. The best place to start is the official Kubernetes sample controller and especially the /docs directory.

For those looking for a way to speed up development there are a few options.

kubebuilder operator sdk metacontroller
Sponsor Google Redhat Google
Launched August 2018 May 2018 August 2017
Language Go Go Any
Docs https://book.kubebuilder.io/ https://github.com/operator-framework https://metacontroller.app/

A very good blog comparing all three options was written by Adrien Trouillaud and has been kept updated since.

KubeBuilder has some really awesome documentation and is backed by a Kubernetes SIG so if you do decide to pick a framework then this may be the best choice long term.

Summary and additional reading

The potential awesomeness of Kubernetes Operators should be clear. We have a handful of real world examples that could be considered production ready today. However, the vast majority of Operators that exist need a lot of work. You’ll need to up-skill your team in order to create and iterate high quality Operators but the pay-off should in theory result in far less manual system administration activities.

The recent release of KubeBuilder and work ongoing in the sig-api-machinery group to create a standard platform SDK should help a lot.

If you’d like to continue reading here’s a sheet with some links and descriptions.

The post Kubernetes Operators appeared first on kubedex.com.

Historical workbook values; blanks mean unknown, not No. Prices, versions, maturity labels and feature claims are not current recommendations. The 151 original rows include Consul and Consul Operator sharing an upstream URL; they are retained as source rows, not counted as distinct projects. The conflicting CouchDB description is marked unknown.

Kubernetes Operators / Operators (historical)

Historical snapshot

Recovered comparison data. Versions, prices and availability describe the original research, not a current benchmark. Blank or damaged source values are marked unknown.

Choose columns
Visible columns
Kubernetes Operators / Operators (historical)
CategoryOperatorURLStatusDescription
AutoscalingOsirishttps://github.com/deislabs/osirisAlphaAllowing idling workloads to automatically scale-to-zero and allowing scaled-to-zero workloads to be automatically re-activated on-demand by inbound requests.
Big DataAirflowhttps://github.com/GoogleCloudPlatform/airflow-operatorAlphaA Kubernetes operator to manage Apache Airflow.
Big DataMXNethttps://github.com/deepinsight/mxnet-operatorAlphaApache MXNet is a modern open-source deep learning framework used to train, and deploy deep neural networks. This operator manages the tools for ML/MXNet on Kubernetes.
Big DataSpark (GCP)https://github.com/GoogleCloudPlatform/spark-on-k8s-operatorAlphaKubernetes CRD operator for specifying and running Apache Spark applications idiomatically on Kubernetes.
CleanupFeature Branch Janitorhttps://github.com/jw-s/feature-branch-janitorAlphaKubernetes operator used to cleanup feature branch deployments when branch has been deleted
Column DatabaseCassandra (instaclustr)https://github.com/instaclustr/cassandra-operatorAlphaCassandra is a free and open-source distributed wide column store NoSQL database management system designed to handle large amounts of data. This is a Kubernetes operator for Apache Cassandra.
Column DatabaseCassandra (vgkowski)https://github.com/vgkowski/cassandra-operatorAlphaCassandra is a free and open-source distributed wide column store NoSQL database management system designed to handle large amounts of data. This ia a Kubernetes operator for Cassandra cluster automation.
Column DatabaseDynamoDBhttps://github.com/microdc/k8s-dynamodb-operatorAlphaAmazon DynamoDB is a proprietary NoSQL database service that supports key-value and document data structures. This is a Kubernetes operator for DynamoDB
DeploymentChart Operatorhttps://github.com/giantswarm/chart-operatorAlphaThe chart-operator deploys Helm charts by reconciling against a CNR registry.
DeploymentHelm Controllerhttps://github.com/rancher/helm-controllerAlphaWatches HelmChart CRD's in a namespace and manages chart installation using Kubernetes jobs
DeploymentWavehttps://github.com/pusher/waveAlphaKubernetes configuration tracking controller
DeploymentFaroshttps://github.com/pusher/farosAlphaFaros is a CRD based GitOps controller
DeploymentNamespace Configurationhttps://github.com/redhat-cop/namespace-configuration-operatorAlphaThe namespace configuration operator helps keeping a namespace's configuration aligned with one of more policies specified as a CRs.
DeploymentGitlab Operatorhttps://docs.gitlab.com/charts/installation/operator.htmlAlphaGitLab Operator
DeploymentJenkins Operatorhttps://github.com/jenkinsci/kubernetes-operatorAlphaJenkins operator is a Kubernetes native operator which fully manages Jenkins on Kubernetes. It was built with immutability and declarative configuration as code in mind.
Document DatabaseCouchDBhttps://github.com/nicolai86/couchdb-operatorAlphaUnknown (damaged historical cell)
Document DatabaseMongo (kbst)https://github.com/kbst/mongodbAlphaMongoDB Operator for Kubernetes
GamesMinecraft Operatorhttps://github.com/stgarf/minecraft-operator-goAlphaA Minecraft Server Operator
IaaSCloudFormationhttps://github.com/linki/cloudformation-operatorAlphaAWS CloudFormation is a service that helps you model and set up your Amazon Web Services resources. Using this operator run and manage CloudFormation stacks and manage AWS resources from Kubernetes.
IaaSAWS Service Operator (official)https://github.com/awslabs/aws-service-operatorAlphaAWS Service Operator allows you to create AWS resources using kubectl
IaaSGCP Operator (paulczar)https://github.com/paulczar/gcp-cloud-compute-operatorAlphaGCP operator for Kubernetes
JavaWildFlyhttps://github.com/banzaicloud/wildfly-operatorAlphaWildfly Operator let's you describe and deploy JEE application on Wildfly server by creating a Custom Resource Definitions in Kubernetes.
KV DatabaseAerospikehttps://github.com/travelaudience/aerospike-operatorAlphaAerospike is a NoSQL distributed database. This Operator manages Aerospike clusters atop Kubernetes, automating their creation and administration.
KV DatabaseConsulhttps://github.com/python/consul-operatorAlphaA Kubernetes operator for consul
KV DatabaseInfinispanhttps://github.com/banzaicloud/infinispan-operatorAlphaInfinispan is a distributed in-memory key/value data store. This operator deploys and runs an Infinispan cache cluster.
KV DatabaseMemcachedhttps://github.com/ianlewis/memcached-operatorAlphaA Kubernetes operator for memcached
KV DatabaseRedis (spotahome)https://github.com/spotahome/redis-operatorAlphaRedis Operator creates/configures/manages redis clusters atop Kubernetes
KV DatabaseRedis Clusterhttps://github.com/AmadeusITGroup/Redis-OperatorAlphaA Kubernetes operator for running Redis in Cluster mode
Lucene DatabaseElasticSearch (Elastic)https://github.com/elastic/cloud-on-k8sAlphaElastic Cloud on Kubernetes automates the deployment, provisioning, management, and orchestration of Elasticsearch and Kibana
MobileAndroid SDKhttps://github.com/aerogear/android-sdk-operatorAlphaA Kubernetes operator to manage android sdk packages syncronization in a persistent volume
MonitoringLogging Operatorhttps://github.com/banzaicloud/logging-operatorAlphaLogging operator for Kubernetes based on Fluentd and Fluent-bit
MonitoringPrometheus Jmx Exporterhttps://github.com/banzaicloud/prometheus-jmx-exporter-operatorAlphaThis operator using Jmx Exporter enables Java processes running ok Kubernetes Pods to expose metrics collected form mBeans via JMX to Prometheus.
MonitoringInfluxDB (official)https://github.com/influxdata/influxdb-operatorAlphaInfluxDB is an open-source time series database. This is the Kubernetes operator for InfluxDB and the TICK stack.
MonitoringGrafanahttps://github.com/jelmersnoeck/grafana-operatorAlphaGrafana Operator for Kubernetes
MonitoringM3DB (official)https://github.com/m3db/m3db-operatorAlphaDistributed TSDB, Aggregator and Query Engine, Prometheus Sidecar, Metrics Platform
NetworkingIPAM Operatorhttps://github.com/inwinstack/ipam-operatorAlphaAn operator to assign IP for Kubernetes Namespace.
OtherKube Replayhttps://github.com/lwolf/kubereplayAlphaSeamless integration of goReplay and Kubernetes
OtherJenkinshttps://github.com/samsung-cnct/jenkins-operatorAlphaKubernetes operator for Jenkins CI
OtherJirahttps://github.com/jmckind/jira-operatorAlphaA Kubernetes operator to manage JIRA instances.
OtherMailgunhttps://github.com/whyseco/mailgun-operatorAlphaManage mailgun configuration on Kubernetes
ProxyKonghttps://github.com/upmc-enterprises/kong-operatorAlphaManages Kong clusters on Kubernetes.
QueueKafka (krallistic)https://github.com/krallistic/kafka-operatorAlphaA Kafka Operator for Kubernetes
QueueRocketMQhttps://github.com/huanwei/rocketmq-operatorAlphaCreate, operate and scale self-healing Rocketmq clusters on Kubernetes.
Relational DatabaseMySQL (grtl)https://github.com/grtl/mysql-operatorAlphaMySQL is an Open Source SQL database management system. This creates a Kubernetes Custom Resource for MySQL.
Relational DatabaseMySQL (Oracle)https://github.com/oracle/mysql-operatorAlphaMySQL is an Open Source SQL database management system. This operator creates, operates, and scales self-healing MySQL clusters in Kubernetes
Relational DatabaseMySQL Operator (Banzai Cloud)https://github.com/banzaicloud/mysql-operatorAlphaCreate, operate and scale self-healing MySQL clusters in Kubernetes.
Relational DatabaseRDShttps://github.com/MYOB-Technology/ops-kube-db-operatorAlphaOperator to control RDS DBs in AWS
Relational DatabaseTiDB (aliyx)https://github.com/aliyx/tidb-operatorAlphaTidb-operator creates/configures/manages tidb clusters atop Kubernetes
Relational DatabasePercona XtraDB Clusterhttps://github.com/Percona-Lab/percona-xtradb-cluster-operatorAlphaA Kubernetes operator for Percona XtraDB Cluster based on the Operator SDK
SecurityKMS Vault Operatorhttps://github.com/patoarvizu/kms-vault-operatorAlphaManage KMS-encrypted strings to inject them as Vault static secrets
SecurityReplicatorhttps://github.com/rodesousa/replicatorAlphaKubernetes operator that copy secrets in all namespaces
SecurityDexhttps://github.com/kubic-project/dex-operatorAlphaA Kubernetes operator for Dex
SecurityFalcohttps://github.com/mumoshu/falco-operatorAlphaKubernetes operator for Sysdig Falco that allows developers to manage rules for detecting intruders and backdoors
SecurityAWS Secret Operatorhttps://github.com/mumoshu/aws-secret-operatorAlphaA Kubernetes operator that automatically creates and updates Kubernetes secrets according to what are stored in AWS Secrets Manager
SecurityExternalconfig Operatorhttps://github.com/ContainerSolutions/externalconfig-operatorAlphaAn operator to fetch configuration data from cloud services and inject it in Kubernetes
SecurityCertmergehttps://github.com/prune998/certmerge-operatorAlphaa Kubernetes Operator that can merge many TLS secrets inside one Opaque secrets
Service DiscoveryZooKeeper (Nuance Mobility)https://github.com/Nuance-Mobility/zookeeper-operatorAlphaZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. This is an operator for ZooKeeper 3.5.x
Service DiscoveryZooKeeper (pravega)https://github.com/pravega/zookeeper-operatorAlphaThis operator runs a Zookeeper 3.5 cluster, and uses Zookeeper dynamic reconfiguration to handle node membership.
Service DiscoveryConsul Operatorhttps://github.com/python/consul-operatorAlphaA kubernetes operator for consul
StorageQuobytehttps://github.com/quobyte/kubernetes/tree/master/operatorAlphaQuobyte’s next-generation file system unifies file, block and object storage for enterprise and scientific applications.
StorageRookhttps://github.com/rook/rook/tree/master/cluster/examples/kubernetesAlphaFile, Block, and Object Storage Services for your Cloud-Native Environment
StorageGlusterhttps://github.com/gluster/anthillAlphaA Kubernetes/OpenShift operator to manage Gluster clusters
StorageMiniohttps://github.com/minio/minio-operatorAlphaMinio Operator for k8s
StoragePravegahttps://github.com/pravega/pravega-operatorAlphaPravega Kubernetes Operator
TestingNetperfhttps://github.com/piontec/netperf-operatorAlphaThis is a very simple operator that can be used to test network performance between 2 pods using the netperf tool. It is also a good operator for learning puposes, as the code base is pretty small and it's described in detail in this blog post.
TestingKaoshttps://github.com/arnaudmz/kaosAlphaKinda Chaos Monkey for Kubernetes
Securitylessorhttps://github.com/lessor/lessorArchivedA Kubernetes Operator for managing multi-tenant workloads
AutoscalingHPA Operatorhttps://github.com/banzaicloud/hpa-operatorBetaHorizontal Pod Autoscaler operator for Kubernetes. Annotate, and let HPA operator do the rest.
AutoscalingCluster Autoscalerhttps://github.com/openshift/cluster-autoscaler-operatorBetaManage Kubernetes cluster-autoscaler deployments
AutoscalingValencehttps://github.com/valencenet/valence-manifestsBetaRightsize and Autoscale Containers Intelligently for Performance and Cost Management in Kubernetes: A SLO Autoscaler
AutoscalingDrainohttps://github.com/planetlabs/drainoBetaAutomatically cordon and drain Kubernetes nodes based on node conditions
AutoscalingDeschedulerhttps://github.com/kubernetes-incubator/deschedulerBetaDescheduler, based on its policy, finds pods that can be moved and evicts them
AutoscalingSpot Reschedulerhttps://github.com/pusher/k8s-spot-reschedulerBetaHandles SPOT instance scheduling
BackupKanisterhttps://github.com/kanisterio/kanisterBetaKanister is an extensible framework for application-level data management on Kubernetes
Big DataSpark (radanalytics.io)https://github.com/radanalyticsio/spark-operatorBetaConfigMap-based operator for deploying ephemeral Apache Spark clusters and intelligent applications that spawn their own Spark clusters natively on Kubernetes and OpenShift.
Big DataTensorflowhttps://github.com/kubeflow/tf-operatorBetaTools for ML/Tensorflow on Kubernetes.
Big DataPyTorchhttps://github.com/kubeflow/pytorch-operatorBetaPyTorch on Kubernetes
CleanupKuredhttps://github.com/weaveworks/kuredBetaNode reboot daemon
CleanupPod Reaperhttps://github.com/ptagr/pod-reaperBetaA kubernetes operator that reaps pods that have reached their lifetime
CleanupKube Cleanup Operatorhttps://github.com/lwolf/kube-cleanup-operatorBetaKubernetes Operator to automatically delete completed Jobs and their Pods
CleanupDelete NShttps://github.com/agill17/delete-ns-operatorBetaDelete a Kubernetes Namespace thats older than some hours
CleanupJamadarhttps://github.com/stakater/JamadarBetaA kubernetes controller which cleans up cluster left-overs
DeploymentKeelhttps://github.com/keel-hq/keelBetaKubernetes Operator to automate Helm, DaemonSet, StatefulSet & Deployment updates
DeploymentFluxhttps://github.com/weaveworks/fluxBetaThe GitOps Kubernetes operator
DeploymentEnvironment Operatorhttps://github.com/pearsontechnology/environment-operatorBetaKubernetes Environment Management
DeploymentEunomiahttps://github.com/KohlsTechnology/eunomiaBetaGitOps Operator for Kubernetes
DeploymentQuackhttps://github.com/pusher/quackBetaIn-Cluster templating for Kubernetes manifests
DeploymentKube Applierhttps://github.com/box/kube-applierBetaenables automated deployment and declarative configuration for your Kubernetes cluster.
Document DatabaseMongo (ultimaker)https://github.com/Ultimaker/k8s-mongo-operatorBetaMongoDB Operator for MongoDB Replica Sets and Backups
Document DatabaseMongoDB (Official)https://github.com/mongodb/mongodb-enterprise-kubernetesBetaMongoDB Enterprise Operator for Kubernetes
Document DatabaseMongoDB (Percona)https://github.com/Percona-Lab/percona-server-mongodb-operatorBetaA Kubernetes operator for Percona Server for MongoDB
Document DatabaseRethinkDBhttps://github.com/jmckind/rethinkdb-operatorBetaRethinkDB is a free and open-source, distributed document-oriented database. This is a Kubernetes operator to manage RethinkDB instances.
Graph DatabaseArangoDBhttps://github.com/arangodb/kube-arangodbBetaArangoDB Kubernetes Operator. Start ArangoDB on Kubernetes in 5min.
IaaSsvcathttps://cloud.google.com/kubernetes-engine/docs/how-to/add-on/service-catalog/install-service-catalogBetaService Catalog is a Kubernetes extension API that enables applications running on Kubernetes clusters to connect with service brokers and easily use external managed software offerings. For example, Service Catalog can connect to the Google Cloud Platform (GCP) Service Broker and easily provision GCP services.
IaaSKubeVirthttps://github.com/kubevirt/kubevirtBetaKubernetes Virtualization Operator with API and runtime in order to define and manage virtual machines
IaaSOpenStackhttps://github.com/sapcc/kubernetes-operatorsBetaSAP OpenStack operator creates various resources in OpenStack
IaaSVPC Peeringhttps://github.com/pickledrick/vpc-peering-operatorBetaA Kubernetes Operator to manage the lifecycle of AWS VPC Peering Connections
KV Databaseetcdhttps://github.com/coreos/etcd-operatorBetaetcd is a distributed key-value (k/v) store. This operator manages etcd k/v database clusters on Kubernetes.
KV DatabaseRedis (jw-s)https://github.com/jw-s/redis-operatorBetaRedis operator for Kubernetes
Lucene DatabaseElasticSearch (UPMC)https://github.com/upmc-enterprises/elasticsearch-operatorBetaElasticsearch is a distributed, RESTful search and analytics engine. This operator manages one or more elastic search clusters on Kubernetes.
MobileUnifiedpushhttps://github.com/aerogear/ups-config-operatorBetaUnifiedPush Server is a server that allows sending push notifications to different (mobile) platforms
MonitoringPrometheushttps://github.com/coreos/prometheus-operatorBetaPrometheus, a Cloud Native Computing Foundation project, is a systems and service monitoring system. It collects metrics from configured targets at given intervals, evaluates rule expressions, displays the results, and can trigger alerts if some condition is observed to be true. The Prometheus Operator for Kubernetes provides easy monitoring definitions for Kubernetes services and deployment and management of Prometheus instances.
MonitoringSens8https://github.com/hootsuite/sens8BetaKubernetes controller for Sensu checks
MonitoringAlerting Ruleshttps://github.com/MYOB-Technology/ops-kube-alerting-rules-operatorBetaKubernetes Operator for teams to create there own alerting rules as CRDs
MonitoringChronologisthttps://github.com/hypnoglow/chronologistBetaContinuously annotate Helm releases in Grafana
MonitoringIngress Monitorhttps://github.com/jelmersnoeck/ingress-monitorBetaKubenetes Operator to create external monitors for selected Ingresses e.g. with Statuscake
MonitoringDynatracehttps://github.com/Dynatrace/dynatrace-oneagent-operatorBetaKubernetes/Openshift Operator for managing Dynatrace OneAgent deployments
NetworkingExternal DNShttps://github.com/kubernetes-incubator/external-dnsBetaConfigure external DNS servers (AWS Route53, Google CloudDNS and others) for Kubernetes Ingresses and Services
NetworkingFlannelhttps://github.com/giantswarm/flannel-operatorBetaThe flannel-operator handles flannel for Kubernetes clusters running on Giantnetes
OtherKubeDBhttps://github.com/kubedb/operatorBetaKubeDB Operator. Managed a lot of major databases on Kubernetes
OtherHabitathttps://github.com/habitat-sh/habitat-operatorBetaA Kubernetes operator for Habitat services
OtherMultiCluster-Controllerhttps://github.com/admiraltyio/multicluster-controllerBetaMulticluster-controller is a Go library for building Kubernetes controllers that need to watch resources in multiple clusters
OtherService Level Operatorhttps://github.com/spotahome/service-level-operatorBetaManage application's SLI and SLO's easily with the application lifecycle inside a Kubernetes cluster
OtherKubechainhttps://github.com/nimrodshn/kubechainBetaA simple blockchain implementation on top of kubernetes
OtherOpenFaaShttps://github.com/openfaas-incubator/openfaas-operatorBetaOperator for OpenFaaS Functions on Kubernetes
OtherRSS Operatorhttps://github.com/beekhof/rss-operatorBetaA Kubernetes Operator for managing and recovering replicated workflows
OtherGiteahttps://github.com/integr8ly/gitea-operatorBetaAn Operator that installs Gitea.
ProxyEnvoyhttps://github.com/solo-io/envoy-operatorBetaEnvoy is a Microservice Abstraction Layer (also known as an API Gateway, API Middleware or in some cases Service Mesh)Run and manage Envoy on Kubernetes simply and securely.
QueueKafka (strimzi)https://github.com/strimzi/strimzi-kafka-operatorBetaOperator for running Kafka and Kafka Connect on Kubernetes and OpenShift
QueueNATShttps://github.com/nats-io/nats-operatorBetaNATS is an open-source, high-performance, lightweight and secure cloud native messaging system. This operator manages NATS clusters atop Kubernetes, automating their creation and administration.
Relational DatabaseMySQL (Presslabs)https://github.com/presslabs/mysql-operatorBetaMySQL is an Open Source SQL database management system. This operator manages all the necessary resources for deploying and managing a highly available MySQL cluster. It provides efortless backups, while keeping the cluster highly-available.
Relational DatabaseTiDB (Pingcap)https://github.com/pingcap/tidb-operatorBetaTiDB operator creates and manages TiDB clusters running in Kubernetes
Relational DatabaseVitesshttps://github.com/vitessio/vitess-operatorBetaVitess Operator provides automation that simplifies the administration of Vitess clusters on Kubernetes
Securitycert-managerhttps://github.com/jetstack/cert-managerBetaAutomatically provision and manage TLS certificates in Kubernetes
Securityrbacsynchttps://github.com/cruise-automation/rbacsyncBetaAutomatically sync groups in Googkle Cloud into Kubernetes RBAC
SecurityRBAC Managerhttps://github.com/reactiveops/rbac-managerBetaThis operator simplifies the management of RBAC Role Bindings in Kubernetes.
SecurityVault (CoreOS)https://github.com/coreos/vault-operatorBeta*This is now unmaintained*. See https://github.com/coreos/vault-operator/issues/332
SecurityVault (Banzai Cloud)https://github.com/banzaicloud/bank-vaultsBetaVault secures, stores, and tightly controls access to tokens, passwords, certificates, API keys, and other secrets. This operator offers a feature rich HA Vault operator with TLS, external API based re/configuration, several/automatic unseal options and more.
SecurityGatekeeper (ReplicatedHQ)https://github.com/replicatedhq/gatekeeperBetaKubernetes Operator to manage Dynamic Admission Controllers using Open Policy Agent
SecurityGatekeeper (OPA)https://github.com/open-policy-agent/gatekeeperBetaGatekeeper - Policy Controller for Kubernetes
SecurityNetwork Policyhttps://github.com/bells17/common-network-policy-operatorBetaAuto create common network policy in all namespaces
SecurityRegsecrethttps://github.com/mcasimir/regsecret-operatorBetaKubernetes operator to automate imagePullSecrets creation
SecurityRandom Secret Operatorhttps://github.com/mikebryant/random-secret-operatorBetaCreates Secrets containing random data
SecurityCert Operatorhttps://github.com/giantswarm/cert-operatorBetacert-operator creates/manages certificates for Kubernetes clusters running on Giantnetes
SecuritySealed Secretshttps://github.com/bitnami-labs/sealed-secretsBetaA Kubernetes controller and tool for one-way encrypted Secrets
Service MeshFlaggerhttps://github.com/stefanprodan/flaggerBetaIstio progressive delivery Kubernetes operator
Service MeshIstio Operatorhttps://github.com/banzaicloud/istio-operatorBetaIstio-operator is a Kubernetes operator to deploy and manage Istio resources for a Kubernetes cluster.
StoragePVChttps://github.com/banzaicloud/pvc-operatorBetaThis operator helps to use Kubernetes Persistent Volumes easier on cloud providers by dynamically creating the required accounts, classes and more.
BackupVelerohttps://velero.io/Productiongit clone https://github.com/bibinwilson/kubernetes-prometheus
Document DatabaseCouchbase (official)https://www.couchbase.com/products/cloud/kubernetesProductionThis is a paid product from Couchbase
IaaSAWS (Giant Swarm)https://github.com/giantswarm/aws-operatorProductionManages Giantnetes Kubernetes clusters running on Amazon Web Services
IaaSAzure Operator (Giant Swarm)https://github.com/giantswarm/azure-operatorProductionAzure operator manages Kubernetes clusters running in Giantnetes on Azure
JavaWebLogichttps://github.com/oracle/weblogic-kubernetes-operatorProductionOracle Weblogic Server Kubernetes Operator
MonitoringIcinga2 Operatorhttps://github.com/appscode/searchlightProductionIcinga is an open source computer system and network monitoring application. This operator provide alerts for Kubernetes
MonitoringJaeger (official)https://github.com/jaegertracing/jaeger-operatorProductionJaeger Operator for Kubernetes
MonitoringFluentD Operatorhttps://github.com/vmware/kube-fluentd-operatorProductionAuto-configuration of Fluentd daemon-set based on Kubernetes metadata
OtherKVMhttps://github.com/giantswarm/kvm-operatorProductionHandles Kubernetes clusters running on a Kubernetes cluster with workers and masters in KVMs on bare metal
Relational DatabasePostgreSQL (Crunchy Data)https://github.com/CrunchyData/postgres-operatorProductionPostgreSQL Operator Creates/Configures/Manages PostgreSQL Clusters on Kubernetes
Relational DatabasePostgreSQL (Zalando)https://github.com/zalando-incubator/postgres-operatorProductionCreate and manage PostgreSQL HA clusters on Kubernetes using Patroni
SecuritySSO Operatorhttps://github.com/jenkins-x/sso-operatorProductionSingle Sign-On Kubernetes operator for Dex identity provider
ProxyOAuth2 Proxyhttps://github.com/pusher/oauth2_proxyAlphaA reverse proxy that provides authentication with Google, Github, and other OIDC providers

151 rows

Sources & further reading

  1. Kubernetes operator pattern
  2. CloudNativePG chart
  3. Strimzi deployment documentation
  4. cert-manager Helm installation
  5. External Secrets getting started
  6. KubeRay operator chart and managed resources
  7. Velero backup and restore overview
  8. Recovered historical source
  9. Kubernetes Operators: historical workbook

Spotted something that needs another look?

Help improve this page →