Skip to main content
The operator is distributed as a Helm chart. Its image is available from ECR and GAR.

Installation

Add the Formal Helm repository:
Install the operator with an API key:
Or authenticate with OIDC. Create an OIDC integration first.
This will:
  1. Install the CRDs (FormalResource, FormalListener, FormalNativeUser, FormalPolicy)
  2. Create a ServiceAccount with the necessary RBAC permissions
  3. Deploy the operator
Configure exactly one auth method: formalAPIKey or oidc.

Configuration

Default resource requests and limits:

Image pull credentials

Azure AKS

On AKS, install azure-gar-cred before the operator. First complete the AKS identity setup.

ECR outside AWS

Install ecr-cred before the operator when the cluster lacks native ECR access. Set pullWithCredentials=true on the operator chart. Do not install ecr-cred and azure-gar-cred in the same namespace.

Configuration file

The chart mounts a ConfigMap at /etc/formal/config.yaml and sets FORMAL_CONFIG. The file holds non-secret settings:
FORMAL_API_KEY stays in a Secret. Helm adds a checksum/config annotation so ConfigMap changes roll the pod. Verify: The pod has FORMAL_CONFIG=/etc/formal/config.yaml and the mounted file matches your values.

Authentication

Use an API key or OIDC. Do not set both.

AWS OIDC

Configure AWS credentials through IRSA, EKS Pod Identity, or the standard AWS environment variables. Verify: The operator pod starts and reconciles without FORMAL_API_KEY.

Azure OIDC

Use the azure token source on AKS with Workload Identity or on Azure compute with managed identity. Set the integration ID to the ID of your Formal OIDC integration.
Enabling oidc.azure labels the pod with azure.workload.identity/use=true. This token source does not support Azure DevOps Pipelines. Verify: The operator pod starts and reconciles without FORMAL_API_KEY.