kom v0.1.3 已经发布,Kubernetes 操作工具
kom v0.1.3 已经发布,Kubernetes 操作工具
此版本更新内容包括:
SQL功能主要特点
-
支持所有资源类型
Kom 支持查询 Kubernetes 集群内注册的所有资源类型,包括内置的资源(如 Pod、Deployment、Service 等)和自定义资源(CRD)。无论是 Kubernetes 内置资源还是自定义 CRD,您都可以通过 SQL 查询快速访问。 -
灵活的查询条件
使用 SQL 查询时,支持常见的查询操作符,如=,!=,>=,<=,<>,like,in,not in,and,or,between,方便用户根据需要进行筛选。 -
简洁高效
只需要通过一个 SQL 语句,就可以完成对 Kubernetes 资源的查询操作。并且查询字段默认支持*,返回所有资源字段。 -
支持排序
您可以通过指定排序字段,对查询结果进行排序。默认按创建时间倒序排列,方便查看最新的资源状态。
使用示例
// 查询kube-system、default命名空间下的pod,并按创建时间倒排。
sql := "select * from pod where `metadata.namespace`='kube-system' or `metadata.namespace`='default' order by `metadata.creationTimestamp` desc "
var list []v1.Pod
err := kom.DefaultCluster().Sql(sql).List(&list).Error
for _, d := range list {
fmt.Printf("List Items foreach %s,%s at %s \n", d.GetNamespace(), d.GetName(), d.GetCreationTimestamp())
}
查询 Kubernetes 内置资源
sql := "select * from pod where `metadata.namespace`='kube-system' or `metadata.namespace`='default' order by `metadata.creationTimestamp` asc"
var list []v1.Pod
err := kom.DefaultCluster().Sql(sql).List(&list).Error
for _, d := range list {
fmt.Printf("List Items foreach %s,%s at %s \n", d.GetNamespace(), d.GetName(), d.GetCreationTimestamp())
}
在上述代码中,我们使用 SQL 语句查询了 pod 资源,筛选出了 kube-system 和 default 命名空间中的 Pod,并按创建时间升序排列。
查询 CRD 资源
sql := "select * from vm where (`metadata.namespace`='kube-system' or `metadata.namespace`='default')"
var list []unstructured.Unstructured
err := kom.DefaultCluster().Sql(sql).List(&list).Error
for _, d := range list {
fmt.Printf("List Items foreach %s,%s\n", d.GetNamespace(), d.GetName())
}
在这个示例中,查询了 kubevirt 的自定义资源 vm,可以快速筛选出特定命名空间的资源信息。
链式调研查询SQL
// 查询pod 列表
err := kom.DefaultCluster().From("pod").
Where("`metadata.namespace` = ? or `metadata.namespace`= ? ", "kube-system", "default").
Order("`metadata.creationTimestamp` desc").
List(&list).Error
如何开始
- 将 Kom 集成到您的项目中,可以通过 GitHub 获取源代码并根据文档进行配置。
- 根据需要编写 SQL 查询语句,灵活筛选和排序 Kubernetes 资源。
- 使用
Sql()方法与集群交互,获取查询结果。
安装
import (
"github.com/weibaohui/kom"
"github.com/weibaohui/kom/callbacks"
)
func main() {
// 注册回调,务必先注册
callbacks.RegisterInit()
// 注册集群
defaultKubeConfig := os.Getenv("KUBECONFIG")
if defaultKubeConfig == "" {
defaultKubeConfig = filepath.Join(homedir.HomeDir(), ".kube", "config")
}
_, _ = kom.Clusters().RegisterInCluster()
_, _ = kom.Clusters().RegisterByPathWithID(defaultKubeConfig, "default")
kom.Clusters().Show()
// 其他逻辑
}
使用
sql := "select * from deploy where `metadata.namespace`='kube-system' or `metadata.namespace`='default' order by `metadata.creationTimestamp` asc "
var list []v1.Deployment
err := kom.DefaultCluster().Sql(sql).List(&list).Error
for _, d := range list {
fmt.Printf("List Items foreach %s,%s at %s \n", d.GetNamespace(), d.GetName(), d.GetCreationTimestamp())
}
总结
使用sql查询k8s有没有感觉非常简单? 其他使用方法请参考https://blog.csdn.net/zihuxinyu/article/details/143920930
本次更新内容
- docs:优化 SQL 查询语句中的字段名称
- test(example): 添加 SQL 查询功能测试用例
- fix(callbacks): 修复各回调函数的错误处理
- refactor: 更新字段哈希计算方法
- feat(utils): 添加 FNV1哈希函数实现
完整的更新日志: https://gitee.com/weibaohui/kom/compare/v0.1.2...v0.1.3
详情查看:https://gitee.com/weibaohui/kom/releases/v0.1.3
