Agent-SRE Helm Chart 实战指南:在 Kubernetes 上部署 AI 代理可靠性引擎与 AgentRollout 渐进式发布
【免费下载链接】agent-governance-toolkitAI Agent Governance Toolkit — Policy enforcement, zero-trust identity, execution sandboxing, and reliability engineering for autonomous AI agents. Covers 10/10 OWASP Agentic Top 10.项目地址: https://gitcode.com/GitHub_Trending/ag/agent-governance-toolkit
导读
本文围绕仓库中 Agent-SRE 的 Helm Chart(agent-governance-python/agent-sre/deployments/helm/README.md)展开,系统讲解如何在 Kubernetes 集群上一键部署 Agent-SRE——面向 AI Agent 系统的可靠性工程层(SLO、错误预算、混沌测试、成本护栏、渐进式发布等能力均由该服务承载)。读完本文,你将掌握 Chart 的安装命令、全部可配置参数及其底层作用、随 Chart 一起安装的AgentRollout自定义资源(CRD)的完整结构与用法,并能把 canary(金丝雀)发布、流量权重、自动回滚条件与 Agent-SRE 的渐进式发布引擎(rollout.py)对应起来理解其工作原理。
一、Chart 概览:Helm v2 规范与版本约定
Chart 元数据定义在 Chart.yaml 中:
| 字段 | 值 | 说明 |
|---|---|---|
apiVersion | v2 | Helm 3 兼容的 Chart 规范版本 |
name | agent-sre | Chart 名称,也是默认资源名前缀 |
type | application | 应用型 Chart(区别于 library 型) |
version | 0.1.0 | Chart 自身版本,用于版本回滚与升级 |
appVersion | "0.1.0" | 应用版本,作为镜像 tag 的默认值 |
description | Reliability Engineering for AI Agent Systems | 明确该 Chart 的目标:为 AI Agent 系统提供可靠性工程 |
值得注意的关键约定:image.tag默认取自appVersion。该逻辑实现在 templates/_helpers.tpl 的agent-sre.imageTag模板函数中:
{{- define "agent-sre.imageTag" -}} {{ .Values.image.tag | default .Chart.AppVersion }} {{- end }}也就是说,只要在values.yaml中把image.tag留空(默认""),Helm 渲染时就会自动回退到 Chart 的appVersion,发布新版本时只需同步升级appVersion即可,无需手工维护镜像 tag。
二、安装与使用:从默认安装到自定义 values
2.1 默认安装
在仓库根目录执行:
helm install agent-sre ./deployments/helm/agent-sre该命令会基于./deployments/helm/agent-sre目录下的 templates/ 模板渲染并安装以下三类资源:
- Deployment(deployment.yaml):以
replicaCount指定的副本数运行agent-sre容器; - Service(service.yaml):仅在
api.enabled=true时创建,将 8080 端口暴露为 ClusterIP 服务; - CustomResourceDefinition(crd.yaml):仅在
crd.install=true时安装agentrollouts.agent-sre.ioCRD。
2.2 使用自定义 values 安装
原文档给出的典型场景是开启 OpenTelemetry 遥测导出:
helm install agent-sre ./deployments/helm/agent-sre \ --set otel.enabled=true \ --set otel.endpoint=http://otel-collector:4317这两个参数在 deployment.yaml 模板中会转化为容器的环境变量注入:
env: - name: AGENT_SRE_PORT value: {{ .Values.api.port | quote }} {{- if .Values.otel.enabled }} - name: OTEL_EXPORTER_OTLP_ENDPOINT value: {{ .Values.otel.endpoint | quote }} - name: OTEL_SERVICE_NAME value: {{ .Values.otel.serviceName | quote }} {{- end }}可见otel.enabled是一个开关:只有置为true,OTEL_EXPORTER_OTLP_ENDPOINT与OTEL_SERVICE_NAME才会被写入容器环境。这与 Agent-SRE 内置的 OpenTelemetry 导出器(见 src/agent_sre/integrations/otel/ 的traces.py、metrics.py)配合,可将 SLO、追踪数据送往 Grafana、Prometheus、Jaeger 等 OTLP 兼容后端。
对于更复杂的配置(如多副本、资源配额、亲和性),建议直接编辑 values.yaml 后使用-f指定文件安装,而非堆叠大量--set。
2.3 内置健康检查
模板在 Deployment 中自动注入了两类探针(deployment.yaml):
- livenessProbe:
GET /health,initialDelaySeconds=5,periodSeconds=10,探活失败将重启容器; - readinessProbe:
GET /health,initialDelaySeconds=3,periodSeconds=5,就绪前不会接收流量。
/health端点由 Agent-SRE 的 REST API 服务提供(见 src/agent_sre/api/server.py),这也是api.enabled默认开启的原因——健康检查依赖 API 端口。
三、Configuration:全部参数、默认值与底层语义
原文档的配置表是部署的核心依据。下表完整保留原表,并补充 values.yaml 中已定义但原表未列出的参数,供完整参考:
3.1 原文档参数表(完整继承)
| Parameter | Description | Default |
|---|---|---|
replicaCount | Number of replicas | 1 |
image.repository | Container image | ghcr.io/microsoft/agent-governance-toolkit/agent-sre |
image.tag | Image tag | appVersion |
service.type | Service type | ClusterIP |
service.port | Service port | 8080 |
api.enabled | Enable REST API | true |
otel.enabled | Enable OTEL export | false |
otel.endpoint | OTLP endpoint | "" |
fleet.enabled | Enable fleet management | true |
crd.install | Install AgentRollout CRD | true |
3.2 values.yaml 中可进一步定制的参数
| Parameter | Description | Default |
|---|---|---|
image.pullPolicy | 镜像拉取策略 | IfNotPresent |
api.port | REST API 容器端口(同时注入AGENT_SRE_PORT) | 8080 |
resources.limits.cpu/resources.limits.memory | CPU/内存上限 | 500m/256Mi |
resources.requests.cpu/resources.requests.memory | CPU/内存请求 | 100m/128Mi |
nodeSelector | 节点选择器 | {} |
tolerations | 污点容忍 | [] |
affinity | 亲和性规则 | {} |
slo.enabled | 启动时加载 SLO 模板开关 | true |
slo.templates | SLO 模板名称列表(如coding-agent、customer-support-agent) | [] |
otel.serviceName | OTLP 导出的服务名 | agent-sre |
fleet.heartbeatTimeoutSeconds | 舰队心跳超时(秒) | 300 |
fleet.successRateThreshold | 舰队成功率阈值 | 0.9 |
参数语义说明(均有模板或源码佐证):
api.port与service.port的区别:api.port是容器内监听端口(模板中注入AGENT_SRE_PORT环境变量,并映射为名为http的 containerPort);service.port是 Service 对外端口,通过targetPort: http转发到容器端口(见 service.yaml)。两者默认都为 8080,但可分别调整。slo.templates:对应 src/agent_sre/specs/ 目录下预置的领域 SLO 模板。以 coding-agent.yaml 为例,该模板为编码类 Agent 定义了 5 个 SLI(TaskSuccessRate目标 0.90、ResponseLatencyP95 30s、CostPerTask1.00 USD、HallucinationRate0.02、ToolCallAccuracy0.995)及 30 天错误预算窗口。使用时在 values 中写slo.templates: [coding-agent]即可在启动时加载。fleet.*:对应 Agent-SRE 的 Fleet Management(多 Agent 注册表、心跳与聚合健康)能力(src/agent_sre/fleet/),successRateThreshold=0.9表示当舰队整体成功率低于 90% 时视为不健康。
四、CRD Usage:AgentRollout 资源详解
Chart 安装时会(默认)注册agentrollouts.agent-sre.io这个 Namespaced 作用域的 CRD,其 schema 完整定义在 templates/crd.yaml 中。安装完成后即可创建AgentRollout资源来声明一次 Agent 版本的渐进式发布。
4.1 原文档示例(完整继承)
apiVersion: agent-sre.io/v1alpha1 kind: AgentRollout metadata: name: my-agent-v2 spec: strategy: canary current: name: my-agent version: v1 candidate: name: my-agent version: v2 steps: - name: canary-5 weight: 0.05 durationSeconds: 3600 - name: canary-50 weight: 0.50 durationSeconds: 7200 - name: full weight: 1.0 rollbackConditions: - metric: error_rate threshold: 0.05 operator: gte4.2 spec 字段与校验约束(源自 CRD schema)
| 字段 | 类型/约束 | 说明 |
|---|---|---|
description | string | 可选,发布说明 |
strategy | enum:canary/shadow/blue_green,默认canary | 发布策略 |
current | object(name/version/image/model) | 当前线上版本描述 |
candidate | object,必填,其中name、version必填 | 目标候选版本描述 |
steps | array | 分阶段流量推进步骤 |
rollbackConditions | array | 自动回滚触发条件 |
sloRequirements | array(name/target/indicator) | 可选的 SLO 门槛 |
steps中每个 step 的字段约束(schema 中明确限定):
name:string,步骤名;weight:number,取值范围 [0, 1],表示分配给候选版本的流量比例;durationSeconds:integer,最小值 0,该权重持续的时间;manualGate:boolean,默认false,置为true表示该步骤需要人工确认后才继续推进。
rollbackConditions中每个条件的字段约束:
metric:string,监控指标名(如error_rate);threshold:number,阈值;operator:enum,gte/lte/gt/lt四选一。
CRD 还通过additionalPrinterColumns提供了kubectl get agentrollout时直接展示的列:Strategy(.spec.strategy)、Phase(.status.phase)、Weight(.status.currentWeight)、Age,方便快速巡检发布状态。status子资源包含phase、currentStep、currentWeight、conditions等字段,供控制器回写进度。
4.3 与源码引擎的对应关系
CRD 中的strategy枚举与 rollout.py 中的DeploymentStrategy一一对应:
class DeploymentStrategy(Enum): SHADOW = "shadow" CANARY = "canary" BLUE_GREEN = "blue_green"该模块还定义了RolloutState(pending/shadow/canary/promoting/complete/rolled_back/failed/paused),对应 CRDstatus.phase的可能取值。steps[].weight的语义同样有源码印证——RolloutStep.weight的注释明确为 "0.0 to 1.0 — fraction of traffic to candidate"(候选版本流量占比);rollbackConditions的operator则对应AnalysisCriterion的comparator(gte/lte/eq),AnalysisCriterion.evaluate()会按比较器对指标值与阈值求值,决定步骤是否通过。
因此,Helm Chart 安装的 CRD 只是"声明层",真正执行渐进式发布(shadow 对比、流量切分、分析门槛、自动回滚)的是 Agent-SRE 的 delivery 引擎,二者通过同一套strategy/weight/operator语义保持契约一致。
五、升级、运维与验证建议
- 查看已渲染的资源:安装前可用
helm template agent-sre ./deployments/helm/agent-sre预览渲染结果,核对环境变量、探针与 CRD schema 是否符合预期。 - 升级发布:修改 values 后执行
helm upgrade agent-sre ./deployments/helm/agent-sre -f my-values.yaml;同步升级Chart.yaml的appVersion即可自动切换镜像 tag。 - 验证 CRD 安装:
kubectl get crd agentrollouts.agent-sre.io应显示ESTABLISHED;之后kubectl apply -f rollout.yaml创建发布对象,用kubectl get agentrollout观察Strategy/Phase/Weight列。 - 健康检查:
kubectl get pods查看就绪状态,Service 就绪后可通过kubectl port-forward svc/<release>-agent-sre 8080:8080访问 REST API(如/health、SLO 状态端点)。 - 前提与限制:本 Chart 的 CRD 为
v1alpha1版本(见 crd.yaml),API 仍处早期阶段;fleet.enabled、slo.templates等功能是否生效取决于 Agent-SRE 镜像中对应引擎是否启用,建议结合 agent-sre README 的能力矩阵(SLO Engine、Progressive Delivery、Fleet Management 等均为 Stable 状态)确认版本对应关系。
总结
Agent-SRE 的 Helm Chart 用一份声明式清单把"可靠性工程服务 + 渐进式发布 CRD"整体交付到 Kubernetes:helm install一条命令即可获得带健康检查、资源配额、OTEL 导出能力的 Deployment,同时注册AgentRolloutCRD 用于声明 canary/shadow/blue-green 发布。理解 values.yaml 中每个参数与 deployment.yaml、crd.yaml 模板的对应关系,以及 CRD 契约与 rollout.py 引擎的一致性,是安全地将 Agent 发布纳入 SRE 流程的关键。
【免费下载链接】agent-governance-toolkitAI Agent Governance Toolkit — Policy enforcement, zero-trust identity, execution sandboxing, and reliability engineering for autonomous AI agents. Covers 10/10 OWASP Agentic Top 10.项目地址: https://gitcode.com/GitHub_Trending/ag/agent-governance-toolkit
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考