Удалить все ресурсы kubernetes с помощью client- go? - PullRequest
0 голосов
/ 09 июля 2020

Можно ли удалить все ресурсы с указанной меткой c с помощью клиента go? Версия client- go - 0.17.3

Я вижу в клиенте, что есть поле для каждого типа ресурса, но у них разные интерфейсы.

type Clientset struct {
    *discovery.DiscoveryClient
    admissionregistrationV1alpha1 *admissionregistrationv1alpha1.AdmissionregistrationV1alpha1Client
    admissionregistrationV1beta1  *admissionregistrationv1beta1.AdmissionregistrationV1beta1Client
    appsV1beta1                   *appsv1beta1.AppsV1beta1Client
    appsV1beta2                   *appsv1beta2.AppsV1beta2Client
    appsV1                        *appsv1.AppsV1Client
    auditregistrationV1alpha1     *auditregistrationv1alpha1.AuditregistrationV1alpha1Client
    authenticationV1              *authenticationv1.AuthenticationV1Client
    authenticationV1beta1         *authenticationv1beta1.AuthenticationV1beta1Client
    authorizationV1               *authorizationv1.AuthorizationV1Client
    authorizationV1beta1          *authorizationv1beta1.AuthorizationV1beta1Client
    autoscalingV1                 *autoscalingv1.AutoscalingV1Client
    autoscalingV2beta1            *autoscalingv2beta1.AutoscalingV2beta1Client
    autoscalingV2beta2            *autoscalingv2beta2.AutoscalingV2beta2Client
    batchV1                       *batchv1.BatchV1Client
    batchV1beta1                  *batchv1beta1.BatchV1beta1Client
    batchV2alpha1                 *batchv2alpha1.BatchV2alpha1Client
    certificatesV1beta1           *certificatesv1beta1.CertificatesV1beta1Client
    coordinationV1beta1           *coordinationv1beta1.CoordinationV1beta1Client
    coreV1                        *corev1.CoreV1Client
    eventsV1beta1                 *eventsv1beta1.EventsV1beta1Client
    extensionsV1beta1             *extensionsv1beta1.ExtensionsV1beta1Client
    networkingV1                  *networkingv1.NetworkingV1Client
    policyV1beta1                 *policyv1beta1.PolicyV1beta1Client
    rbacV1                        *rbacv1.RbacV1Client
    rbacV1beta1                   *rbacv1beta1.RbacV1beta1Client
    rbacV1alpha1                  *rbacv1alpha1.RbacV1alpha1Client
    schedulingV1alpha1            *schedulingv1alpha1.SchedulingV1alpha1Client
    schedulingV1beta1             *schedulingv1beta1.SchedulingV1beta1Client
    settingsV1alpha1              *settingsv1alpha1.SettingsV1alpha1Client
    storageV1beta1                *storagev1beta1.StorageV1beta1Client
    storageV1                     *storagev1.StorageV1Client
    storageV1alpha1               *storagev1alpha1.StorageV1alpha1Client
}

Возможно ли чтобы сделать что-то вроде этого (достал из здесь ):

kubectl delete "$(kubectl api-resources --verbs=delete -o name | tr "\n" "," | sed -e 's/,$//')" --all

Но с помощью клиента - go?

1 Ответ

2 голосов
/ 10 июля 2020

Да, можно делать все, что kubectl делает самостоятельно, используя client- go. В конце концов, kubectl сам использует client- go.

Вы можете посмотреть на исходный код kubectl , чтобы увидеть, как он делает следующее:

  1. Get список ресурсов API, поддерживающих команду удаления. См. Реализацию команды api-resources , чтобы узнать, как это сделать.
  2. Для каждого найденного ресурса получите список объектов с меткой и значением, которые вы ищете. Ознакомьтесь с реализацией команды get kubectl , чтобы узнать, как это сделать
  3. Удалить каждый объект, соответствующий критериям. См. Для этого реализацию команды удаления kubectl .
...