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
# optional. Default values for resource are as below
resource:
requests:
cpu: 2
memory: 2Gi
limits:
cpu: 2
memory: 2Gi
# 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
# optional. Default values for resource are as below
resource:
requests:
cpu: 2
memory: 4Gi
limits:
cpu: 2
memory: 4Gi
# 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.
Resource
Specify resource requests and limits for CPU & Memory. If provided, the given resource values will be used. If omitted the default CPU request & limit will be 2, whereas default memory request & limit will be 2Gi & 4Gi for Master & TServer, respectively. You may override these values for dev environments where the cluster doesn’t have CPU/Memory as per the defaults. Though it is recommended to use the defaults for production-like deployments.
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.