GitOps Configuration Management

Manage Qtap configuration through Git while using Qplane for visualization, search, and dashboards.


Why This Approach

GitOps benefits:

  • Version-controlled configuration with full audit trail

  • Pull request reviews for config changes

  • Reproducible deployments across environments

  • Rollback capability through git history

  • Infrastructure-as-code workflows (ArgoCD, Flux, etc.)

Qplane benefits:

  • Real-time dashboards and traffic visualization

  • Object storage search and retrieval

  • Alerting and issue detection

  • No infrastructure to manage for the control plane

The tradeoff: Configuration lives in git, not Qplane's UI. Changes made in Qplane won't affect your deployed agents.


How It Works

Qtap agents run with your git-managed configuration but still send telemetry to Qplane. You get GitOps workflow control with Qplane's visualization capabilities.


Step 1: Configure in Qplane

Start by setting up your configuration in Qplane's UI:

  1. Configure your stacks, plugins, and capture rules

  2. Set up error detection rules

  3. Configure PII/sensitive data monitors

  4. Define endpoint-specific behaviors

  5. Set up tagging for your environment

Use the UI to experiment and validate your configuration before committing to git.


Step 2: Export Your Configuration Snapshot

Once your configuration is ready:

  1. Navigate to Settings → Snapshot

  2. Copy the YAML configuration

The snapshot includes everything:

  • Services (event stores, object stores)

  • Stacks and plugins configuration

  • Tag extraction rules

  • Tap settings (direction, filters, endpoints)

Example snapshot:

circle-info

The pulse event store with your REGISTRATION_TOKEN is what connects Qtap to Qplane. Events and metrics flow to Qplane for visualization even though configuration is managed through git.

How object storage works with Qplane:

When you configure your own S3 object store, the access_url tells Qplane how to link to your stored objects. When you investigate a connection in the Qplane UI that was captured by a rule (like detect_errors), Qplane renders a direct link to your S3 using this URL template.

For example, with access_url: http://100.75.117.58:3904/qpoint/{{DIGEST}}, clicking on a captured request in Qplane opens your object directly from your storage. Your sensitive HTTP payloads stay in your infrastructure while Qplane provides the search and navigation interface.


Step 3: Secure Your Secrets

The snapshot references secrets via environment variables - it doesn't contain the actual values:

This means the snapshot is safe to commit to git. But you need to provision the actual secret values separately using your secret management solution.

Secrets You'll Need

Secret
Purpose
Where to Find

REGISTRATION_TOKEN

Connects Qtap to Qplane for telemetry

Settings → Environments → Manage → Copy Registration Token

S3_ACCESS_KEY

Object store authentication (if using S3)

Your S3 provider

S3_SECRET_KEY

Object store authentication (if using S3)

Your S3 provider

With External Secrets Operator

External Secrets Operatorarrow-up-right syncs secrets from your vault to Kubernetes:

With Sealed Secrets

Sealed Secretsarrow-up-right encrypts secrets for safe git storage:

Commit sealed-qtap-secrets.yaml to git. The Sealed Secrets controller decrypts it in-cluster.

With HashiCorp Vault Agent

If using Vault Agent Injector, annotate your Qtap deployment to inject secrets:

Referencing Secrets in Helm

Once your secrets exist in the cluster, reference them in your Helm deployment:

circle-check

Step 4: Commit Snapshot to Git

Save the exported snapshot directly to your infrastructure repository:

circle-exclamation

Deploying with Helm:

The Qtap Helm chart accepts your config file directly via --set-file:

The chart creates the necessary ConfigMap from your file automatically.

For complete Helm installation instructions, see:


Step 5: Deploy via GitOps

With ArgoCD

With Flux

Manual Helm


Configuration Drift

circle-exclamation

To update configuration:

  1. Make changes in Qplane UI

  2. Test and validate in the Qplane interface

  3. Export a new snapshot

  4. Replace the config in your git repository

  5. Submit a pull request for review

  6. Merge and let GitOps sync the changes

triangle-exclamation

User Permissions

To prevent accidental configuration drift from UI changes:

  1. Navigate to Settings → Team Members

  2. Set most users to Viewer role

  3. Reserve Admin or Editor roles for config managers

Viewers can:

  • Access all dashboards and visualizations

  • Search and view captured objects

  • See alerts and issues

Viewers cannot:

  • Modify stacks or plugins

  • Change capture rules

  • Alter endpoint configurations

This ensures the git repository remains the authoritative source while your team still benefits from Qplane's visualization.


What You Get from Qplane

Even with GitOps-managed configuration, Qplane provides:

Feature
Description

Traffic Dashboards

Real-time visibility into all captured traffic

Vendor Inventory

Automatic discovery of external APIs

Object Search & Retrieval

Find captured payloads and click through to your S3 storage

Issue Detection

Alerts based on your detect_errors rules

PII Monitoring

Results from qscan plugin analysis

Usage Metrics

Performance data from report_usage plugin

The pulse event store streams all this data to Qplane regardless of how the configuration was deployed.

circle-info

Why Qplane for object search? When Qtap captures a request/response to your S3, Qplane indexes the metadata and provides a searchable interface. Click any captured connection to open the full payload directly from your storage via the access_url you configured. Without Qplane, you'd need to build your own search and retrieval tooling.


Environment-Specific Configuration

If you need different configurations per environment (dev, staging, prod), manage them as separate snapshots in Qplane:

  1. Create separate Qplane environments or organizations

  2. Configure each environment appropriately in the UI

  3. Export a snapshot for each environment

  4. Store each snapshot in your git repository under environment-specific paths

This keeps each environment's configuration as a complete, unmodified snapshot from Qplane rather than trying to patch or overlay configurations.


Workflow Summary

Step
Where
Action

1

Qplane UI

Configure and experiment

2

Qplane Settings

Export snapshot

3

Vault

Store secrets (token, S3 keys)

4

Git

Commit snapshot + secret references

5

CI/CD

Review via pull request

6

GitOps

Deploy to clusters

7

Qplane

Monitor and visualize


What's Next

Last updated