Skip to main content
Quint on Kubernetes is early access. The Quint container images, the Helm charts and the admission webhook are not available for download. Your Quint contact gives you each of them, with the image digests for your release, so talk to your Quint contact before you plan an install.
At the end of this page your agent runs in a Kubernetes pod beside Quint, and its runs appear on the Workloads page. You need a cluster that meets the requirements, the Quint admission webhook running in it, kubectl and helm, and the Admin or Owner role in the Quint dashboard. Ask your Quint contact for the quint-sidecar chart and the image digests for your release.

What the chart runs

The chart renders your agent container, unchanged, and three Quint containers in this order. The webhook refuses any other order. The chart sets the agent’s HTTPS_PROXY, HTTP_PROXY and ALL_PROXY to http://127.0.0.1:9090, and its CA bundle variables, such as SSL_CERT_FILE, to /quint/ca/ca-certificates.crt. If the agent unsets the proxy variables, its traffic is dropped.
1

Set up the workload and its key

On the Workloads page, set up a workload and create a key. The workload’s name is the value you give as quint.workload. Save the key to a file, workload.key.
2

Create and label the namespace

The quintai.dev/governed=true label sends every pod in the namespace to the admission webhook.
3

Store the workload key

The chart takes the key from an existing Secret, never as a value. Only quint-sidecar mounts it; the agent never sees it.
4

Install the chart

The quint-sidecar chart, the two Quint images and their digests come from your Quint contact. They are not available for download.Pin both Quint images by digest. The webhook admits Quint images pinned by digest only, and only the digests it was started with.
workload.kind is Job by default, one pod for one run. Pod and Deployment work too. In a values file, quote the user ID: agentUID: "10002".
5

Declare your agent's harness version

Quint can’t see inside your agent image, so tell it which agent harness and version the image ships. Quint accepts only the versions it knows. Before you set this, ask your Quint contact which harness versions your Quint release knows, and build your agent image with one of them.
Quote every version, and list the version the image really ships. You can list up to 16 harnesses.
  • If you set a version Quint knows, an action that matches a rule asking for approval waits for an approver.
  • If you leave this out, every rule that asks for approval denies the action straight away, because Quint can’t tell how long the harness will wait for an answer.
  • If you list a version Quint doesn’t know, the Quint sidecar refuses to start, so the agent container never starts and the pod stays cut off.
6

Install the status policy once per cluster

The webhook does not judge pod status updates. A Kubernetes ValidatingAdmissionPolicy, quint-status-annotations, refuses status updates that add, change or remove Quint’s quintai.dev/* annotations, or add container runtime annotations. Install it in exactly one release with --set statusPolicy.create=true, or apply it with the webhook’s own command (quint-admission comes from your Quint contact):
Without it, a status update can change Quint’s annotations on a pod without being checked.
7

Check the run

Open the workload on the Workloads page. A run appears on the first container start. Quint also records a status on the run, such as contained or unverified, which the page does not show. See Status recorded for runs.

What your agent can’t do

  • Serve kubelet probes or a Service. The agent can reach only 127.0.0.1:9090, so httpGet, tcpSocket and grpc probes time out. The chart refuses them; use exec probes.
  • Run as root or add privileges. The chart writes the agent’s security settings itself. agent.securityContext accepts only runAsGroup, readOnlyRootFilesystem, seLinuxOptions and appArmorProfile.
  • Use a pod fsGroup or, in this setup, pod-level supplementalGroups. Give the agent its group with agent.securityContext.runAsGroup.
  • Mount hostPath or inline csi volumes. Agent volumes may be emptyDir, configMap, secret, persistentVolumeClaim, downwardAPI and projected (from configMap, secret or downwardAPI only).
To give the agent a writable volume without fsGroup, use an emptyDir, a PersistentVolume already owned by the agent’s user ID, or a PersistentVolumeClaim whose StorageClass sets the owner at mount time (for example SMB CSI mountOptions: [uid=10002, gid=10002], or EFS CSI access-point uid and gid).

Upgrades

The webhook admits only the Quint image digests it was started with, so add the new digests to the webhook before you upgrade the chart’s images. The new chart, images and digests come from your Quint contact. Leave workload.terminationGracePeriodSeconds at 90 seconds or more, so a run has time to stop.

If this fails

Next