Skip to content

KXI Operator


The KX Insights operator is a kubernetes workload that is responsible for creating, reconciling and cleaning up Assembly resources in a KX Insights installation.

When the KXI Operator is deployed to a cluster, it installs CRDs.

A CRD is a Custom Resource Definition. When installed creates two new resources within the cluster, an Assembly and a AssemblyResources.


If you're upgrading from a previous version or the CRD is already installed, helm will not update the definition.

kubectl get crd/

It is advised, that the CRD is deleted before or reapplied from source

kubectl delete crd 
See here for more details.

A single operator deployment can be responsible for many AssemblyResources and Assembly CR.

Custom Resource Definition

A CRD creates a new resource within your cluster. Once installed a user can create, modify and delete instance of the new resource like any other Kubernetes resource.

To view existing cluster CRD you can run a kubectl command

kubectl get crd
NAME                                             CREATED AT                       2022-01-12T16:50:58Z                2022-01-12T07:29:51Z     2021-10-07T07:43:04Z     2021-06-15T06:52:16Z

As with other resource, kubectl can be used to create, view details and delete the CRD


The apply command can be used to create a new resource within your cluster

kubectl apply -f kxi-operator/crds/insights.kx.com_assemblies.yaml configured

This will create or amend an existing CRD resource within your cluster.


The describe can be used to give detailed information on the CRD and spec of the expected CR

kubectl describe crd
Labels:       <none>
Annotations: v0.6.1
API Version:
Kind:         CustomResourceDefinition


The delete will remove the CRD as well as any instance of the CR.

kubectl delete crd "" deleted


Installation of the operator is a pre-requisite of the insights installation.

The CLI will check for an existing installation of the kxi-operator before installing insights. If the kxi-operator is not installed within the cluster, the CLI will install the kxi-operator prior to the install of insights

The Operator makes used of a conversion Webhook which requires that the Operator is installed within its own namespace kxi-operator.


As of restriction in Helm the namespace must be set to kxi-operator. If installed within an alternative namespace webhook conversions will fail

On installation two CRDs will have been added to the cluster

The Assembly CRD

kubectl get crd/

The AssemblyResources CRD

kubectl get crd/

The Assembly Resource CR

Once the KXI Operator is successfully deployed, the operator will listen for new AssemblyResources CR, changes to existing AssemblyResources resources, or their removal.

The AssemblyResources CR defines defaulting and configuration for a cluster namespace. When the operator attempts to reconcile an Assembly CR applied to a given namespace, the AssemblyResource CR is consulted to find default component images, SP Coordinator and Keycloak endpoints.

Deploying an Assembly Resource

On installation of the base Insights application an instance of the AssemblyResource will have been applied to the control-plane.

It may also be applied using kubectl. Users may update or replace the CR after deployment to update defaulting.

Below is the head of our insights_v1alpha1_assemblyresource.yaml example:

kind: AssemblyResource
  name: assemblyresource-sample
      portName: "dap"
      port: 5080

For full documentation of the available fields, see the CRD documentation.

Once deployed, you may view namespace AssemblyResources by running:

kubectl get assemblyresources

NAME     DESCRIPTION                    AGE
insights Assembly Resource for insights 2d22h
Additionally you may use the CRD singular or short name:

kubectl get assemblyresource
kubectl get asr

The Assembly CR

Once the KXI Operator is successfully deployed, the operator will listen for new Assembly CR, changes to existing Assembly resources, or their removal.

Currently the operator deploys and manages the following workloads:

  • Multiple instances and flavours of Data Access Processes (DAPs).
  • Sequencers - RT processes.
  • A Storage Manager deployment.
  • SP Pipeline requests (Request made to additional KXI SP Coordinator instance)

The goal of an Assembly is to allow users to deploy configurable data pipelines allowing data to be ingested, processed and persisted. A typical pipeline might look like this.

Basic Assembly

Sample assemblies are available to browse on Nexus along with deployment instructions here. For full documentation of the available fields, see the CRD documentation.

To deploy and manage assemblies, use the kdb Insights CLI

Delete Assembly resource

Assemblies may removed from the cluster with a simple delete call:

kubectl delete assembly basic-assembly "basic-assembly" deleted

When a call to delete is made, the resources created directly from the Assembly are removed.


Finalizers are used to make requests to the external KXI SP Coordinator to teardown requested pipelines.

Also note that PVC generated from mount requests, will not be removed. To remove these the shared label may be used:

kubectl delete pvc -l
persistentvolumeclaim "basic-assembly-hdb-rook-cephfs" deleted
persistentvolumeclaim "basic-assembly-idb-rook-cephfs" deleted