【发布时间】:2019-07-07 14:14:16
【问题描述】:
我想执行相当于
kubectl get all -l app=myapp -n mynamespace
或
kubectl label all -l version=1.2.0,app=myapp track=stable --overwrite
使用客户端去
我查看了dynamic 包,但它似乎需要GroupVersionResource,这对于服务对象和部署对象来说是不同的。此外,当我通过 schema.GroupVersionResource{Group: "apps", Version: "v1"} 时,它什么也找不到,当我通过 schema.GroupVersionResource{Version: "v1"} 时,它只找到命名空间对象并且也不查找标签,尽管我提供了标签选项:
resource := schema.GroupVersionResource{Version: "v1"}
listOptions := metav1.ListOptions{LabelSelector: fmt.Sprintf("app=%s", AppName), FieldSelector: ""}
res, listErr := dynamicClient.Resource(resource).Namespace("myapps").List(listOptions)
我也查看了运行时包,但没有发现任何有用的东西。看了一下kubectl是怎么实现这个的,有点还没搞明白,抽象层次太多了。
【问题讨论】:
标签: go kubernetes kubectl client-go