kdb Insights Enterprise Installation¶
This page details the steps to deploy kdb Insights Enterprise in a pre-configured Kubernetes cluster. Once installed, you can build and deploy your workloads.
Upgrade
If you are upgrading an existing kdb Insights Enterprise deployment, refer to the upgrade guide instead.
Prerequisites¶
Complete all of the following before starting the installation.
Cluster and shared services
You must have a Kubernetes cluster in place with the necessary shared services available. kdb Insights Enterprise provides Terraform scripts for quick deployment across all main cloud providers and on-premises environments:
To install into an existing cluster, ensure that all necessary infrastructure prerequisites have been met.
Kubernetes access
You must have access to the Kubernetes cluster along with a number of third-party tools to interact with the cluster, including an active kubeconfig with a namespace.
Helm
Helm is used to deploy and manage kdb Insights Enterprise. The KXI CLI uses Helm to install, upgrade, and reconfigure the application.
Important
Use the latest supported Helm 3.x version. Helm 4.x is not supported.
DNS
External clients require a DNS record set up with your DNS provider to interact with kdb Insights Enterprise.
kdb Insights Enterprise license
The install process requires a valid kdb Insights Enterprise license. Contact your KX sales representative to obtain one.
Note
The self-service licensing model previously used for KX products has been deprecated. Contact your sales representative if you have questions or want to move to the new model.
Registry credentials
You must have credentials to the appropriate Helm and Docker registries for charts and images. The installer prompts you for repository locations and access details. Default registries:
- Helm: https://portal.dl.kx.com/assets/helm/
- Docker:
portal.dl.kx.com
Validation¶
Before installing, you can validate that your cluster is capable of running kdb Insights Enterprise using the provided Helm chart. See the validation documentation for details.
Installation overview¶
When you run the install command, the following happens automatically:
- A
values.yamlconfig file is generated for repeatable future installs. - Shared cluster components (Operator and Management Service) are installed if not already present.
- The application is deployed to the cluster using the generated
values.yaml.
Configure the CLI¶
The KXI Command Line Interface (CLI) provides an interactive installer for deploying kdb Insights Enterprise on a Kubernetes cluster.
The following steps configure the CLI ready to deploy the application to the cluster:
-
Install the CLI on the machine you will use to access the cluster and run the install from.
-
Ensure you have the following values ready before proceeding:
Variable Example Notes INSIGHTS_HOSTNAME kxi-insights.domain.com DNS Hostname setup KX_LIC /home/app/q/kx.lic Path to KX License INSIGHTS_VERSION 1.19.0 -
Configure the CLI by running:
kxi configureThis command sets the CLI supported settings like the hostname and the namespace, and creates a
~/.insights/cli-configconfiguration file that stores default values for frequently used options. -
Run the
kxi install setupcommand, as follows:kxi install setup --hostname $INSIGHTS_HOSTNAME --license-filepath $KX_LICThis command walks you through the following configuration options:
-
Helm and Docker credentials - registry access for charts and images.
-
Keycloak admin passwords - save these for future use; they give access to the Keycloak administration console.
-
Encryption in transit - enabled by default for new installations. When upgrading, the CLI gives you the option to enable or disable it.
-
kdb Insights Enterprise-specific settings - including Entitlements and Query Environments (QEs).
The
kxi install setupcommand generates avalues.yamlconfig file to use for repeatable future installs. -
For information on further configuration and customizations available refer to the Configuration guide.
Information
To change any of these settings after installation, perform an upgrade.
You can, alternatively, supply all setup and installation options using command line arguments or CLI configuration. Refer to the options precedence for a description of the order in which these settings are read.
Deploy on Kubernetes¶
You can deploy kdb Insights Enterprise to the default namespace or a uniquely created namespace.
Warning
Two deployments cannot share the same namespace.
-
Before deploying, check the active namespace. Run the following command to confirm there are no existing deployments in the target namespace. If the command returns no output, the namespace is clear:
helm ls -
Deploy kdb Insights Enterprise by running the following command:
kxi install run --filepath=values.yaml --version $INSIGHTS_VERSION --hostname $INSIGHTS_HOSTNAME --license-filepath $KX_LIC
The CLI installs the following additional components if they are not already present:
-
kdb Insights Operator - deployed in the
kxi-operatornamespace as a single deployment shared across all kdb Insights Enterprise deployments on the cluster. -
kdb Insights Management Service - deployed in the
kxi-managementnamespace as a single deployment shared across all kdb Insights Enterprise deployments on the cluster.
Operator compatibility
An Operator version is only compatible with the corresponding minor version of kdb Insights Enterprise. For example, Operator 1.19.x supports application version 1.19.x. The CLI automatically looks up the latest compatible Operator version for your target application version.
Deploy behind a proxy server¶
kdb Insights Enterprise supports deployment behind a proxy server on the Azure platform. Refer to Microsoft's HTTP proxy support in Azure Kubernetes Service (AKS) for important details about running a proxy server through the Azure platform.
After the values.yaml file is generated during installation, but before calling kxi install run add the following proxy settings to it:
global:
## @section proxy Configure Proxy Env details
## @param httpProxy Set the proxy details for 'http_proxy' and 'HTTP_PROXY'
## @param httpsProxy Set the proxy details for 'https_proxy' and 'HTTPS_PROXY'
## @param noProxy Set the proxy details for 'no_proxy' and 'NO_PROXY'
# proxy: {}
Append the following example, of a valid proxy configuration entry, to your existing values.yaml file and enter the appropriate settings.
global:
proxy:
httpProxy: http://1.1.1.1:3128/
httpsProxy: http://2.2.2.2:3128/
noProxy: *.insights.svc
Important considerations for using a proxy with AKS
As a result of how AKS handle proxy servers, you must be aware of the following considerations:
-
Your
values.yamlmust contain both the proxy settings from AKS and any application-specific values (such as the ingress host). -
If AKS cluster proxy values change, update
values.yamlto match, then run an upgrade to apply the new settings. -
If you upgrade kdb Insights Enterprise or change the ingress hostname, verify your proxy settings still satisfy the above requirements.
Deploy on OpenShift¶
Apply OpenShift SCC to kdb Insights namespaces before deploying:
oc adm policy add-scc-to-group nonroot-v2 system:serviceaccounts:kxi
oc adm policy add-scc-to-group privileged system:serviceaccounts:kxi-operator
oc adm policy add-scc-to-group nonroot-v2 system:serviceaccounts:kxi-management
oc adm policy add-scc-to-group privileged system:serviceaccounts:kxi-management
For OpenShift deployments, do the following:
-
Generate the
values.yamlfile by populating the required parameters:kxi install setup --namespace kxi -
Open the
values.yamlwith your preferred editor and append OpenShift required values:global: clusterProvider: openshift encryption: enabled: true withinMesh: nginx: false operator: false prometheus: false kxi-operator: config: mount: storageClass: "ocs-storagecluster-cephfs" packages: useLocalValues: true storageClass: "ocs-storagecluster-cephfs" storageSize: 10Gi -
Deploy kdb Insights Enterprise by running the following command:
kxi install run --filepath=values.yaml --version=$INSIGHTS_VERSION --namespace kxi
OpenShift specific config¶
To define storage class values for use in kdb Insights Enterprise and ensure they appear in the web interface, add the following to values.yaml:
global:
insightsConfig:
storage:
database-single:
provisioners:
# Priority list of default provisioners to select for each component.
default: ["rook-ceph.cephfs.csi.ceph.com"]
# Indicates the set of supported provisioners within different components
# in the system.
supported: ["rook-ceph.cephfs.csi.ceph.com"]
database-cluster:
provisioners:
# Boolean to indicate all are supported
supported: true
default: ["rook-ceph.cephfs.csi.ceph.com"]
Post install¶
Once installation is complete, verify that all pods have entered a Running state:
kubectl get pods -l app.kubernetes.io/instance=insights
Allow a short period of time for all pods to start before checking.
Next steps¶
With the base system running, deploy a package to start ingesting and analyzing data: