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.
restricted Pod Security level. No container in the agent’s pod has added privileges. Instead, the Quint node installer runs once per cluster and sets each governed pod’s network rules on the node. You need a cluster that meets the requirements on a supported network, the Quint admission webhook, kubectl and helm. Ask your Quint contact for the quint-sidecar and quint-node-installer charts and the image digests for your release.
Runs in the restricted setup are recorded as unverified. See Status recorded for runs.
What the node installer runs
Thequint-node-installer chart runs two DaemonSets on every node labelled quintai.dev/node-installer. install-cni chains Quint’s network plugin after your cluster’s own plugin and keeps it chained. The node agent holds the right to cut off every governed pod on its node. Both need a privileged namespace; the agent pods do not.
While a node’s chain is not confirmed, install-cni taints the node quintai.dev/netlock-unready:NoSchedule and sets its label to quintai.dev/node-installer=false. It removes the taint and sets the label to true once the chain checks out. Governed pods select quintai.dev/node-installer=true.
1
Register the nodes
Register each node that will run governed pods with the label
quintai.dev/node-installer=false and the startup taint quintai.dev/netlock-unready:NoSchedule, through kubelet --node-labels and --register-with-taints or your node group’s labels and taints. A governed pod on a node without the installer gets no network rules, so its Quint sidecar refuses to start.2
Install the node installer
The List every restricted agent namespace in
quint-node-installer chart, its image and the image digest come from your Quint contact. They are not available for download.Install it in a namespace labelled pod-security.kubernetes.io/enforce=privileged. plugin.resolvers is required: give the cluster DNS service address (the kube-dns ClusterIP). The release name may be at most 32 characters.plugin.governedNamespaces. Then no pod there starts without Quint, static pods included. If you set plugin.allowPrivate, it must match QUINT_ALLOW_PRIVATE_CIDRS on the Quint sidecar.3
Create and label the agent namespace
4
Install the agent chart
Install Set
quint-sidecar as in the standard setup, with qhelper.mode=node-installer. The pod then holds only the Quint sidecar and your agent. The chart, the Quint sidecar image and its digest come from your Quint contact.quint.harnessVersions too, so rules that ask for approval wait for an approver. Quint accepts only the harness versions it knows, so ask your Quint contact which ones before you set it. Without it, every rule that asks for approval denies the action straight away. See the “Declare your agent’s harness version” step in the standard setup.Cilium
Chain Quint inside Cilium’s own CNI configuration. Put a list that holdscilium-cni followed by exactly the node installer’s plugin configuration (the plugin.json key of the <release>-quint-node-installer ConfigMap) in a ConfigMap, and point Cilium’s Helm value cni.configMap at it. Keep cni.exclusive=true.
Store the list under the key cni-config. That is the key Cilium reads unless you changed its Helm value cni.configMapKey; under any other key Cilium finds no configuration. The list is a complete CNI configuration list, so it also carries cniVersion and name, as Cilium’s own list does. Create the ConfigMap in Cilium’s namespace:
socketLB.enabled, also set socketLB.hostNamespaceOnly=true. The Quint sidecar’s DNS depends on it.
The node installer then writes no list of its own, and keeps the node closed while Cilium’s entry differs from its own configuration. With Cilium’s defaults (no cni.configMap), Cilium removes the installer’s list each time it is written. After three removals in ten minutes the node installer refuses that network plugin: the node stays closed, the installer retries once a minute, and its log names the fix.
Take a node out
Remove thequintai.dev/node-installer label. Setting it to false by hand does not work, because install-cni sets it back. With the label gone, both DaemonSets and every governed pod leave the node.
Upgrades
Upgrade the node installer and thequint-sidecar images to the same Quint release, together. The new charts, images and digests come from your Quint contact. The Quint sidecar refuses to start unless the node’s network rules match the ones its own release builds, so a mixed pair refuses every governed pod.
The node agent is replaced one node at a time. While it is away, governed pods keep their network rules, and Quint denies every tool call and closes its proxy. A pod is cut off for good only if the agent is away for more than 90 seconds, so pre-pull the new image on a slow registry before you upgrade.