Generi c client.Get для нестандартного оператора Kubernetes GO - PullRequest
1 голос
/ 14 апреля 2020

В пользовательском операторе Kubernetes, реализованном с оператором-sdk в golang, можно напрямую вызвать пользовательский API и получить объект как YAML?

Например. У меня есть собственный ресурс

apiVersion: test.com/v1alpha1
kind: TEST
metadata::
  name: example-test
spec:
  replicas: 3
  randomname: value

Я не знаю заранее, какие поля в спецификации c будут отличаться от реплик. Поэтому я не могу создать тип go, который включает структуры для хранения записей.

Вместо того, чтобы делать:

instance := &testv1alpha1.Test{}
err := r.client.Get(context.TODO(), nameSpaceName, instance)

Я хочу иметь возможность делать что-то вроде:

instanceYAML := genericContainer{}
err := r.client.GetGeneric(context.TODO(), nameSpaceName, instance)

и затем проанализируйте instanceYAML, чтобы проверить записи.

1 Ответ

1 голос
/ 14 апреля 2020

Это называется "неструктурированный" клиент. Документы довольно легкие, поэтому я рекомендую просмотреть тесты в качестве примеров https://github.com/kubernetes-sigs/controller-runtime/blob/ea32729106c995d9df310ac4731c2061490addfb/pkg/client/client_test.go#L1536 -L1566

...