Agent-SRE Helm Chart 实战指南:在 Kubernetes 上部署 AI 代理可靠性引擎与 AgentRollout 渐进式发布
2026/9/18 23:01:32 网站建设 项目流程

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 中:

字段说明
apiVersionv2Helm 3 兼容的 Chart 规范版本
nameagent-sreChart 名称,也是默认资源名前缀
typeapplication应用型 Chart(区别于 library 型)
version0.1.0Chart 自身版本,用于版本回滚与升级
appVersion"0.1.0"应用版本,作为镜像 tag 的默认值
descriptionReliability 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是一个开关:只有置为trueOTEL_EXPORTER_OTLP_ENDPOINTOTEL_SERVICE_NAME才会被写入容器环境。这与 Agent-SRE 内置的 OpenTelemetry 导出器(见 src/agent_sre/integrations/otel/ 的traces.pymetrics.py)配合,可将 SLO、追踪数据送往 Grafana、Prometheus、Jaeger 等 OTLP 兼容后端。

对于更复杂的配置(如多副本、资源配额、亲和性),建议直接编辑 values.yaml 后使用-f指定文件安装,而非堆叠大量--set

2.3 内置健康检查

模板在 Deployment 中自动注入了两类探针(deployment.yaml):

  • livenessProbeGET /healthinitialDelaySeconds=5periodSeconds=10,探活失败将重启容器;
  • readinessProbeGET /healthinitialDelaySeconds=3periodSeconds=5,就绪前不会接收流量。

/health端点由 Agent-SRE 的 REST API 服务提供(见 src/agent_sre/api/server.py),这也是api.enabled默认开启的原因——健康检查依赖 API 端口。

三、Configuration:全部参数、默认值与底层语义

原文档的配置表是部署的核心依据。下表完整保留原表,并补充 values.yaml 中已定义但原表未列出的参数,供完整参考:

3.1 原文档参数表(完整继承)

ParameterDescriptionDefault
replicaCountNumber of replicas1
image.repositoryContainer imageghcr.io/microsoft/agent-governance-toolkit/agent-sre
image.tagImage tagappVersion
service.typeService typeClusterIP
service.portService port8080
api.enabledEnable REST APItrue
otel.enabledEnable OTEL exportfalse
otel.endpointOTLP endpoint""
fleet.enabledEnable fleet managementtrue
crd.installInstall AgentRollout CRDtrue

3.2 values.yaml 中可进一步定制的参数

ParameterDescriptionDefault
image.pullPolicy镜像拉取策略IfNotPresent
api.portREST API 容器端口(同时注入AGENT_SRE_PORT8080
resources.limits.cpu/resources.limits.memoryCPU/内存上限500m/256Mi
resources.requests.cpu/resources.requests.memoryCPU/内存请求100m/128Mi
nodeSelector节点选择器{}
tolerations污点容忍[]
affinity亲和性规则{}
slo.enabled启动时加载 SLO 模板开关true
slo.templatesSLO 模板名称列表(如coding-agentcustomer-support-agent[]
otel.serviceNameOTLP 导出的服务名agent-sre
fleet.heartbeatTimeoutSeconds舰队心跳超时(秒)300
fleet.successRateThreshold舰队成功率阈值0.9

参数语义说明(均有模板或源码佐证):

  • api.portservice.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: gte

4.2 spec 字段与校验约束(源自 CRD schema)

字段类型/约束说明
descriptionstring可选,发布说明
strategyenum:canary/shadow/blue_green,默认canary发布策略
currentobject(name/version/image/model当前线上版本描述
candidateobject,必填,其中nameversion必填目标候选版本描述
stepsarray分阶段流量推进步骤
rollbackConditionsarray自动回滚触发条件
sloRequirementsarray(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子资源包含phasecurrentStepcurrentWeightconditions等字段,供控制器回写进度。

4.3 与源码引擎的对应关系

CRD 中的strategy枚举与 rollout.py 中的DeploymentStrategy一一对应:

class DeploymentStrategy(Enum): SHADOW = "shadow" CANARY = "canary" BLUE_GREEN = "blue_green"

该模块还定义了RolloutStatepending/shadow/canary/promoting/complete/rolled_back/failed/paused),对应 CRDstatus.phase的可能取值。steps[].weight的语义同样有源码印证——RolloutStep.weight的注释明确为 "0.0 to 1.0 — fraction of traffic to candidate"(候选版本流量占比);rollbackConditionsoperator则对应AnalysisCriterioncomparatorgte/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.yamlappVersion即可自动切换镜像 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.enabledslo.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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询