Я хочу выполнить эквивалент
kubectl get all -l app=myapp -n mynamespace
или
kubectl label all -l version=1.2.0,app=myapp track=stable --overwrite
, используя client-go
Я посмотрел на динамический пакет, но, похоже, ему нужен GroupVersionResource
, который отличается, скажем, для объектов Service и объектов Deployment.Также, когда я передаю schema.GroupVersionResource{Group: "apps", Version: "v1"}
, он ничего не находит, когда я передаю schema.GroupVersionResource{Version: "v1"}
, он находит только объект пространства имен и также не ищет метки, хотя я предоставил опции меток:
resource := schema.GroupVersionResource{Version: "v1"}
listOptions := metav1.ListOptions{LabelSelector: fmt.Sprintf("app=%s", AppName), FieldSelector: ""}
res, listErr := dynamicClient.Resource(resource).Namespace("myapps").List(listOptions)
IТакже посмотрел на пакет времени выполнения, но не нашел ничего полезного.Я взглянул на то, как kubectl
это реализовало, но пока не понял, слишком много уровней абстракций.