K8s 特权命令配置说明
本文说明如何通过系统字典配置 Kubernetes 智能体的只读/特权命令策略,适用于 YAML 变更、Helm 发布等场景。配置完成后无需重启服务,保存字典即可生效。
配置入口
- 使用租户管理员或平台管理员账号登录控制台。
- 进入 系统管理 → 字典管理。
- 在字典列表中找到对应字典类型,编辑或新增字典项(见下表)。
- 保存后,K8s 智能体在下次执行命令时即按新策略生效。
字典与系统参数的通用说明见 平台管理 · 字典与系统参数。
一、总开关:是否启用特权拦截
| 配置项 | 值 |
|---|---|
| 字典类型 | safety_protection(智能体-安全防护) |
| 标签(label) | privileged_block |
| 显示名称 | 特权命令阻断 |
字典值说明
| 字典值 | 含义 |
|---|---|
1 | 开启。只读命令可直接执行;变更类命令必须走特权审批流程。 |
0 | 关闭。不区分只读与特权,AI 提交的 kubectl / helm 命令均可直接执行(生产环境不建议)。 |
建议
- 生产环境:设为
1,与审批流程配合使用。 - 开发/测试环境:可按需设为
0,便于快速验证;上线前务必改回1。
二、kubectl 特权动词列表
控制哪些 kubectl 子命令属于「特权操作」,命中后须审批才能执行。
| 配置项 | 值 |
|---|---|
| 字典类型 | privileged_cmd_list(特权命令列表) |
| 标签(label) | k8s_privileged_list |
| 显示名称 | K8s 特权 kubectl 动词列表(可按实际菜单名称为准) |
字典值格式
- 多个动词用英文逗号分隔,不区分大小写(系统会自动统一处理)。
- 填写的是 kubectl 的第一个子命令(动词),例如
apply、delete,而不是完整命令行。
示例:
DELETE,APPLY,CREATE,PATCH,SCALE,ROLLOUT
未配置时的默认行为
若租户下未维护该字典项,平台使用内置默认列表(见下文「默认 kubectl 特权动词」)。
默认 kubectl 特权动词及含义
| 动词 | 典型用途 | 风险说明 |
|---|---|---|
DELETE | 删除 Pod、Deployment、Service 等资源 | 可能导致服务中断 |
APPLY | 应用 YAML 清单,发布或更新 workload | 会改变集群实际状态 |
CREATE | 创建新资源 | 会新增集群对象 |
PATCH | 局部修改资源字段 | 会改变资源配置 |
EDIT | 在线编辑资源 | 会改变资源配置 |
REPLACE | 替换整个资源 | 会覆盖现有配置 |
SCALE | 调整副本数 | 影响实例数量与容量 |
ROLLOUT | 滚动发布、回滚 Deployment 等 | 影响运行版本 |
RUN | 临时运行 Pod | 可能在集群中启动新 workload |
EXPOSE | 暴露 Service | 改变网络访问方式 |
SET | 修改镜像、资源限制等 | 改变运行参数 |
CORDON / UNCORDON | 标记节点不可/可调度 | 影响调度策略 |
DRAIN | 驱逐节点上 Pod | 可能导致业务迁移或中断 |
TAINT / LABEL / ANNOTATE | 修改节点或资源标签/污点 | 影响调度与策略 |
CP | 与 Pod 之间拷贝文件 | 涉及文件写入 |
EXEC / ATTACH / DEBUG | 进入容器或调试 | 可在容器内执行命令 |
PORT-FORWARD / PROXY | 端口转发或代理 | 改变访问路径 |
AUTOSCALE | 配置 HPA 等自动伸缩 | 影响弹性策略 |
不受字典控制的 kubectl 只读操作(开启总开关时可直接执行)
以下类型命令不在特权列表中即可直接执行,例如:
| 类型 | 示例 |
|---|---|
| 查询 | get、describe |
| 日志与监控 | logs、top |
| 发布前预览 | diff |
| 集群信息 | cluster-info、version |
| 说明与等待 | explain、wait |
三、Helm 特权子命令列表
控制哪些 helm 子命令属于「特权操作」,与 kubectl 分开配置,互不影响。
| 配置项 | 值 |
|---|---|
| 字典类型 | privileged_cmd_list(特权命令列表) |
| 标签(label) | k8s_helm_privileged_list |
| 显示名称 | K8s 特权 Helm 子命令列表(可按实际菜单名称为准) |
字典值格式
- 多个子命令用英文逗号分隔,不区分大小写。
- 填写的是 helm 的第一个子命令,例如
upgrade、install。
示例:
INSTALL,UPGRADE,ROLLBACK,UNINSTALL,DELETE
未配置时的默认行为
若租户下未维护该字典项,平台使用内置默认列表(见下文「默认 Helm 特权子命令」)。
默认 Helm 特权子命令及含义
| 子命令 | 典型用途 | 风险说明 |
|---|---|---|
INSTALL | 首次安装 Chart | 会在集群中创建新 release |
UPGRADE | 升级 Chart 版本或 values | 会变更已发布应用 |
ROLLBACK | 回滚到历史版本 | 会改变运行版本 |
UNINSTALL | 卸载 release | 会删除 Chart 部署的资源 |
DELETE | 删除 release(视 Helm 版本) | 同卸载,影响已发布应用 |
TEST | 对 release 执行测试钩子 | 可能在集群中触发 Job 等 |
PUSH / PULL | 推送或拉取 Chart 包 | 涉及制品仓库与版本 |
REPO | 仓库增删改(repo add/remove/update 等) | 改变本地 Chart 源;repo list 为只读,不在此列 |
不受字典控制的 Helm 只读操作(开启总开关时可直接执行)
| 类型 | 示例 |
|---|---|
| 查看 release | list、status、history、get |
| 发布前预览 | template、show |
| 检索 Chart | search |
| 查看仓库 | repo list |
| 版本信息 | version |
四、配置项对照总表
| 用途 | 字典类型 | 标签(label) | 字典值示例 |
|---|---|---|---|
| 特权拦截总开关 | safety_protection | privileged_block | 1 或 0 |
| kubectl 特权动词 | privileged_cmd_list | k8s_privileged_list | DELETE,APPLY,SCALE,... |
| Helm 特权子命令 | privileged_cmd_list | k8s_helm_privileged_list | INSTALL,UPGRADE,ROLLBACK,... |
五、典型发布场景与审批关系
| 业务场景 | AI 常用命令类型 | 是否需审批(总开关=1 时) |
|---|---|---|
| 查看 Pod / 事件 / 日志 | kubectl 只读 | 否 |
| 发布前对比 YAML 差异 | kubectl diff | 否 |
| 应用 YAML 发布 | kubectl apply | 是(命中 kubectl 特权列表) |
| 调整副本、滚动发布 | scale / rollout | 是 |
| 预览 Chart 渲染结果 | helm template | 否 |
| 查看 release 状态 | helm status / list | 否 |
| Chart 安装或升级 | helm install / upgrade | 是(命中 Helm 特权列表) |
| Chart 回滚 | helm rollback | 是 |
审批在 AI 对话界面进行:审核人可通过或拒绝后再执行,全程留痕。
六、推荐配置示例
生产环境(严格)
| 字典项 | 建议值 |
|---|---|
privileged_block | 1 |
k8s_privileged_list | 保持默认全量,或按最小权限删减(删前请评估业务是否需要 EXEC、APPLY 等) |
k8s_helm_privileged_list | INSTALL,UPGRADE,ROLLBACK,UNINSTALL,DELETE |
测试环境(适度放宽)
| 字典项 | 建议值 |
|---|---|
privileged_block | 1(仍建议保留审批习惯) |
k8s_privileged_list | 可按需减少,例如仅保留 DELETE,APPLY,SCALE |
k8s_helm_privileged_list | INSTALL,UPGRADE,ROLLBACK,UNINSTALL |
七、跳板机环境要求(实施侧)
K8s 智能体通过已纳管的 K8s 集群实例执行命令,请确保该实例对应跳板机已安装:
| 组件 | 是否必须 | 说明 |
|---|---|---|
kubectl + 有效 kubeconfig | 必须 | 所有 K8s 操作的基础 |
helm | Chart 发布时必须 | 仅 YAML 发布可暂不装 |
jq / yq | 建议安装 | 便于解析输出、处理 values 文件 |
八、常见问题
Q:kubectl 和 helm 共用一条字典吗?
A:不共用。kubectl 用 k8s_privileged_list,Helm 用 k8s_helm_privileged_list,需分别维护。
Q:从特权列表里删掉某个动词会怎样?
A:该动词将不再被视为特权操作;在总开关开启时,AI 可能通过只读通道直接执行(请谨慎删减)。
Q:总开关关闭后,字典还有效吗?
A:总开关为 0 时,不再拦截特权命令,kubectl / helm 特权列表不生效。
Q:修改字典后需要重启吗?
A:不需要。保存字典后下次 AI 执行命令时即读取最新配置。
