Я смог решить эту проблему, используя неструктурированный. Неструктурированный тип.
Используя следующий пример, вы можете наблюдать CR (ExampleCR) в контроллере (Ref).
// You can also watch unstructured objects
u := &unstructured.Unstructured{}
u.SetGroupVersionKind(schema.GroupVersionKind{
Kind: "ExampleCR",
Group: "",
Version: "version", // set version here
})
//watch for primary resource
err = c.Watch(&source.Kind{Type: u}, &handler.EnqueueRequestForObject{})
//watch for secondary resource
err = c.Watch(&source.Kind{Type: u}, &handler.EnqueueRequestForOwner{
IsController: true,
OwnerType: &ownerVersion.OwnerType{}})
Как только вы это сделаете, контроллер получит запрос на согласование.
Работа CRUD останется такой же, как и для других типов (например, Pod).
создание объекта может быть выполнено с помощью следующих
func newExampleCR() (*unstructured.Unstructured)
&unstructured.Unstructured{
Object: map[string]interface{}{
"apiVersion": "version", //set version here
"kind": "ExampleCR", // set CR name here
"metadata": map[string]interface{}{
"name": "demo-deployment",
},
"spec": map[string]interface{}{
//spec goes here
},
},
}
}
Полный пример можно найти здесь для объекта развертывания
ПРИМЕЧАНИЕ. Перед запуском менеджера необходимо убедиться, что CRD зарегистрирован в схеме.
person
suraj.tripathi
schedule
23.12.2020
unstructured.Unstructured
для решения моей проблемы. как только у меня будет рабочее решение. я опубликую это здесь - person suraj.tripathi   schedule 01.12.2020