第一个开发实验

在这一章节,我们将尝试开发一个非常简单的新功能,从而熟悉 chaos-mesh 的开发框架。 chaos-mesh 的整个核心框架是 kubebuilder, 你可以通过这本教程来学习 kubebulder开发指南

现在,我们可以通过给 chaos-mesh controller 增加一个 event 事件,来作为我们第一次小改动。如果你并不了解 event,你可以通过如何排查应用 以及 Kubernetes event 中文资料 来了解。

我们可以在 controllers/podchaos_controller.goReconcile 方法返回前增加一条 event:

// Reconcile reconciles a PodChaos resource
func (r *PodChaosReconciler) Reconcile(req ctrl.Request) (result ctrl.Result, err error) {
    logger := r.Log.WithValues("reconciler", "podchaos")

    ......
    ......

    // 我们增加一条新的 event
    r.Event(chaos, v1.EventTypeNormal, "Hello World", "Hello World")
    return result, nil
}

当代码修改完以后,我们可以通过 搭建本地测试环境 来快速本地编译、搭建测试环境,并运行 chaos-mesh来验证这一改动。

当本地环境启动完毕以后,我们可以部署一个 PodChaos 到 Kubernetes 集群中查看效果:

cat <<EOF | kubectl apply -f -
apiVersion: pingcap.com/v1alpha1
kind: PodChaos
metadata:
 name: pod-kill-example
spec:
 action: pod-kill
 mode: one
 selector:
    namespaces:
      - chaos-testing
 scheduler:
   cron: "@every 5s"
EOF

当我们部署完这个 podchaos 以后,通过 kubectl describe 命令,我们可以发现该 podchaos 的 events 属性下出现了我们刚刚编写的 event:

kubectl describe podchaos pod-kill-example

......
Events:
 Type    Reason       Age                From                 Message
 ----    ------       ----               ----                 -------
 Normal  Hello World  3s (x18 over 28s)  podchaos-controller  Hello World

Last updated