LabelSelector для списка секретов в k8s - PullRequest
0 голосов
/ 29 июня 2018

Я хочу получить секретный объект из кластера k8s, используя go-client API

У меня есть функция, которая выглядит так

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 так же, как и я, когда генерирую новый объект Deployment. Так что я подумал, что я крутой. Но 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.

Что такое формат LabelSelector для ListOptions?

Спасибо

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Вы можете использовать предоставленную функцию 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
}
0 голосов
/ 01 июля 2018
func GetSecret( version string, param2 string) (retVal interface{}, err error){
    clientset := GetClientOutOfCluster()
    labelSelector := fmt.Sprintf("version=%s, param2=%s", version, param2)

    listOptions := metav1.ListOptions{
        LabelSelector: labelSelector,
        Limit:         100,
    }
    secretList, err := clientset.CoreV1().Secrets("namespace").List( listOptions )
    retVal = secretList.Items[0]
    return retVal, err
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...