Ceph

PLEASE NOTE: This document applies to v1.2 version and not to the latest stable release v1.9

YugabyteDB Cluster CRD

YugabyteDB clusters can be created/configured by creating/updating the custom resource object ybclusters.yugabytedb.rook.io. Please follow instructions in the YugabyteDB Operator Quikstart to create a YugabyteDB cluster.

The configuration options provided by the custom resource are explained here.

Sample

apiVersion: yugabytedb.rook.io/v1alpha1
kind: YBCluster
metadata:
  name: rook-yugabytedb
  namespace: rook-yugabytedb
spec:
  master:
    # Replica count for Master.
    replicas: 3
    # Mentioning network ports is optional. If some or all ports are not specified, then they will be defaulted to below-mentioned values, except for tserver-ui.
    network:
      ports:
        - name: yb-master-ui
          port: 7000          # default value
        - name: yb-master-rpc
          port: 7100          # default value
    # Volume claim template for Master
    volumeClaimTemplate:
      metadata:
        name: datadir
      spec:
        accessModes: [ "ReadWriteOnce" ]
        resources:
          requests:
            storage: 1Gi
        storageClassName: standard           # Modify this field with required storage class name.
  tserver:
    # Replica count for TServer
    replicas: 3
    # Mentioning network ports is optional. If some or all ports are not specified, then they will be defaulted to below-mentioned values, except for tserver-ui.
    # For tserver-ui a cluster ip service will be created if the yb-tserver-ui port is explicitly mentioned. If it is not specified, only StatefulSet & headless service will be created for TServer. TServer ClusterIP service creation will be skipped. Whereas for Master, all 3 kubernetes objects will always be created.
    network:
      ports:
        - name: yb-tserver-ui
          port: 9000
        - name: yb-tserver-rpc
          port: 9100          # default value
        - name: ycql
          port: 9042          # default value
        - name: yedis
          port: 6379          # default value
        - name: ysql
          port: 5433          # default value
    # Volume claim template for TServer
    volumeClaimTemplate:
      metadata:
        name: datadir
      spec:
        accessModes: [ "ReadWriteOnce" ]
        resources:
          requests:
            storage: 1Gi
        storageClassName: standard           # Modify this field with required storage class name.

Configuration options

Master/TServer

Master & TServer are two essential components of a YugabyteDB cluster. Master is responsible for recording and maintaining system metadata & for admin activities. TServers are mainly responsible for data I/O. Specify Master/TServer specific attributes under master/tserver. The valid attributes are replicas, network & volumeClaimTemplate.

Replica Count

Specify replica count for master & tserver pods under replicas field. This is a required field.

Network

network field accepts NetworkSpec to be specified which describes YugabyteDB network settings. This is an optional field. Default network settings will be used, if any or all of the acceptable values are absent.

A ClusterIP service will be created when yb-tserver-ui port is explicitly specified. If it is not specified, only StatefulSet & headless service will be created for TServer. ClusterIP service creation will be skipped. Whereas for Master, all 3 kubernetes objects will always be created.

The acceptable port names & their default values are as follows:

Name Default Value
yb-master-ui 7000
yb-master-rpc 7100
yb-tserver-rpc 9100
ycql 9042
yedis 6379
ysql 5433

Volume Claim Templates

Specify a PersistentVolumeClaim template under the volumeClaimTemplate field for master & tserver each. This is a required field.