ArchitectureOperator

Operator

Unbind provides a unified API to deploy every kind of service. That includes databases, docker images, etc.

The primary way we do this is through the Unbind Operator, which is an in-house built kubernetes operator that watches for Unbind CRDs and deploys them to the cluster.

Unbind CRD

A custom resource definition (CRD) is a way to extend the Kubernetes API with custom resources, kind of like adding a plugin.

Unbind defines its own resource specification for Services, at the low level it allows a single object to represent a combination of native kubernetes API resources - including:

It intelligently creates the resources that are required based on the specification provided.

You can see which Unbind services (CRDs) are deployed in your cluster by running:

kubectl get services.unbind.unbind.app -A

Unbind Operator

The Unbind operator is constantly working to reconcile the state of all Unbind CRDs in the cluster. So when one is edited, the operator will update the service in the cluster to match the desired state. Whether that’s adding a domain, changing replicas, or deleting it all together.

Third Party Operators

Because databases are complex entities and each have their own unique set of rules for managing and scaling them, we use third party operators to manage them.

  • The Unbind operator is able to translate Unbind Database CRDs into the Database Operator CRDs.
  • The Unbind operator is capable of installing new operators into the cluster as required (for example, the first time you deploy a MySQL database, moco will be installed)
OperatorPurposeRepositoryDescription
Zalando Postgres OperatorPostgreSQL Managementpostgres-operatorProduction-ready PostgreSQL clusters with high availability, backup, and monitoring
MocoMySQL ManagementmocoMySQL operator for Kubernetes with automated backup, restore, and clustering
Flux Helm OperatorHelm Chart Deploymenthelm-operatorGitOps operator for managing Helm chart releases and updates
Altinity ClickHouse OperatorClickHouse Managementclickhouse-operatorManages ClickHouse clusters for analytics and real-time data processing

Database Interface

Unbind provides an internal unified interface for databases, meaning the operator understands a unified format and can render that format for whichever database is requested.

The definitions are located in the unbind-custom-service-definitions repository.