通过 .spec.selector.matchLabels 键列出使用 apimachinery 的部署
List deployments using apimachinery by the .spec.selector.matchLabels key
我想根据在 .spec.selector.matchLabels
字段中找到的键值对列出我的部署。
使用普通 labels
这样做很容易,但我找不到一种方法来匹配/获取满足以下部分中存在特定 key=value
条件的部署
spec:
[...]
selector:
matchLabels:
app: myapp
process: web
release: myrelease
这似乎无法使用 ListOptions
来完成
不支持:
- https://github.com/kubernetes/client-go/issues/713#issuecomment-557540936
- 和https://github.com/kubernetes/kubernetes/issues/53459
您必须在客户端进行过滤:
depl, err := clientset.AppsV1().Deployments("some_namespace").List(context.Background(), metav1.ListOptions{})
if err != nil {
panic(err.Error())
}
for _, item := range depl.Items {
if item.Spec.Selector.MatchLabels["app"] == "myapp" {
fmt.Println("found it")
}
}
我想根据在 .spec.selector.matchLabels
字段中找到的键值对列出我的部署。
使用普通 labels
这样做很容易,但我找不到一种方法来匹配/获取满足以下部分中存在特定 key=value
条件的部署
spec:
[...]
selector:
matchLabels:
app: myapp
process: web
release: myrelease
这似乎无法使用 ListOptions
不支持:
- https://github.com/kubernetes/client-go/issues/713#issuecomment-557540936
- 和https://github.com/kubernetes/kubernetes/issues/53459
您必须在客户端进行过滤:
depl, err := clientset.AppsV1().Deployments("some_namespace").List(context.Background(), metav1.ListOptions{})
if err != nil {
panic(err.Error())
}
for _, item := range depl.Items {
if item.Spec.Selector.MatchLabels["app"] == "myapp" {
fmt.Println("found it")
}
}