Как использовать метод client.List в kubebuilder? - PullRequest
0 голосов
/ 02 мая 2019

Я работаю над пользовательским контроллером для пользовательского ресурса, используя kubebuilder (версия 1.0.8). У меня есть сценарий, в котором мне нужно получить список всех экземпляров моего пользовательского ресурса, чтобы я мог синхронизироваться с внешней базой данных.

Все примеры, которые я видел для контроллеров kubernetes, используют client-go или просто вызывают сервер api напрямую через http. Тем не менее, kubebuilder также дал мне этот объект client.Client для получения и перечисления ресурсов. Поэтому я пытаюсь использовать это.

После создания клиентского экземпляра с использованием переданного экземпляра Manager (т. Е. Do mgr.GetClient()) я попытался написать некоторый код, чтобы получить список всех созданных мною ресурсов Environment.

func syncClusterWithDatabase(c client.Client, db *dynamodb.DynamoDB) {
    // Sync environments
    // Step 1 - read all the environments the cluster knows about
    clusterEnvironments := &cdsv1alpha1.EnvironmentList{}

    c.List(context.Background(), /* what do I put here? */, clusterEnvironments)
}

Пример в документации для метода List показывает:

c.List(context.Background, &result);

, который даже не компилируется.

Я видел несколько методов в пакете клиента, чтобы ограничить поиск определенными метками или определенным полем с определенным значением, но ничего не ограничить результат определенным видом ресурса.

Есть ли способ сделать это через объект Client? Должен ли я сделать что-то еще полностью?

1 Ответ

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

Так разобрался - ответом будет передать nil для второго параметра.Тип выходного указателя определяет, какой ресурс он фактически получает.

...