本期推荐的 LitmusChaos 是一个具有跨云支持的云原生混沌工程框架。
这是一个 CNCF 沙盒项目,已被多个组织采用。它的使命是通过提供完整的混沌工程框架和相关的混沌实验来帮助 Kubernetes SRE 和开发人员发现非 Kubernetes 以及在 Kubernetes 上运行的平台和应用程序的弱点。
Litmus 最初可用于在暂存环境中运行混沌实验,最终在生产环境中运行以发现错误和漏洞,修复从而提高系统的弹性。Litmus 采用一种Kubernetes-native方法,通过自定义资源以声明的方式定义混沌意图。
用例
- 对于开发人员:在应用程序开发期间运行混沌实验,作为单元测试或集成测试的扩展。
- 对于 CI/CD 管道构建者:当应用程序在管道中遇到故障路径时,将混沌作为管道阶段运行以查找错误。
- 对于 SRE:计划和安排应用程序和/或周围基础设施的混沌实验。这种做法可以识别部署系统中的弱点并提高弹性。
Litmus的重要性
Kubernetes 正在各种基础架构上运行,从虚拟机到裸机以及它们的组合。平台的物理性质是在容器内运行的应用程序的故障来源,如上图的提示所示。下一层依赖是 Kubernetes 本身。
您的应用程序弹性实际上更多地取决于底层堆栈,而不是您的应用程序本身。一旦您的应用程序稳定下来,您在 Kubernetes 上运行的服务的弹性可能在 90% 以上的时间都依赖于其他组件和基础设施。
因此,每当底层堆栈发生更改时,验证您的应用程序弹性非常重要。不断验证是关键。升级前的鲁棒测试还不够好,主要是升级测试时不可能考虑到各种故障。这引入了混沌工程的概念。“不断验证您的服务是否能够抵御故障”的过程称为混沌工程。
Litmus特征
- 添加混沌工作流创建,混沌实验成为混沌工作流的构建块,允许用户使用顺序或并行实验执行创建更大的混沌场景。
- 添加了ChaosCenter,您可以在其中利用所有这些功能以及更多功能
工作流创建
- 来自模板、从头开始的自定义工作流程(使用 ChaosHubs)、来自预先创建的 YAML
- 混沌实验序列控制(并行和顺序步骤创建)
- 将 Singular 或 Cron 工作流创建为计划
- 根据您的用例优先考虑混沌实验
用户和团队
- 使用基于角色的访问控制创建用户
- 创建一个由多个用户组成的团队
- 验证用户
监控和可观察性
- 连接数据源(来自任何代理)并监控工作流程
- 可视化工作流运行统计数据和汇总计划
- 比较两个或多个工作流
- 上传社区中可用的共享/可下载仪表板
- 编辑查询、调整仪表板以从头开始创建自定义仪表板
- 使用来自 Prometheus 数据源的交错事件和指标实时监控混乱的影响
工作流程管理
- 使用GitOps推出自动更改
- 允许从自定义图像服务器(公共和私有)添加图像
- 测量和分析每个工作流的弹性分数
Litmus 本身是由微服务组成的。我们确保通过为 2.0 添加上述功能,将额外的微服务与现有的微服务无缝集成。Litmus 2.0 完全向后兼容。没有功能被弃用。
资源
ChaosCenter是控制 Litmus 周围发生的所有不同混沌活动的单一事实来源。从 ChaosCenter,您可以自由地管理 Litmus 的每个部分,并完全按照您想要的方式塑造您的工作流程。
Litmus 中的ChaosAgent只不过是通过 Litmus 注入 Chaos 的目标集群。应该始终有至少一个或多个 ChaosAgent 连接到 ChaosCenter。每个单独的 ChaosAgent 都可以被选为 Chaos Injection 的目标代理。
在 Litmus 中,ChaosAgent 可以分为两种类型
- 自我代理
- 外部代理
作为 Litmus 安装的一部分,Self Agent 将在 ChaosCenter 中注册为默认代理。安装程序选择安装 Litmus 的同一集群作为 Self Agent。现在,您可以从 ChaosCenter 将混乱引入这个 Self Agent 并观察结果。
由于 ChaosCenter 是跨云的,因此您可以借助命令行实用程序litmusctl将多个外部 Kubernetes 代理连接到同一台。连接后,您可以管理、监控、观察和诱导从 ChaosCenter 到相应 ChaosAgent 的混乱。
ChaosCenter 集群范围安装
使用helm
第 1 步:添加 litmus helmhelm install chaos litmuschaos/litmus –namespace=litmushelm repo add litmuschaos
https://litmuschaos.github.io/litmus-helm/helm repo list
步骤 2:创建要安装 Litmus
- ChaosCenter 可以放置在任何命名空间中,但是对于这种情况,我们选择litmus作为命名空间。
kubectl create ns litmus
第 3 步:安装 Litmus
helm install chaos litmuschaos/litmus --namespace=litmus
预期产出
NAME: chaos
LAST DEPLOYED: Tue Jun 15 19:20:09 2021
NAMESPACE: litmus
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thank you for installing litmus
Your release is named chaos and its installed to namespace: litmus.
Visit https://docs.litmuschaos.io to find more info.
注意: Litmus 使用 Kubernetes CRD 来定义混沌意图。Helm3 比 Helm2 更好地处理 CRD。在开始运行混沌实验之前,请验证是否正确安装了 Litmus。
使用kubectl
应用清单文件将安装所有必需的服务帐户配置和 ChaosCenter。
kubectl apply -f https://litmuschaos.github.io/litmus/2.8.0/litmus-2.8.0.yaml
验证安装
验证前端、服务器和数据库 Pod 是否,检查安装 Litmus 的命名空间中的 pod:
kubectl get pods -n litmus
预期产出
NAME READY STATUS RESTARTS AGE
litmusportal-server-6fd57cc89-6w5pn 1/1 Running 0 57s
litmusportal-auth-server-7b596fff9-5s6g5 1/1 Running 0 57s
mongo-0 1/1 Running 0 57s
litmusportal-frontend-55974fcf59-cxxrf 1/1 Running 0 58s
检查在安装 Litmus 的命名空间中运行的服务:
kubectl get svc -n litmus
预期产出
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
litmusportal-frontend-service NodePort 10.43.79.17 <none> 9091:31846/TCP 102s
litmusportal-server-service NodePort 10.43.30.54 <none> 9002:31245/TCP,8000:32714/TCP 101s
litmusportal-auth-server-service NodePort 10.43.81.108 <none> 9003:32618/TCP,3030:31899/TCP 101s
mongo-service ClusterIP 10.43.227.10 <none> 27017/TCP 101s
mongo-headless-service ClusterIP None <none> 27017/TCP 101s
访问
要设置并登录到 ChaosCenter,请展开刚刚创建的可用服务并复制PORT该
litmusportal-frontend-service服务
kubectl get svc -n litmus
#在剪贴板中复制 PORT 后,只需以这种方式使用您的 IP 和 PORT<NODEIP>:<PORT>即可访问 Litmus ChaosCenter。
http://172.17.0.3:30385/
172.17.0.3我的 NodeIP在哪里,30385是前端服务端口。如果使用 LoadBalancer,唯一的变化是提供一个<LoadBalancerIP>:<PORT>. 详细了解如何使用 LoadBalancer 访问 ChaosCenter
您应该能够看到 Litmus ChaosCenter 的登录页面。账号密码:
Username: admin
Password: litmus
默认情况下,您被分配一个具有所有者权限的默认项目。
在 5 分钟内运行您的第一个 Chaos 工作流程
- 从 ChaosCenter 主页或Litmus 工作流程选项卡的右上角单击计划工作流程。
择Self Agent作为混沌注入的目标ChaosAgent。这是我们将选择哪个 ChaosAgent 作为目标代理的地方。
展开第一个单选按钮(从预定义工作流模板创建新工作流)并从预定义工作流列表中选择podtato-head。
在Workflow Settings中查看工作流详细信息,您可以根据需要修改工作流的名称和描述。
查看您将要执行的 Litmus 工作流程的可视化。如果需要,此步骤还允许您编辑或修改 YAML/可调参数。我们现在只坚持默认配置。
使用滑块为作为工作流程一部分的混沌实验分配权重。这通常在有多个实验作为工作流程的一部分时使用。这些权重会影响混沌工作流程的弹性分数计算。
通过选择立即安排选项来安排 Litmus 工作流以立即和一次性执行
验证并单击完成以启动混沌注入
至此,您已经成功地使用 Litmus 安排了您的第一个 Chaos 工作流程。
—END—
开源协议:Apache-2.0 license