gpt4 book ai didi

go - k8s 中 secret 列表的 LabelSelector

转载 作者:IT王子 更新时间:2023-10-29 01:26:03 26 4
gpt4 key购买 nike

我想使用 go-client API 从 k8s 集群获取 Secret 对象

我有这样的功能

func GetSecret( version string) (retVal interface{}, err error){
clientset := GetClientOutOfCluster()
labelSelector := metav1.LabelSelector{MatchLabels: map[string]string{"version":version}}

listOptions := metav1.ListOptions{
LabelSelector: labelSelector.String(),
Limit: 100,
}
secretList, err := clientset.CoreV1().Secrets("namespace").List( listOptions )
retVal = secretList.Items[0]
return retVal, err
}

GetClientOutOfCluster 基本上是从集群或本地 ~/.kube/config 中检索配置

我使用 metav1.LabelSelector 就像我在生成新部署对象时所做的那样。所以我觉得我很酷。但是 ListOptions.LabelSelector 是一个字符串。当我运行我的函数时,它失败了。

unable to parse requirement: invalid label key "&LabelSelector{MatchLabels:map[string]string{version:": name part must consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName',  or 'my.name',  or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]')

我在任何地方都找不到这个函数的用法示例。文档假定您知道什么是 LabelSelector。

ListOptions 的 LabelSelector 格式是什么?

谢谢

最佳答案

可以使用k8s提供的函数来做toString操作

import "k8s.io/apimachinery/pkg/labels"
...

func GetSecret(version string) (retVal interface{}, err error){
clientset := GetClientOutOfCluster()
labelSelector := metav1.LabelSelector{MatchLabels: map[string]string{"version":version}}

listOptions := metav1.ListOptions{
LabelSelector: labels.Set(labelSelector.MatchLabels).String(),
Limit: 100,
}
secretList, err := clientset.CoreV1().Secrets("namespace").List(listOptions)
retVal = secretList.Items[0]
return retVal, err
}

关于go - k8s 中 secret 列表的 LabelSelector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51106923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com