Kubernetes Manifest

This guide covers deploying Qtap in cloud-connected mode using a Kubernetes manifest, managed through the Qplane control plane. Use this approach when you need full control over your Kubernetes resources or can't use Helm directly.

Preflight Check

If you'd like to verify your environment's compatibility, use the following scriptarrow-up-right:

curl -sSL https://github.com/qpoint-io/preflight/releases/latest/download/preflight.sh | sudo bash

Prerequisites

  • Kubernetes cluster on Linux hosts with supported kernel (5.10+)

  • kubectl configured for your cluster

  • helm (for generating the base manifest)

  • A valid registration token from app.qpoint.ioarrow-up-right (Settings → Installation)

Generating the Base Manifest

Use the Helm chart to generate a static Kubernetes manifest:

helm repo add qpoint https://helm.qpoint.io/
helm repo update

Generate the manifest with your registration token stored in a Kubernetes secret:

helm template qtap qpoint/qtap \
  --set registrationTokenSecretRefName="qtap-token" \
  --set logLevel=warn \
  > qtap-manifest.yaml

To see all available chart values:

Creating the Registration Token Secret

Store your registration token as a Kubernetes secret:

circle-exclamation

Deploying

Apply the generated manifest:

Verifying the Deployment

  1. Check that pods are running:

You should see qtap-xxxx pods in the Running state — one per node (DaemonSet).

  1. Check the logs:

Look for a successful registration message indicating the agent has connected to Qplane.

  1. Confirm the agent appears in the Qplane dashboardarrow-up-right under your environment.

Example Manifest

Here's a complete manifest for cloud-connected deployment with a registration token secret. You can use this directly instead of generating from Helm:

circle-info

No ConfigMap is needed for cloud-connected mode. Qplane pushes configuration (stacks, plugins, filters) to the agent after registration. Any changes you make in the Qplane UI are applied automatically.

Adding Tags

Tags help you filter and organize agents in the Qplane dashboard. Add them as extra arguments in the container spec:

See Organizations & Environments for when to use tags vs separate installations.

Adding S3 Credentials

If your Qplane environment uses an S3 object store for payload storage, inject the credentials alongside the registration token:

Add envFrom to the container spec:

Uninstalling

Understanding the Manifest

The manifest creates the following resources:

Resource
Purpose

ServiceAccount

Identity for Qtap pods

DaemonSet

Runs Qtap on every node in the cluster

Key DaemonSet settings:

  • hostPID: true and hostNetwork: true — Required for eBPF to observe host processes and network traffic

  • Privileged security context — Required for loading BPF programs (CAP_BPF, CAP_SYS_ADMIN)

  • /sys mount — Access to kernel interfaces for eBPF

  • containerd socket — Enables container attribution (maps traffic to container names and labels). Optional; remove if not using containerd.

  • Probes — Startup, readiness, and liveness checks on the /readyz and /healthz endpoints

Common Customizations

  • Node selectors or tolerations — Target specific nodes or schedule on tainted nodes

  • Resource limits — Adjust CPU and memory based on your traffic volume

  • Container runtime socket — Change from containerd to CRI-O (/var/run/crio/crio.sock) if applicable

  • Image tag — Pin to a specific version (e.g., qtap:v0.17.1) instead of the rolling v0 tag

Troubleshooting

  1. Pods not starting:

Check for security policy violations or missing secrets.

  1. Agent not appearing in Qplane:

Verify the registration token is correct and the cluster can reach api.qpoint.io:443.

  1. Kernel compatibility:

Kernel must be 5.10 or later.

Last updated