KubeAssert是一个kubectl插件,用于在命令行声明针对Kubernetes资源的断言(assertion)。KubeAssert是一个位于GitHub上的开源项目。

作为KubeAssert系列文章的第一篇,本文将告诉你什么是KubeAssert,如何安装并运行KubeAssert。

什么是KubeAssert

KubeAssert是一个kubectl插件,它提供了一组断言(assertion),可以用于在命令行对Kubernetes资源进行判断。利用KubeAssert,可以帮助我们检查和分析Kubernetes集群的状态,集群中资源的部署情况。例如,我们可以通过KubeAssert来判断:

  • 某个资源是否存在于当前集群中;
  • 某个资源的状态是否满足指定条件;
  • 某个资源的实例数是否小于或等于指定数值;

使用KubeAssert声明针对Kubernetes资源的断言和我们在代码里用xUnit编写单元测试中的断言非常类似。将这样的一组断言放到一个脚本文件里,可以作为针对Kubernetes集群的自动化测试的一部分,和CI/CD pipeline进行集成。

安装KubeAssert

由于KubeAssert本质上是由脚本实现的,所以它可以作为一个独立的命令在命令行执行。但同时,它也可以被安装成一个kubectl插件,这样我们就可以像执行普通的kubectl <command>命令那样执行KubeAssert了。

KubeAssert目前已被提交至krew。作为Kubernetes社区官方的kubectl插件管理工具,krew提供了krew-index,用于在社区范围内集中发布与分享kubectl插件。因此,安装KubeAssert最简单的方式就是使用krew

krew install assert

如果没有安装krew,也没关系。我们可以从GitHub库将其下载到本地,并将文件设置为可执行:

curl -L https://raw.githubusercontent.com/morningspace/kubeassert/master/kubectl-assert.sh -o kubectl-assert
chmod +x kubectl-assert

把脚本文件放到任何PATH环境变量能够找到的地方,比如:

mv ./kubectl-assert /usr/local/bin

然后,我们就可以像执行普通的kubectl命令那样调用KubeAssert了:

kubectl assert

执行上述命令,将会返回KubeAssert的帮助信息,以及一个KubeAssert当前支持的断言清单。如果在执行kubectl assert命令时指定了断言的名字以及--help参数,就会得到更多有关雨如何使用相应断言的详细信息。例如:

kubectl assert exist --help

使用KubeAssert

以下给出的是目前为止KubeAssert默认提供的所有断言:

Assertion Description
exist Assert resource should exist.
not-exist Assert resource should not exist.
exist-enhanced Assert resource should exist using enhanced field selector.
not-exist-enhanced Assert resource should not exist using enhanced field selector.
num Assert the number of resource should match specified criteria.
pod-ready Assert pod should be ready.
pod-not-terminating Assert pod should not keep terminating.
pod-restarts Assert pod restarts should match specified criteria.
apiservice-available Assert API service should be available.

这里给出了一些例子,演示了如何利用这些断言来帮助我们对Kubernetes集群中的资源进行检查。

检查foo namespace下是否存在任何满足标签app取值为echo的pod:

kubectl assert exist pods -l app=echo -n foo

检查是否所有namespace下的pod都处于就绪(ready)状态:

kubectl assert pod-ready --all-namespaces

检查pod的重启次数小于指定数值:

kubectl assert restarts pods -n foo -lt 10

小结

如你所见,KubeAssert的使用非常简单。在下一篇文章里,我将和大家分享更多有关KubeAssert使用的技巧。

如果你想了解更多有关KubeAssert的信息,请阅读它的在线文档。如果你喜欢这个项目,欢迎给它加星。同时,也非常欢迎针对该项目的任何形式的贡献,比如bug报告以及代码提交。

留下评论

您的电子邮箱地址并不会被展示。请填写标记为必须的字段。 *

正在加载...