Skip to main content

The paqtra CLI

One binary installs, checks and operates Paqtra, the way cilium does for Cilium. The Helm chart is built in, so nothing else needs to be downloaded by hand.

Install the CLI​

# Linux and macOS (amd64 / arm64): downloads, verifies and installs the latest release
curl -fsSL https://raw.githubusercontent.com/zyvorai/paqtra/main/install.sh | sh

# a specific version, or somewhere other than /usr/local/bin
curl -fsSL https://raw.githubusercontent.com/zyvorai/paqtra/main/install.sh | sh -s -- --version 2.2.0 --install-dir ~/.local/bin

# Homebrew
brew install zyvorai/tap/paqtra

install.sh checks the download against the release's sha256sums.txt and refuses to install on a mismatch or a missing checksum. If cosign is installed it also verifies the checksum file's signature. By hand:

V=2.2.0; OS=linux; ARCH=x86_64 # macos, aarch64 also exist
curl -fsSLO https://github.com/zyvorai/paqtra/releases/download/v$V/paqtra-$V-$OS-$ARCH.tar.gz
curl -fsSLO https://github.com/zyvorai/paqtra/releases/download/v$V/sha256sums.txt
curl -fsSLO https://github.com/zyvorai/paqtra/releases/download/v$V/sha256sums.txt.sigstore.json
sha256sum -c --ignore-missing sha256sums.txt
cosign verify-blob --bundle sha256sums.txt.sigstore.json \
--certificate-identity-regexp '^https://github.com/zyvorai/paqtra/\.github/workflows/release\.yml@refs/tags/v' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com sha256sums.txt

Developers can build from a checkout with ./install.sh --from-source.

Install Paqtra into a cluster​

paqtra install # uses the current kube-context
paqtra status --wait # exits 0 only when Paqtra, Cilium and Hubble Relay are healthy
paqtra ui # port-forward the console and open it

paqtra install first checks the prerequisites and stops on a failure:

CheckFails whenWarns when
Kubernetesolder than 1.25older than 1.28
Ciliumnot running, or older than 1.14older than 1.19, or agents not ready
Hubbledisabled in cilium-configno enable-hubble key
Hubble Relaymissing or not ready
RBACcannot create ClusterRoles / bindings / CiliumNetworkPolicies
StorageClassnone is default and persistence is on

No Cilium yet? paqtra install --with-cilium installs it first, with Hubble, Relay and metrics on (skipped if a Cilium is already running, whoever installed it).

Version model​

CLI vX installs chart vX, whose default image tags are vX. Another version comes from the OCI registry:

paqtra install --list-versions
paqtra install --version 2.1.0

Common flags (install and upgrade)​

FlagMeaning
--context, --kubeconfig, -n/--namespace, --releasewhich cluster and release (global: work before or after the command)
--version X.Y.Zchart/app version (default: this CLI's)
-f/--values FILE, --set k=v, --set-string, --set-fileHelm values; your --set beats --registry
--registry PREFIXpull paqtra-api, paqtra-ui, paqtra from a mirror
--dry-runrender and validate against the cluster, change nothing
--atomicroll back if it does not become ready
--no-wait, --wait-duration 5mdo not wait / how long to wait
--skip-preflight (install)install even if a prerequisite check fails
--reset-values (upgrade)drop the release's previous values
--chart-directory DIRuse a chart from disk instead of the built-in one

paqtra upgrade keeps your values and takes new chart defaults (--reset-then-reuse-values on Helm 3.14+).

Helm​

helm is used from PATH (3.8+), or from --helm-path / $PAQTRA_HELM. If there is none, a pinned Helm is downloaded once into ~/.paqtra/bin, verified against a checksum built into the CLI. For air-gapped hosts pass --no-download-helm (or PAQTRA_NO_DOWNLOAD=1) and provide helm yourself.

Everyday commands​

CommandWhat it does
paqtra status [--wait] [-o json] [--local]component health; exit 1 when unhealthy
paqtra doctor [-o json]prerequisites plus crash loops, OOM kills, missing agents, Hubble ingest lag, with a fix for each
paqtra version [--client]client, installed release and running API versions, with a skew warning
paqtra infocontext, namespace, Hubble address, node and agent counts
paqtra config view [--all] / get KEY / set KEY=VALUE...the release's Helm values
paqtra hubble enable [--no-relay] [--metrics LIST] / disableswitch Hubble on the Cilium Helm release
paqtra hubble port-forward [--port 4245]forward a local port to Hubble Relay
paqtra ui [--port 8443] [--no-open]port-forward the Paqtra console
paqtra uninstall [--purge] [--yes]remove the release; --purge also deletes its PVCs (and the namespace if empty)
paqtra completion bash|zsh|fish|powershellshell completion script

Diagnose and get support​

paqtra doctor # what is wrong, and what to do about it
paqtra connectivity test # does Cilium enforce policy, end to end?
paqtra sysdump # a redacted zip for a support ticket

paqtra connectivity test​

Creates namespace paqtra-connectivity-test with an echo server and short-lived probe pods, then checks:

  1. baseline: both clients connect with no policy.
  2. enforcement: after a CiliumNetworkPolicy (applied through the CRD) only the allowed client connects and the other is blocked.
  3. restore: deleting the policy restores connectivity.
  4. flows: the API recorded a DROPPED flow for the blocked client and a FORWARDED flow for the allowed one. Needs a Paqtra API token (--api-token or PAQTRA_API_TOKEN); otherwise it is skipped, not failed.

Everything it creates is labelled paqtra.io/connectivity-test and removed afterwards (also on Ctrl-C), unless --no-cleanup. --test NAME runs one scenario, --registry PREFIX pulls the test image from a mirror, -o json is for CI. Exit code 1 on any failure.

paqtra sysdump​

Writes paqtra-sysdump-<timestamp>.zip (mode 0600) with: the doctor report, Paqtra and Cilium/Hubble Deployments, DaemonSets, Pods, Services, ConfigMaps, PVCs and events, container logs (--log-lines, --since), cilium-config, Cilium policies and nodes (--no-policies to skip), and the Helm release's values and history.

  • Kubernetes Secrets are never read, and helm get manifest (which would include rendered Secrets) is not collected.
  • Values under keys such as password, token, secret, apiKey, jwt and authorization, env entries with such names, URLs with credentials, JWTs and Bearer tokens are replaced with [REDACTED].
  • The bundle still contains pod names, IPs and policy specs. Review it before sharing. A collector that fails is listed in collection-errors.txt; the rest of the bundle is still written.

Exit codes and environment​

0success / healthy
1status, doctor or connectivity test found a problem; any command error
VariableSame as
PAQTRA_NAMESPACE, PAQTRA_RELEASE, PAQTRA_CONTEXT-n, --release, --context
PAQTRA_HELM, PAQTRA_NO_DOWNLOAD--helm-path, --no-download-helm
PAQTRA_CHART_DIR--chart-directory (an invalid path is an error, not ignored)
PAQTRA_API_TOKENconnectivity test --api-token

Using it in CI​

docker run --rm -v ~/.kube:/home/paqtra/.kube:ro ghcr.io/zyvorai/paqtra-cli:2.2.0 status --wait

The image carries paqtra and helm.