Skip to main content

Basic Setup

The basic setup of Kadeck consists of a single Kadeck instance. This configuration is recommended for:

  • Proof-of-Concepts (PoCs)
  • Small environments or projects
  • Isolated network segments
  • Rapid evaluation and onboarding

This guide describes the complete deployment process for this setup. Once completed, you will be able to:

  • Log in to Kadeck
  • Explore your streaming data interactively

Deployment Overview

To bring up a fully functional environment, complete the following steps in order:

  1. Preparation
  2. Access & Credentials
  3. Configuration
  4. Deployment
  5. Testing

1. Preparation

Before deployment, ensure your infrastructure and access are correctly configured.

Kadeck Preparation

Container Setup

Kadeck is distributed as a Docker image and can be deployed as:

  • A standalone container
  • A Kubernetes Pod
  • A Helm-based deployment

Ingress configuration is often required. Kadeck communicates over HTTP + WebSocket (WS) or HTTPS + Secure WebSocket (WSS). If an ingress controller is used, ensure that the appropriate headers (e.g., Connection: Upgrade) are forwarded to support WebSocket upgrades.

info

For required ports and network policies, refer to the Interoperability & Network section.

Database Configuration

Kadeck requires access to an external database (Postgres or H2) with full read and write access to a dedicated schema (e.g., kadeck). The default schema used is PUBLIC, but a custom schema can be used for secure environments. We recommend using a dedicated database for Kadeck.

SSL/TLS Certificate

Deploying Kadeck with SSL/TLS enabled is strongly recommended.
Certificates must be embedded in a Java Keystore (JKS) and mounted into the container at runtime.

info

Instructions for generating a custom certificate are provided in the FAQs section.


2. Access & Credentials

Before deploying Kadeck, you must obtain the necessary credentials (license details) from Xeotek. These credentials are required to:

  • Configure system secrets and initialize the platform

Container Images

Container images for Kadeck are hosted in a private repository on Docker Hub.

Kadeck operates in high-security environments such as large enterprises and government agencies. For security reasons, direct access to the images is restricted and not publicly available.

info

Please contact your representative at Xeotek to obtain access to the Kadeck images.

System Credentials

In addition to image access, you will receive your Kadeck team and secret. These are required to activate and operate your Kadeck installation.

Both the container registry credentials and the team and secret are provided by Xeotek during onboarding.

Important:

  • Store all credentials securely and restrict access.
  • The team and secret must be configured before system startup.
  • Follow your organization's policies for handling confidential deployment artifacts.

3. Configuration

For a full list of configuration options for the Kadeck, please visit the Configuration Table page.

Kadeck Configuration

KeyValuesDescription
xeotek_kadeck_teamStringYour team's id
xeotek_kadeck_secretStringYour team's secret
xeotek_kadeck_port8080 (or 8443)

The port through which the web user interface is accessible.
Note: the container user has no access to system level ports.

xeotek_kadeck_logleveldebugStart with "debug" and change it to "warn" later.
xeotek_kadeck_db_urljdbc:postgresql://kadeck.acme.com:5432/kadeckJDBC connection string to your Postgres or H2 database.
xeotek_kadeck_db_usernameStringUsername of the database user with read/write access to the PUBLIC schema, if not specified otherwise.
xeotek_kadeck_db_passwordStringPassword of the database user.
xeotek_kadeck_keystore_path/etc/selfsigned.jksPath to mounted JKS
xeotek_kadeck_keystore_passStringPassword to access the certificate
xeotek_kadeck_keystore_aliasStringAlias of the certificate

4. Deployment

Kadeck can be deployed using a Helm chart, as a standalone container, or as a Kubernetes workload (including OpenShift). This section outlines recommended practices for each option with an emphasis on production readiness and operational maintainability.

Deployment Targets

  • Helm (preferred for Kubernetes-based environments)
  • Pod/Deployment YAMLs (for manual control or OpenShift customization)
  • Docker run (for local development or PoC-only usage)

