主题
你的 LlamaCloud 安装的用户可以用代码写智能体、通过 API 部署,并得到一个位于 /deployments/<agent-name> 的 HTTP 端点,其智能体会作为集群里的一个 pod 运行。LlamaCloud 的父 ingress 已经会把 /deployments/* 路由到后端,因此不需要为智能体另做 ingress 配置。但真正负责构建并运行智能体 pod 的那些组件(一个控制面 API、一个负责调和 LlamaDeployment 自定义资源的 Kubernetes operator,以及一个用于构建产物与备份的 S3 兼容桶)住在另一个独立的 llama-agents Helm chart 里。
作为集群运维者你有两个选择:把 llama-agents 作为 LlamaCloud 的集群内子 chart 运行,或者单独管理它。集群内是常见做法。
设 llamaAgents.deploy: true,LlamaCloud chart 就会引入这个子 chart、接好后端的功能开关,并渲染一条允许智能体 pod 访问后端 8000 端口的 NetworkPolicy。
llamaAgents:
deploy: true子 chart 的 values
透传的值都放在 llama-agents-subchart 之下。完整的面在上游的 llama-agents chart README 里;下面列的是常用项。
对象存储
子 chart 需要一个 S3 兼容桶来存放构建产物、备份与 git 仓库。凭据来自一个含有 S3_ACCESS_KEY 与 S3_SECRET_KEY 的 K8s Secret。
llama-agents-subchart:
controlPlane:
objectStorage:
s3:
bucket: "my-llama-agents-bucket"
region: "us-east-1"
endpointUrl: "" # leave empty for AWS; set for MinIO/s3proxy/etc.
secretRef: "llama-agents-s3-credentials"
backupEncryptionSecretRef: "llama-agents-backup-password" # optional所有内容都在桶内以三个可配置前缀划出命名空间,因此只要前缀不冲突,一个桶就能与其他工作负载共用(包括 LlamaCloud 自己的文件存储桶)。如果你希望 S3 生命周期规则或 IAM 策略只作用于智能体产物,那么单独用一个桶会更简单。
| 键 | 默认值 | 用途 |
|---|---|---|
controlPlane.objectStorage.buildKeyPrefix | builds/ | 构建出的智能体产物 |
controlPlane.objectStorage.backupKeyPrefix | backups/ | 备份归档(设了 backupEncryptionSecretRef 时会加密) |
controlPlane.objectStorage.codeRepoKeyPrefix | git/ | 代码仓库 |
应用命名空间
智能体 pod 默认跑在独立的 llama-agents 命名空间里,而不是 LlamaCloud 的 release 命名空间。控制面与 operator 自身仍留在 release 命名空间,而 LlamaCloud chart 会自动创建这个放应用的命名空间。
llama-agents-subchart:
apps:
namespace: my-agents-ns填空字符串则让智能体 pod 与控制面、operator 一起跑在 release 命名空间里。
智能体 pod 的资源
operator 会为每个 LlamaDeployment 创建 pod。施加在这些 pod 上的 requests 与 limits 来自下列默认值:
llama-agents-subchart:
operator:
defaultAppRequests:
cpu: "750m"
memory: "2Gi"
defaultAppLimits:
cpu: "" # empty = no limit
memory: "4096Mi"
maxDeployments: 0 # per-namespace cap, 0 = unlimited若要超出「统一默认值」的范围(nodeSelector、tolerations、affinity、容器级覆盖),请设 operator.llamaDeploymentTemplate.spec.podSpec。operator 会把它作为所有被托管 pod 的基础 PodSpec。
CRD
子 chart 带两个 CRD:LlamaDeployment 与 LlamaDeploymentTemplate。Helm 的 CRD 生命周期是个别扭之处:打在 chart crds/ 目录里的 CRD 会在首次 helm install 时装上,但 helm upgrade 从不再碰它们,helm uninstall 也从不删除它们。所以全新安装开箱即用,可一旦子 chart 升了 CRD schema,不去自己动手就什么都不会更新。
为此,请单独安装配套的 llama-agents-crds chart,并按自己的节奏升级它。LlamaCloud chart 通过其 values.yaml 里的 llamaAgents.crdVersion 声明它已验证过的版本;安装时请钉到该版本:
终端窗口
helm upgrade --install llama-agents-crds \
--version <llamaAgents.crdVersion> \
oci://registry-1.docker.io/llamaindex/llama-agents-crds它使用了 helm.sh/resource-policy: keep,因此对 CRD chart 执行 helm uninstall 会把 CRD 原样留下,也不会级联删掉你的 LlamaDeployment 资源。
对于生产环境的 BYOC,我们建议从一开始就安装 llama-agents-crds,而不是依赖首次安装时的随带打包,这样 CRD 的升级就能与 LlamaCloud 的发布解耦。
单独管理的控制面
如果你想按自己的发布节奏运行 llama-agents chart、把它放在别的命名空间,或放在另一个集群里但让它的 pod 能连回本集群,就不要用 deploy: true。保持 deploy: false,并把 LlamaCloud 指向该控制面的服务地址:
llamaAgents:
controlPlaneUrl: "http://llama-agents-control-plane.llama-agents.svc.cluster.local:8000"在这种模式下,LlamaCloud chart 既不部署子 chart 也不渲染那条 NetworkPolicy,而且本集群里并不需要存在这些 CRD。请使用内网地址 —— 控制面 API 并非按暴露到公网来设计。
逃生舱
有两个开关会改变智能体 pod 与后端的通信方式。多数安装都不需要它们中的任何一个。
| 取值 | 默认值 | 何时设置 |
|---|---|---|
llamaAgents.allowBackendEgress | true | 若你自己编写 egress NetworkPolicy,就用它关掉 chart 的默认那条。只在 deploy: true 时才渲染。 |
llamaAgents.useBackendPublicUrl | false | 让智能体的 LLAMA_CLOUD_BASE_URL 走公网 ingress 域名,而不是集群内的 ClusterIP。当你的集群网络策略栈挡住了智能体到后端的 ClusterIP 流量时设它。 |
useBackendPublicUrl 是在创建 deployment 时生效的,因此已有的 deployment 在被重建之前仍会使用原来的 URL。