Pinot Control Plane
Pinot control plane is based on kubernetes operator's and custom controllers. Its based on the principles of the
distributed system operator interface and uses
operator runtime internally.
- This documentation cover's the core features of pinot control plane.
- Pinot Control Plane consists of 4 controllers:
Pinot Controller: Reconcile's Pinot CR.
Schema Controller: Reconcile's Pinot Schema CR.
Table Controller: Reconcile's Pinot Table CR.
Tenant Controller: Reconcile's Pinot Tenant CR.
NodeType Each pinot node has a nodeType ie broker, controller, server and minion.
Let's dive into the features for pinot control plane.
Installation of heterogeneous pinot clusters across mutiple AZ's.
The ability to define a heterogeneous pinot spec comes from the distributed system operator interface. This gives the users utmost flexibilty in defining multiple nodes with nodeType.
User's can specify if the pinot node deployed is
- name: pinot-server
Rolling Upgrades - Incremental and Ordered Deployment
- When a pinot cluster is deployed all the pods are deployed in parallel ie the first installation.
Pinot Controller calculates the installations by checking on the generation field in the CR.
- Upgrades are incremental ie control plane does not upgrade all pods at once. It upgrades the pinot cluster in a defined order. The order is defined by the user in the pinot custom resources.
The deploymentOrder can be changed according to scenarios.
During an upgrade if a pods goes into a bad state, the pinot controller halts the deployment and does not rollout the changes to the new pods. In this case a manual intervetion is required.
- Pinot controller watches namespaces and reconciles them. It support watching
- A single namespace
- All namespaces.
Example : As a user you want to watch All namespaces but exclude
kube-system namespace. You can add it in the
Deny List is an env var in the pinot control plane.
Schema controller is responsible for reconciling
Any state change in the pinot schema is reconciled by the schema controller. Schema controller is responsible CRUD operations of pinot schema.
Refer to Schema Management for more info.
Table controller is responsible for reconciling
Any state change in the pinot table is reconciled by the table controller. Table controller is responsible CRUD operations of pinot table.
Refer to Table Management for more info.
Automatic Segment Reloads
On state change on pinot schema CR, table controller automatically reloads the segments by caling the pinot API.
segmentReload: true in the pinot table resource.
Tenant Management ( Experimental )
Tenant controller is responsible for reconciling
Any state change in the pinot tenant is reconciled by the tenant controller. Tenant controller is responsible CRUD operations of pinot tenant.
Refer to Tenant Management for more info.