Available

Install Zero-Code on a cluster

Connect a Kubernetes cluster to your project with the command the console gives you, check that every node is covered, and upgrade or remove the install.

One Helm release puts Zero-Code on a cluster. It installs an operator, and the operator runs one node agent on every node.

A new install runs in monitor mode: it records what happens and denies nothing. Use this guide to connect a cluster for the first time, and later to upgrade or remove the install.

Before you begin

You need:

  • A plan that includes Zero-Code.
  • The read:kubernetes permission in your project. AuthFI permissions decide who can see a cluster in the console, not Kubernetes RBAC.
  • helm and kubectl, with access to the cluster.

The cluster must meet these requirements.

RequirementValue
Kubernetes1.30 or newer
NodesLinux on x86-64, kernel 5.18 or newer. 6.6 or newer is best.
Service proxykube-proxy in iptables mode
KernelThe BPF security module enabled, for the rules on where a workload may connect
NetworkOutbound HTTPS from the nodes to your project's issuer, the project's URL

Open the install command

In the AuthFI console, open Zero-Code > Kubernetes and choose Install on a cluster.

The Install the node agent dialog shows the command to run. You run one command per cluster, and there is nothing else to configure.

Verify the chart and images

The chart and both images are signed. The signing identity is the AuthFI release workflow.

Verify them with cosign before you install, as your own supply-chain rules require.

Run the command against the cluster

Copy the command from the dialog and run it in a shell that is connected to the cluster. Then choose Done.

Check that it works

Open Zero-Code > Kubernetes. The cluster appears in the list when its first node checks in.

ColumnShows
HealthHealthy when every node is ready, no pod is failing and the node agent is reporting
NodesThe cluster's nodes
PodsThe cluster's pods
ProtectedThe workloads whose every rule enforces
Node modeThe mode the nodes run in

Select the cluster's row to open it. Its Workloads and Services tabs fill in as the node agent discovers them.

You can also check from the cluster. List the install's AgentRuntime, the custom resource that describes it.

kubectl -n authfi-system get agentrt
NAME                READY   DESIRED   DEGRADED   ENTITLED
authfi-ebpf-agent   3       3         0          true

When READY equals DESIRED, a node agent is running on every node.

What the install creates

Everything is created in one namespace.

ObjectPurpose
Namespace authfi-systemHolds every object below
Deployment, the operatorKeeps the node agents as the AgentRuntime describes
AgentRuntime, the one custom resourceWhat you want: the project, the mode, the features
DaemonSet, the node agentOne pod on every node
Secret, the cluster's credentialHow the node agents authenticate to your project
Secret, the session keySo a browser session works whichever node serves it

The cluster's credential belongs to this cluster alone. Secret values never leave the cluster.

The node agent runs privileged, on the host's network, because it loads programs into the node's kernel. Nothing is added to your own pods, and none of them is restarted.

Change the install's settings

The AgentRuntime is the one object that describes the install. The Helm chart writes it for you.

apiVersion: authfi.io/v1
kind: AgentRuntime
metadata:
  name: authfi-ebpf-agent
  namespace: authfi-system
spec:
  issuerUrl: https://acme.authfi.io
  credentialsSecret: authfi-ebpf-agent-credentials
  mode: observe

To change a setting, set it through Helm values. Do not edit the object.

FieldDefaultMeaning
issuerUrlYour project's issuer
credentialsSecretThe Secret holding this cluster's credential
modeobserveobserve is monitor mode. enforce lets the nodes deny.
enforcementInhibitfalseThe brake, held by the cluster owner
clusterNameThe name shown in the console
features.discoverytrueList workloads and the routes they serve
features.ebpftrueSign-in and rules in front of services
features.pamfalseServer access on the nodes
nodeSelector, tolerations, resources, priorityClassNameAs for any DaemonSet

For what mode changes on the nodes, see Monitor mode and enforce mode.

Upgrade Zero-Code

Run helm upgrade on the release you installed, with the new chart version.

Node agents are replaced one node at a time. Rules already in force stay in force while a node agent restarts.

Remove Zero-Code

helm uninstall "$RELEASE"

$RELEASE is the release name in the command you ran to install.

Uninstalling hands every node back. On each node, before the release is gone:

  1. Enforcement is switched off.
  2. Every rule is cleared.
  3. Every program is unloaded from the kernel.
  4. Traffic redirection is removed.

The uninstall finishes only when every node has confirmed. If a node cannot be reached, the uninstall stops and names that node, so a node is never left enforcing rules nobody can change. For a node that is gone for good, set the annotation authfi.io/skip-decommission: "true" on the AgentRuntime to finish without it.

To hand back one service and keep the install, see Hand a service back.

Next steps