kubernetes client-go: преобразовать labelselector в строку метки - PullRequest
0 голосов
/ 21 мая 2019

В клиентском API kubernetes (или другой библиотеке, которая его использует) есть ли служебная функция для преобразования k8s.io/apimachinery/pkg/apis/meta/v1/LabelSelector в строку для заполнения поля LabelSelector в k8s.io/apimachinery/pkg/apis/meta/v1/ListOptions?

Я перебрал код client-go, но не могу найти такую ​​функцию.

LabelSelector.Marshall() или LabelSelector.String() дают мне это (неудивительно, потому что это не их цель, но я все равно попробовал).

Фон

У меня есть описания спецификаций, такие как k8s.io/api/extensions/v1beta1/Deployment, и я хочу использовать его набор меток селектора (т. Е. Поле Selector) для запроса своих модулей, используя

options := metav1.ListOptions{
    LabelSelector: <stringified labels>,
}

podList, err := clientset.CoreV1().Pods(<namespace>).List(options)

1 Ответ

1 голос
/ 21 мая 2019

Вы можете использовать функцию LabelSelectorAsMap(LabelSelector), чтобы конвертировать labelselector в карту map[string]string.

Затем используйте SelectorFromSet функцию пакета k8s.io/apimachinery/pkg/labels для преобразования map в селектор / строки.

Псевдокод:

import (
    "k8s.io/apimachinery/pkg/labels"
    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

func ListPod(labelSelector metav1.LabelSelector) {

    labelMap := metav1.LabelSelectorAsMap(labelSelector)

    options := metav1.ListOptions{
        LabelSelector: labels.SelectorFromSet(labelMap).String(),
    }

    podList, err := clientset.CoreV1().Pods("<namespace>").List(options)

}
...