Я работаю над пользовательским контроллером для пользовательского ресурса, используя 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
? Должен ли я сделать что-то еще полностью?