You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**Kagenti Operator** is a Kubernetes operator that automates the deployment, discovery, and security of AI agents in Kubernetes clusters.
6
+
**Kagenti Operator** is a Kubernetes operator that automates the deployment, discovery, and security of AI agents in Kubernetes clusters. It provides workload identity (SPIFFE), mutual authentication (OAuth2/Keycloak), agent-to-agent trust (A2A signature verification), and observability (MLflow tracing) — all declaratively managed through Custom Resources.
7
7
8
8
## Overview
9
9
10
10
The Kagenti Operator manages the following Custom Resource Definitions (CRDs):
11
11
12
12
| Resource | Purpose |
13
13
|----------|---------|
14
+
|**[AgentRuntime](./kagenti-operator/docs/api-reference.md#agentruntime)**| Enrolls a workload into the Kagenti platform — applies labels, triggers sidecar injection, and configures identity and observability |
14
15
|**[AgentCard](./kagenti-operator/docs/api-reference.md#agentcard)**| Discovers, indexes, and verifies agent metadata for Kubernetes-native agent discovery |
15
16
16
-
Agents are deployed as standard Kubernetes **Deployments** or **StatefulSets** with the `kagenti.io/type: agent` label. The operator automatically discovers labeled workloads and creates AgentCard resources for them.
17
-
18
17
### Key Features
19
18
20
-
-**Agent Deployment** — Deploy agents using standard Kubernetes Deployments or StatefulSets with the `kagenti.io/type: agent` label
21
-
-**Dynamic Agent Discovery** — Automatic indexing of agent metadata via the A2A protocol
-**Identity Binding** — SPIFFE-based workload identity binding with allowlist enforcement
19
+
-**Declarative Agent Enrollment** — Create an `AgentRuntime` CR pointing to a clean Deployment; the operator applies labels, injects sidecars, and manages rolling updates automatically
Deploy an agent as a standard Kubernetes Deployment with the required `kagenti.io/type: agent` label:
134
+
There are two ways to deploy agents. The **AgentRuntime** approach is recommended — it keeps your workload manifests clean and provides identity, auth, and observability configuration.
135
+
136
+
#### Option 1: AgentRuntime (Recommended)
137
+
138
+
Deploy a clean Deployment and create an AgentRuntime CR:
119
139
120
140
```bash
141
+
# Deploy the agent workload
121
142
kubectl apply -f - <<EOF
122
143
apiVersion: apps/v1
123
144
kind: Deployment
@@ -126,7 +147,6 @@ metadata:
126
147
namespace: default
127
148
labels:
128
149
app.kubernetes.io/name: weather-agent
129
-
kagenti.io/type: agent
130
150
protocol.kagenti.io/a2a: ""
131
151
spec:
132
152
replicas: 1
@@ -137,7 +157,6 @@ spec:
137
157
metadata:
138
158
labels:
139
159
app.kubernetes.io/name: weather-agent
140
-
kagenti.io/type: agent
141
160
spec:
142
161
containers:
143
162
- name: agent
@@ -161,15 +180,74 @@ spec:
161
180
port: 8000
162
181
targetPort: 8000
163
182
EOF
183
+
184
+
# Enroll it with an AgentRuntime CR
185
+
kubectl apply -f - <<EOF
186
+
apiVersion: agent.kagenti.dev/v1alpha1
187
+
kind: AgentRuntime
188
+
metadata:
189
+
name: weather-agent-runtime
190
+
namespace: default
191
+
spec:
192
+
type: agent
193
+
targetRef:
194
+
apiVersion: apps/v1
195
+
kind: Deployment
196
+
name: weather-agent
197
+
EOF
164
198
```
165
199
166
-
The operator will automatically create an AgentCard for the workload and begin syncing agent metadata.
200
+
The operator will apply `kagenti.io/type: agent` labels and inject AuthBridge sidecars. The `protocol.kagenti.io/a2a` label on the Deployment triggers automatic AgentCard creation for agent discovery.
201
+
202
+
#### Option 2: Manual Labels
203
+
204
+
For quick tests, add labels directly to your Deployment:
See the [config/samples](./kagenti-operator/config/samples) directory for complete examples.
274
+
See the [config/samples](./kagenti-operator/config/samples) directory for AgentRuntime examples:
275
+
276
+
-[`agent_v1alpha1_agentruntime_basic.yaml`](./kagenti-operator/config/samples/agent_v1alpha1_agentruntime_basic.yaml) — Minimal AgentRuntime with type + targetRef
277
+
-[`agent_v1alpha1_agentruntime_full.yaml`](./kagenti-operator/config/samples/agent_v1alpha1_agentruntime_full.yaml) — With SPIFFE trust domain and OTEL trace overrides
Copy file name to clipboardExpand all lines: kagenti-operator/GETTING_STARTED.md
+4-3Lines changed: 4 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,7 +42,7 @@ This scenario demonstrates the complete lifecycle of an AI agent deployment on t
42
42
### Kagenti Operator
43
43
The Kagenti Operator discovers, indexes, and secures AI agents deployed in Kubernetes. There are two ways to enroll workloads:
44
44
45
-
1. **AgentRuntime CR (Recommended)** — Create a clean Deployment and an `AgentRuntime` CR pointing to it. The controller applies labels and triggers sidecar injection automatically. Your workload manifests stay free of kagenti-specific labels.
45
+
1. **AgentRuntime CR (Recommended)** — Create a Deployment with a `protocol.kagenti.io/a2a` label and an `AgentRuntime` CR pointing to it. The controller applies `kagenti.io/type` labels and triggers sidecar injection automatically. The protocol label enables automatic AgentCard creation for agent discovery.
46
46
2. **Manual labels** — Add the `kagenti.io/type: agent` label directly to your Deployment or StatefulSet. This is simpler for quick tests but does not provide identity or observability configuration.
47
47
48
48
> **Note:** The `Agent` Custom Resource is deprecated and will be removed in a future release.
@@ -51,9 +51,9 @@ The Kagenti Operator discovers, indexes, and secures AI agents deployed in Kuber
51
51
52
52
## Deploy an Agent with AgentRuntime (Recommended)
53
53
54
-
The AgentRuntime approach keeps your workload manifests clean — no kagenti labels required. The controller applies labels, computes a config hash, and triggers the AuthBridge webhook to inject sidecars.
54
+
The AgentRuntime approach requires only a `protocol.kagenti.io/a2a` label on your Deployment — the controller applies `kagenti.io/type`, computes a config hash, and triggers the AuthBridge webhook to inject sidecars. The protocol label tells the AgentCard sync controller which protocol the agent speaks, enabling automatic discovery.
55
55
56
-
### Step 1: Deploy a Clean Deployment
56
+
### Step 1: Deploy a Deployment with Protocol Label
0 commit comments