Skip to content

adejanovski/k8ssandra-operator

 
 

Repository files navigation

K8ssandra Operator

This is the Kubernetes operator for K8ssandra.

K8ssandra is a Kubernetes-based distribution of Apache Cassandra that includes several tools and components that automate and simplify configuring, managing, and operating a Cassandra cluster.

K8ssandra includes the following components:

K8ssandra 1.x is configured, packaged, and deployed via Helm charts. Those Helm charts can be found in the k8ssandra repo.

K8ssandra 2.x will be based on this operator.

One of the primary features of this operator is multi-cluster support which will facilitate multi-region Cassandra clusters.

Architecture

The K8ssandra operator is being developed with multi-cluster support first and foremost in mind. It can be used seamlessly in single-cluster deployments as well.

K8ssandra Operator consists of a control plane and a data plane. The control plane creates and manages object that exist only in the API server. The control plane does not deploy or manage pods.

Note: The control plane can be installed in only one cluster, i.e., the control plane cluster.

The data plane can be installed on any number of clusters. The control plane cluster can also function as the data plane.

The data plane deploys and manages pods. Moreover, the data plane may interact directly with the managed applications. For example, the operator calls the management-api to create keyspaces in Cassandra.

Diagram

In this diagram you can see a small example of a multi-cluster deployment.

Requirements

It is required to have routable pod IPs between Kubernetes clusters; however this requirement may be relaxed in the future.

If you are running in a cloud provider, you can get routable IPs by installing the Kubernetes clusters in the same VPC.

If you run multiple kind clusters locally, you will have routable pod IPs assuming that they run on the same Docker network which is normally the case. We leverage this for our multi-cluster E2E tests.

Installing the operator

See the install guide.

Contributing

For more info on getting involved with K8ssandra, please check out the k8ssandra community page.

The remainder of this section focuses on development of the operator itself.

Community

Check out the full K8ssandra docs at k8ssandra.io.

Start or join a forum discussion at forum.k8ssandra.io.

Join us on Discord here.

For anything specific to K8ssandra 1.x, please create the issue in the k8ssandra repo.

Development

See the development guide.

About

The Kubernetes operator for K8ssandra

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 97.8%
  • Makefile 1.3%
  • Other 0.9%