Helm Deployment

All Kadeck components are available as Helm charts for streamlined deployment in Kubernetes-based environments.

Adding the Helm Repository

Add the Kadeck Helm repository:

helm repo add kadeckdash https://dl.cloudsmith.io/public/xeotek/kadeckdash/helm/charts/
helm repo update

Keystore Mounting (TLS)

When TLS is enabled, a Java Keystore (JKS) must be mounted into the Kadeck container at runtime. There are multiple strategies to manage this securely:

Option 1: Volume Mount

Mount a pre-generated .jks file into the container:

volumeMounts:
- name: tls-keystore
mountPath: /opt/kadeck/keystore
readOnly: true

volumes:
- name: tls-keystore
secret:
secretName: kadeck-tls

Option 2: External Secret Manager

Use a cloud-native secret manager (e.g., AWS Secrets Manager, HashiCorp Vault) with a sidecar injector or an operator to mount the keystore dynamically.

success

Best practice: Avoid hardcoding passwords and TLS paths in environment variables or values files. Use Kubernetes secrets or external secret managers.


Namespace & Isolation

Use a dedicated namespace for the Kadeck components (e.g., kadeckdash-system) to isolate the environment and simplify resource control and RBAC management.

kubectl create namespace kadeckdash-system
success

Best practice: Apply namespace-specific resource quotas and network policies to ensure isolation and enforce limits.


Health Endpoints

Kadeck exposes the following endpoints for orchestration and monitoring:

EndpointDescriptionUsage
/healthOverall health statusSystem dashboards, alerts
/liveLiveness probeKubernetes liveness checks
/readyReadiness probeKubernetes readiness checks

When deploying via Helm or custom manifests, ensure probes are configured as:

livenessProbe:
httpGet:
path: /live
port: 8080
initialDelaySeconds: 10
periodSeconds: 10

readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 10

Additional Recommendations

  • Use readiness gates to delay service exposure until the database and keystore are available.
  • Enable resource requests/limits to ensure predictable performance and avoid node contention.
  • Ensure anti-affinity rules if deploying Kadeck in a HA setup to spread across availability zones or nodes.

5. Testing

After deploying Kadeck validate that the system is operational before connecting additional components or exposing it to end users.

Browser Access

Open a browser and navigate to the Kadeck endpoint:

http(s)://<your-ingress-or-service-endpoint>

Log in using the default credentials:

Username: admin  
Password: admin

Note: Change the default password immediately after login in production environments.


Log Inspection

Check Kadeck's logs to confirm successful startup. You should see output similar to:

INFO Server started at: http://0.0.0.0:8080

No stack traces or repeated warnings should appear during startup. All components should reach a ready state.

Logs are written to the container’s local file system and output to the console.

The default log file location is:

/root/.xeotek_kadeck_log

Both console output and log file contents are identical.


Health Checks

Verify that health endpoints return expected HTTP 200 status codes:

GET /live   → 200 OK  
GET /ready → 200 OK
GET /health → 200 OK

These endpoints can also be queried manually or tested via:

curl http://<pod-ip>:8080/live

Troubleshooting

If you encounter problems during deployment or runtime, detailed logs are critical for diagnosis.

Configuring Log Levels

Control log verbosity by setting environment variables at startup.

Main application log level:

  • xeotek_kadeck_loglevel

Additional component log levels:

  • xeotek_kadeck_loglevel_kafka — Apache Kafka client libraries
  • xeotek_kadeck_loglevel_netty — Netty networking

Available log levels:

  • ERROR — Critical failures only
  • WARN — Warnings and potential issues (default)
  • INFO — General operational information
  • DEBUG — Detailed internal state information (for troubleshooting only)
info

Recommendation:
Use DEBUG level only temporarily during troubleshooting.
Use WARN or INFO for regular operations.