用途
Antithesis K8s Setup 用于为运行 Kubernetes 的客户搭建 Antithesis 测试框架(harness),目标是把系统在 Antithesis 中以基本空闲、就绪的状态启动起来。
成功标准包括:
- 部署定义存在于 antithesis/config/manifests/ 中,并引用所需的 SUT 镜像。这是一组原始 Kubernetes manifest(不使用 helm,也不使用 kustomize)。
- antithesis/config/manifests/ 是 Antithesis 运行所需的、基于 k8s 的 SUT 的最小化设置。
- 对 antithesis/config/ 执行 snouty validate 成功。
- 框架已准备好,可供 antithesis-workload 技能添加或迭代测试模板、断言和工作负载代码。
如果用户要求提交或启动运行,应使用 antithesis-launch 技能,而不要直接运行 snouty launch。
主要能力
该技能把用户已有的 Kubernetes 工件(Helm chart、Kustomize 模板或 Kubernetes manifest)转换为最小化的原始 Kubernetes manifest 集合,并通过分类步骤判断系统中哪些部分是测试所必需的、哪些 manifest 不会增强 Antithesis Kubernetes 体验,从而简化设置。
技能包含以下参考目录:
- references/landmines.md:识别对 Antithesis Kubernetes 体验有害的 manifest 类别。
- references/operator-recipes.md:用于把 operator 管理的自定义资源展开为原语的配方,在纵向分类阶段使用。
使用方式
该技能分为多个步骤,每个步骤位于不同的参考文件中。需要逐个阅读并实现,以完整设置项目。每完成一步后,检查所学内容是否推翻了先前步骤的决策;如果推翻,则返回该步骤并在继续前重做。horizontal-classification 和 vertical-classifications 需要一个工作文件,在 apply-findings 阶段应用到 manifest 上。保留这些发现,以便在 Antithesis 中使用该设置时分析发生了什么变化。
在开始运行技能时,询问用户是想从零开始,还是从过去的迭代继续。
流水线按顺序运行,但当后续步骤与先前步骤矛盾时,重新打开较早的步骤:
- references/directory-init.md:初始化 antithesis/ 目录。该目录将包含一组将在 Antithesis 中运行的 Kubernetes manifest。
- references/manifests.md:从客户的 Kubernetes 模板生成 antithesis/config/manifests/,作为一组原始 Kubernetes manifest。
- references/horizontal-classification.md:尝试判断系统的哪些部分需要测试。
- references/vertical-classification.md:丢弃某些不会增强 Antithesis Kubernetes 体验的 manifest。
- references/apply-findings.md:把分类步骤的发现应用到 manifest 上,以简化设置。
- references/validate-snouty.md:对 manifest 运行 snouty validate 并执行静态分析。
- references/validate-local.md:把 Kubernetes manifest 部署到本地 k3s 集群,确保 SUT 可正常工作。
- references/submit.md:本地测试并提交首次运行。
这些流水线阶段不是单向门。如果任何部分揭示先前的分类决策有误,返回并重新运行受影响的较早阶段,并更新 working.md。
此外,validate-local.md 步骤可能被用户跳过。如果用户跳过某一步,确保记录该步骤被跳过并继续技能。在所有部分完成之前,不要提前退出并声称任务已完成。
前置条件
- 用户必须拥有一组 Kubernetes 工件,可以是 Helm chart、Kustomize 模板或 Kubernetes manifest。
- 如果用户有 Helm chart,必须提供一个可模板化到该 Helm chart 中的 values 文件。这可以是标准的 values.yaml、带 values 字段的 ArgoCD Application,或带 values 字段的 FluxCD HelmRelease。
- 如果用户有一组 Helm chart,需确定其中哪个子集(理想情况下是单个或几个,以构成一个独立应用)将作为 Antithesis 中的被测系统。可能需要询问用户想要哪一个。不要推断单个目标 SUT 是什么。
- 用户必须已经把镜像推送到 Antithesis registry,或正在使用公共镜像。应推送的镜像是运行模板化 Helm chart 所需的所有镜像。相关说明见 references/manifests.md。
- 如果未安装 snouty,不要继续。安装选项见 https://raw.githubusercontent.com/antithesishq/snouty/refs/heads/main/README.md。
该技能会运行 kubectl、kind、k3s、kapp 来接触活跃的 Kubernetes 集群,以验证 manifest 能否在 Kubernetes 环境中启动。在运行这些命令之前先询问用户。技能只应接触它自己创建的 Kubernetes 资源,并在退出前清理它创建的所有资源。
该技能可能需要运行 helm 或 kustomize 命令来模板化 manifest。
文档依据
使用 antithesis-documentation 技能访问以下页面。优先使用 snouty docs。
- Kubernetes 设置指南:https://antithesis.com/docs/getting_started/setup_guide/setup_k8s.md
- Kubernetes 最佳实践:https://antithesis.com/docs/best_practices/k8s_best_practices.md
- 处理外部依赖:https://antithesis.com/docs/reference/dependencies.md
- 故障注入:https://antithesis.com/docs/product/fault_injection.md
术语
- SUT:被测系统。
- snouty validate:用于快速验证 Antithesis 脚手架更改的命令。详见 snouty validate --help。
- working file:跨多次遍历的实时增长工件(antithesis/scratchbook/k8s-minimization/working.md)。
- landmine:平台层构造,通常会被最小化掉,并有已知配方(Istio、cert-manager、external-secrets 等)。
限制
资料未提供该技能的具体收费、价格、平台支持范围或效果保证等信息。