k8ssandra-operator

command module
v1.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 20, 2023 License: Apache-2.0 Imports: 38 Imported by: 0

README

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.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
apis
config/v1beta1
Package v1beta contains API Schema definitions for the config v1 API group +kubebuilder:object:generate=true +groupName=config.k8ssandra.io
Package v1beta contains API Schema definitions for the config v1 API group +kubebuilder:object:generate=true +groupName=config.k8ssandra.io
control/v1alpha1
Package v1alpha1 contains API Schema definitions for the control v1alpha1 API group +kubebuilder:object:generate=true +groupName=control.k8ssandra.io
Package v1alpha1 contains API Schema definitions for the control v1alpha1 API group +kubebuilder:object:generate=true +groupName=control.k8ssandra.io
k8ssandra/v1alpha1
Package v1alpha1 contains API Schema definitions for the k8ssandra.io v1alpha1 API group +kubebuilder:object:generate=true +groupName=k8ssandra.io
Package v1alpha1 contains API Schema definitions for the k8ssandra.io v1alpha1 API group +kubebuilder:object:generate=true +groupName=k8ssandra.io
medusa/v1alpha1
Package v1alpha1 contains API Schema definitions for the medusa v1alpha1 API group +kubebuilder:object:generate=true +groupName=medusa.k8ssandra.io
Package v1alpha1 contains API Schema definitions for the medusa v1alpha1 API group +kubebuilder:object:generate=true +groupName=medusa.k8ssandra.io
reaper/v1alpha1
Package v1alpha1 contains API Schema definitions for the reaper v1alpha1 API group +kubebuilder:object:generate=true +groupName=reaper.k8ssandra.io
Package v1alpha1 contains API Schema definitions for the reaper v1alpha1 API group +kubebuilder:object:generate=true +groupName=reaper.k8ssandra.io
replication/v1alpha1
Package v1alpha1 contains API Schema definitions for the k8ssandra.io v1alpha1 API group +kubebuilder:object:generate=true +groupName=replication.k8ssandra.io
Package v1alpha1 contains API Schema definitions for the k8ssandra.io v1alpha1 API group +kubebuilder:object:generate=true +groupName=replication.k8ssandra.io
stargate/v1alpha1
Package v1alpha1 contains API Schema definitions for the k8ssandra.io v1alpha1 API group +kubebuilder:object:generate=true +groupName=stargate.k8ssandra.io
Package v1alpha1 contains API Schema definitions for the k8ssandra.io v1alpha1 API group +kubebuilder:object:generate=true +groupName=stargate.k8ssandra.io
telemetry/v1alpha1
Package v1alpha1: Types in this package are instantiated in the other types in k8ssandra-operator, especially Stargate types and Cassandra types.
Package v1alpha1: Types in this package are instantiated in the other types in k8ssandra-operator, especially Stargate types and Cassandra types.
controllers
pkg
test
Package test: this file contains minimum viable configurations for various objects in k8ssandra-operator to facilitate testing.
Package test: this file contains minimum viable configurations for various objects in k8ssandra-operator to facilitate testing.
test
yq

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL