☸️Kubernetes
This guide covers installing the Dstl8 agent on Kubernetes clusters using Helm.
Prerequisites
Kubernetes cluster with
kubectlaccessHelm 3.x installed
Organization ID (provided by Dstl 8)
Cluster name
Deployment environment label (e.g.,
prod,dev,staging)Admission tokens (generated in the Dstl8 UI)
Config and data endpoint URLs (provided in the Dstl8 UI)
Default Configuration
The installer uses these defaults unless otherwise specified:
Kubeconfig:
~/.kube/configNamespace:
controltheoryInstallation Type:
both(DaemonSet + Cluster components)OTLP Port Exposure: Disabled (ports not exposed on nodes)
Installation
Quick Install
The Dstl8 UI generates a custom installation command for your cluster. Simply provide your cluster name and deployment environment, and the UI will generate the complete command with all required tokens and endpoints.
Generated Command Example:
This installs both the DaemonSet and Cluster components by default.

Installation Types
You can choose which components to install:
Both Components (Default):
You'll typically want to install both components in each cluster per the default command above
DaemonSet Only:
Cluster Component Only:
Configuration Options
Namespace (Optional):
By default, the agent installs into the controltheory namespace. To use a different namespace:
Kubeconfig (Optional):
By default, the installer uses the kubeconfig at ~/.kube/config. To use a different kubeconfig file:
Expose OTLP Ports (Optional):
By default, OTLP ports are not exposed on the host. To expose OTLP ports (1757/1758) directly on nodes for the DaemonSet:
Note: This is typically only needed if you have applications running outside the cluster that need to send telemetry data directly to the node ports.
Preflight Check (Dry Run)
Before installing, you can run a preflight check to verify your cluster is ready and identify any potential issues. The preflight check uses the default kubeconfig (~/.kube/config) unless you specify otherwise.
Basic Preflight Check:
With Custom Kubeconfig:
What the Preflight Check Analyzes
The preflight check provides detailed analysis of:
Node Resources: Available CPU, memory, and pod capacity on each node
Scheduling Constraints: Whether the DaemonSet can be scheduled on each node
Priority Classes: Available scheduling priorities in the cluster
Node Taints: Taints that may require tolerations
Over-provisioned Pods: Pods with excessive resource requests that may prevent scheduling
Node Status: Ready/NotReady status of all nodes
Sample Output:
Use the preflight check to:
Identify nodes with insufficient resources
Plan toleration requirements for tainted nodes
Detect over-provisioned workloads blocking the DaemonSet
Validate cluster capacity before installation
Verify Installation
After installation, check the status of your deployed components. This uses the default kubeconfig and namespace unless specified otherwise:
With Custom Options:
This command displays:
Deployment health status
Running pods and their status
Version information
Configuration details
Uninstall
To completely remove the Dstl 8 agent from your Kubernetes cluster:
Basic Uninstall:
With Custom Options:
The uninstall process removes:
DaemonSet and Cluster Helm releases
Associated ConfigMaps and Secrets
ServiceAccounts and RBAC resources
The namespace (if no other resources exist in it)
Troubleshooting
Common Issues
Insufficient Resources: Run the preflight check to identify nodes with resource constraints:
DaemonSet Not Scheduling:
Check node taints with preflight analysis
Verify nodes have sufficient CPU/memory available
Review pod capacity limits on nodes
Permission Errors: Ensure your kubeconfig has the necessary permissions:
Create namespaces
Deploy Helm charts
Create RBAC resources (ServiceAccounts, Roles, RoleBindings)
Create ConfigMaps and Secrets
Pods Not Starting: Check pod logs:
Network Connectivity Issues: Verify the cluster can reach the config and data endpoints:
Getting Help
For installation issues:
Run the status check to gather diagnostic information
Run the preflight check to identify resource or scheduling constraints
Review pod logs for error messages
Collect the output and contact Dstl 8 support
Advanced Configuration
Using Environment Variables
You can set the namespace via environment variable:
bash
Multiple Kubeconfigs
To install on multiple clusters, use the --kubeconfig flag with different config files:
bash
Version Information
Current installer version: v1.2.3
To check the installer version:
To view all available options:
Last updated