Database cluster Templates¶
Database clusters can be created from templates using PMM. Database cluster Template allows operators to customize Database Clusters based on their requirements, environments, or infrastructure.
Examples
-
Data clusters: Different load patterns, such as simple reads, heavy writes, 50%/50% read/write, and the number of connections.
-
Infrastructure - Different parameters and tuning for the resulting cluster: such as network configuration (load balancing, exposure), storage classes/types, etc.
-
Environment: Combination of database cluster and infrastructure that will affect the database cluster configuration.
Customize PXC DB configuration¶
The following example shows how DBaaS users can create PXC DB clusters from a template that sets a custom MySQL configuration. The default MySQL configuration is the following:
[mysqld]
wsrep_provider_options="gcache.size=600M"
Note
PXC DB configuration can be customized based on your needs. This can be accomplished by creating a template and changing that field.
Create Custom Resource Definition (CRD) template¶
To create a template, do the following:
-
Identify the field(s) of interest by reading the PXC operator documentation and the PXC CRD. In this case, you have to change the
spec.pxc.configuration
field. -
Create a template CRD
pxctpl-crd-pxc-configuration.yaml
with just those small subset of fields.apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.8.0 creationTimestamp: null name: pxctemplatepxcconfiguration.dbaas.percona.com labels: dbaas.percona.com/template: "yes" dbaas.percona.com/engine: "pxc" spec: group: dbaas.percona.com names: kind: PXCTemplatePXCConfiguration listKind: PXCTemplatePXCConfigurationList plural: pxctemplatepxcconfiguration singular: pxctemplatepxcconfiguration scope: Namespaced versions: - name: v1 schema: openAPIV3Schema: properties: apiVersion: type: string kind: type: string metadata: type: object spec: properties: pxc: properties: configuration: type: string type: object type: object status: type: object type: object served: true storage: true
-
Run the following command.
kubectl apply -f pxctpl-crd-upgrade-options.yaml
For more information, see DatabaseCluster templates.
Add read permissions for dbaas-operator¶
In order for the dbaas-operator to apply the template it needs access to the template CRs:
DBAAS_OPERATOR_MANAGER_ROLE=$(kubectl get clusterroles | grep dbaas-operator | grep -v metrics | grep -v proxy | cut -f 1 -d ' '); kubectl get clusterroles/"$DBAAS_OPERATOR_MANAGER_ROLE" -o yaml > dbaas-operator-manager-role.yaml
cat <<EOF >>dbaas-operator-manager-role.yaml
- apiGroups:
- dbaas.percona.com
resources:
- pxctemplatepxcconfiguration
verbs:
- get
- list
EOF
Run the following command:
kubectl apply -f dbaas-operator-manager-role.yaml
Create PXCTemplatePXCConfiguration Template CR¶
-
Create a corresponding CR
pxctpl-pxc-config-max-connection-789.yaml
with the required values.2. Run the following command:apiVersion: dbaas.percona.com/v1 kind: PXCTemplatePXCConfiguration metadata: name: pxc-config-max-connections-789 labels: dbaas.percona.com/template: "yes" dbaas.percona.com/engine: "pxc" spec: pxc: configuration: | [mysqld] max_connections = 789
kubectl apply -f pxctpl-pxc-config-max-connection-789.yaml
Create a DB cluster from template¶
To create a DB cluster from a template, do the following:
-
From the main menu navigate to DBaaS → Create DB Cluster.
-
On the Advanced Settings panel, select the template from the Templates drop-down.
-
Click
Create
.