Как использовать метод client.List в kubebuilder?

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

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

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

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 объект? Должен ли я сделать что-то еще полностью?

2 ответа

Решение

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

Согласно последней документации, метод List определяется следующим образом:

      List(ctx context.Context, list ObjectList, opts ...ListOption) error

ЕслиListметод, который вы вызываете, имеет то же определение, что и выше, ваш код должен скомпилироваться. Поскольку он имеет переменные параметры для установки пространства имен и совпадения полей, обязательными аргументами являютсяContextиobjectList.

Ссылка: Книга KubeBuilder

Другие вопросы по тегам