mirror of
https://github.com/kubernetes/kubectl.git
synced 2026-05-28 04:35:50 -04:00
Merge pull request #134782 from scaliby/remove-deprecated-csr-api
Drop support for certificatesv1beta1.CertificateSigningRequest in kubectl Kubernetes-commit: 286d13b96c0e7ddfb9bb1eca7433a90de93a645c
This commit is contained in:
commit
37bc753aaa
3 changed files with 67 additions and 82 deletions
2
go.mod
2
go.mod
|
|
@ -30,7 +30,7 @@ require (
|
|||
golang.org/x/sys v0.35.0
|
||||
golang.org/x/text v0.28.0
|
||||
gopkg.in/evanphx/json-patch.v4 v4.13.0
|
||||
k8s.io/api v0.0.0-20251022232024-e681e9f64143
|
||||
k8s.io/api v0.0.0-20251023032024-345924189262
|
||||
k8s.io/apimachinery v0.0.0-20251022231703-e79daceaa31b
|
||||
k8s.io/cli-runtime v0.0.0-20251023000555-9bc1713ceaa0
|
||||
k8s.io/client-go v0.0.0-20251022232504-715199a180dc
|
||||
|
|
|
|||
4
go.sum
4
go.sum
|
|
@ -166,8 +166,8 @@ gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
|
|||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
k8s.io/api v0.0.0-20251022232024-e681e9f64143 h1:5AQYFH9HSiqd5t/oGZ3kBWK5YmbTmEha8cs9fV0mdTo=
|
||||
k8s.io/api v0.0.0-20251022232024-e681e9f64143/go.mod h1:frc7w2YHpDzAJ3C8vddzF8sjKxN5Ew1WgwYFHm3EsuY=
|
||||
k8s.io/api v0.0.0-20251023032024-345924189262 h1:M0vC6Gfr36YB647FHqWJoa7cezqo1MC970B5WOe3JSw=
|
||||
k8s.io/api v0.0.0-20251023032024-345924189262/go.mod h1:frc7w2YHpDzAJ3C8vddzF8sjKxN5Ew1WgwYFHm3EsuY=
|
||||
k8s.io/apimachinery v0.0.0-20251022231703-e79daceaa31b h1:rLHJYu1GGh4U4g/rZ6P4WI22nM6UEqVYqubI3NjIgW0=
|
||||
k8s.io/apimachinery v0.0.0-20251022231703-e79daceaa31b/go.mod h1:khYq6ZZ3qxhyKXYGU64a438RVSfpfZZ4Xept0x/H3Qw=
|
||||
k8s.io/cli-runtime v0.0.0-20251023000555-9bc1713ceaa0 h1:W6dcKlSf82RLqXrgmpapxkdYLr5ADvR2rkTe/Ef/6PI=
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ import (
|
|||
autoscalingv2 "k8s.io/api/autoscaling/v2"
|
||||
batchv1 "k8s.io/api/batch/v1"
|
||||
batchv1beta1 "k8s.io/api/batch/v1beta1"
|
||||
certificatesv1beta1 "k8s.io/api/certificates/v1beta1"
|
||||
certificatesv1 "k8s.io/api/certificates/v1"
|
||||
coordinationv1 "k8s.io/api/coordination/v1"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
discoveryv1 "k8s.io/api/discovery/v1"
|
||||
|
|
@ -195,50 +195,50 @@ func describerMap(clientConfig *rest.Config) (map[schema.GroupKind]ResourceDescr
|
|||
}
|
||||
|
||||
m := map[schema.GroupKind]ResourceDescriber{
|
||||
{Group: corev1.GroupName, Kind: "Pod"}: &PodDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "ReplicationController"}: &ReplicationControllerDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "Secret"}: &SecretDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "Service"}: &ServiceDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "ServiceAccount"}: &ServiceAccountDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "Node"}: &NodeDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "LimitRange"}: &LimitRangeDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "ResourceQuota"}: &ResourceQuotaDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "PersistentVolume"}: &PersistentVolumeDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "PersistentVolumeClaim"}: &PersistentVolumeClaimDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "Namespace"}: &NamespaceDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "Endpoints"}: &EndpointsDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "ConfigMap"}: &ConfigMapDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "PriorityClass"}: &PriorityClassDescriber{c},
|
||||
{Group: discoveryv1beta1.GroupName, Kind: "EndpointSlice"}: &EndpointSliceDescriber{c},
|
||||
{Group: discoveryv1.GroupName, Kind: "EndpointSlice"}: &EndpointSliceDescriber{c},
|
||||
{Group: autoscalingv2.GroupName, Kind: "HorizontalPodAutoscaler"}: &HorizontalPodAutoscalerDescriber{c},
|
||||
{Group: extensionsv1beta1.GroupName, Kind: "Ingress"}: &IngressDescriber{c},
|
||||
{Group: networkingv1beta1.GroupName, Kind: "Ingress"}: &IngressDescriber{c},
|
||||
{Group: networkingv1beta1.GroupName, Kind: "IngressClass"}: &IngressClassDescriber{c},
|
||||
{Group: networkingv1.GroupName, Kind: "Ingress"}: &IngressDescriber{c},
|
||||
{Group: networkingv1.GroupName, Kind: "IngressClass"}: &IngressClassDescriber{c},
|
||||
{Group: networkingv1beta1.GroupName, Kind: "ServiceCIDR"}: &ServiceCIDRDescriber{c},
|
||||
{Group: networkingv1beta1.GroupName, Kind: "IPAddress"}: &IPAddressDescriber{c},
|
||||
{Group: networkingv1.GroupName, Kind: "ServiceCIDR"}: &ServiceCIDRDescriber{c},
|
||||
{Group: networkingv1.GroupName, Kind: "IPAddress"}: &IPAddressDescriber{c},
|
||||
{Group: batchv1.GroupName, Kind: "Job"}: &JobDescriber{c},
|
||||
{Group: batchv1.GroupName, Kind: "CronJob"}: &CronJobDescriber{c},
|
||||
{Group: batchv1beta1.GroupName, Kind: "CronJob"}: &CronJobDescriber{c},
|
||||
{Group: appsv1.GroupName, Kind: "StatefulSet"}: &StatefulSetDescriber{c},
|
||||
{Group: appsv1.GroupName, Kind: "Deployment"}: &DeploymentDescriber{c},
|
||||
{Group: appsv1.GroupName, Kind: "DaemonSet"}: &DaemonSetDescriber{c},
|
||||
{Group: appsv1.GroupName, Kind: "ReplicaSet"}: &ReplicaSetDescriber{c},
|
||||
{Group: certificatesv1beta1.GroupName, Kind: "CertificateSigningRequest"}: &CertificateSigningRequestDescriber{c},
|
||||
{Group: storagev1.GroupName, Kind: "StorageClass"}: &StorageClassDescriber{c},
|
||||
{Group: storagev1.GroupName, Kind: "CSINode"}: &CSINodeDescriber{c},
|
||||
{Group: storagev1.GroupName, Kind: "VolumeAttributesClass"}: &VolumeAttributesClassDescriber{c},
|
||||
{Group: policyv1.GroupName, Kind: "PodDisruptionBudget"}: &PodDisruptionBudgetDescriber{c},
|
||||
{Group: rbacv1.GroupName, Kind: "Role"}: &RoleDescriber{c},
|
||||
{Group: rbacv1.GroupName, Kind: "ClusterRole"}: &ClusterRoleDescriber{c},
|
||||
{Group: rbacv1.GroupName, Kind: "RoleBinding"}: &RoleBindingDescriber{c},
|
||||
{Group: rbacv1.GroupName, Kind: "ClusterRoleBinding"}: &ClusterRoleBindingDescriber{c},
|
||||
{Group: networkingv1.GroupName, Kind: "NetworkPolicy"}: &NetworkPolicyDescriber{c},
|
||||
{Group: schedulingv1.GroupName, Kind: "PriorityClass"}: &PriorityClassDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "Pod"}: &PodDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "ReplicationController"}: &ReplicationControllerDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "Secret"}: &SecretDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "Service"}: &ServiceDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "ServiceAccount"}: &ServiceAccountDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "Node"}: &NodeDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "LimitRange"}: &LimitRangeDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "ResourceQuota"}: &ResourceQuotaDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "PersistentVolume"}: &PersistentVolumeDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "PersistentVolumeClaim"}: &PersistentVolumeClaimDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "Namespace"}: &NamespaceDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "Endpoints"}: &EndpointsDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "ConfigMap"}: &ConfigMapDescriber{c},
|
||||
{Group: corev1.GroupName, Kind: "PriorityClass"}: &PriorityClassDescriber{c},
|
||||
{Group: discoveryv1beta1.GroupName, Kind: "EndpointSlice"}: &EndpointSliceDescriber{c},
|
||||
{Group: discoveryv1.GroupName, Kind: "EndpointSlice"}: &EndpointSliceDescriber{c},
|
||||
{Group: autoscalingv2.GroupName, Kind: "HorizontalPodAutoscaler"}: &HorizontalPodAutoscalerDescriber{c},
|
||||
{Group: extensionsv1beta1.GroupName, Kind: "Ingress"}: &IngressDescriber{c},
|
||||
{Group: networkingv1beta1.GroupName, Kind: "Ingress"}: &IngressDescriber{c},
|
||||
{Group: networkingv1beta1.GroupName, Kind: "IngressClass"}: &IngressClassDescriber{c},
|
||||
{Group: networkingv1.GroupName, Kind: "Ingress"}: &IngressDescriber{c},
|
||||
{Group: networkingv1.GroupName, Kind: "IngressClass"}: &IngressClassDescriber{c},
|
||||
{Group: networkingv1beta1.GroupName, Kind: "ServiceCIDR"}: &ServiceCIDRDescriber{c},
|
||||
{Group: networkingv1beta1.GroupName, Kind: "IPAddress"}: &IPAddressDescriber{c},
|
||||
{Group: networkingv1.GroupName, Kind: "ServiceCIDR"}: &ServiceCIDRDescriber{c},
|
||||
{Group: networkingv1.GroupName, Kind: "IPAddress"}: &IPAddressDescriber{c},
|
||||
{Group: batchv1.GroupName, Kind: "Job"}: &JobDescriber{c},
|
||||
{Group: batchv1.GroupName, Kind: "CronJob"}: &CronJobDescriber{c},
|
||||
{Group: batchv1beta1.GroupName, Kind: "CronJob"}: &CronJobDescriber{c},
|
||||
{Group: appsv1.GroupName, Kind: "StatefulSet"}: &StatefulSetDescriber{c},
|
||||
{Group: appsv1.GroupName, Kind: "Deployment"}: &DeploymentDescriber{c},
|
||||
{Group: appsv1.GroupName, Kind: "DaemonSet"}: &DaemonSetDescriber{c},
|
||||
{Group: appsv1.GroupName, Kind: "ReplicaSet"}: &ReplicaSetDescriber{c},
|
||||
{Group: certificatesv1.GroupName, Kind: "CertificateSigningRequest"}: &CertificateSigningRequestDescriber{c},
|
||||
{Group: storagev1.GroupName, Kind: "StorageClass"}: &StorageClassDescriber{c},
|
||||
{Group: storagev1.GroupName, Kind: "CSINode"}: &CSINodeDescriber{c},
|
||||
{Group: storagev1.GroupName, Kind: "VolumeAttributesClass"}: &VolumeAttributesClassDescriber{c},
|
||||
{Group: policyv1.GroupName, Kind: "PodDisruptionBudget"}: &PodDisruptionBudgetDescriber{c},
|
||||
{Group: rbacv1.GroupName, Kind: "Role"}: &RoleDescriber{c},
|
||||
{Group: rbacv1.GroupName, Kind: "ClusterRole"}: &ClusterRoleDescriber{c},
|
||||
{Group: rbacv1.GroupName, Kind: "RoleBinding"}: &RoleBindingDescriber{c},
|
||||
{Group: rbacv1.GroupName, Kind: "ClusterRoleBinding"}: &ClusterRoleBindingDescriber{c},
|
||||
{Group: networkingv1.GroupName, Kind: "NetworkPolicy"}: &NetworkPolicyDescriber{c},
|
||||
{Group: schedulingv1.GroupName, Kind: "PriorityClass"}: &PriorityClassDescriber{c},
|
||||
}
|
||||
|
||||
return m, nil
|
||||
|
|
@ -3908,40 +3908,25 @@ func (p *CertificateSigningRequestDescriber) Describe(namespace, name string, de
|
|||
events *corev1.EventList
|
||||
)
|
||||
|
||||
if csr, err := p.client.CertificatesV1().CertificateSigningRequests().Get(context.TODO(), name, metav1.GetOptions{}); err == nil {
|
||||
crBytes = csr.Spec.Request
|
||||
metadata = csr.ObjectMeta
|
||||
conditionTypes := []string{}
|
||||
for _, c := range csr.Status.Conditions {
|
||||
conditionTypes = append(conditionTypes, string(c.Type))
|
||||
}
|
||||
status = extractCSRStatus(conditionTypes, csr.Status.Certificate)
|
||||
signerName = csr.Spec.SignerName
|
||||
expirationSeconds = csr.Spec.ExpirationSeconds
|
||||
username = csr.Spec.Username
|
||||
if describerSettings.ShowEvents {
|
||||
events, _ = searchEvents(p.client.CoreV1(), csr, describerSettings.ChunkSize)
|
||||
}
|
||||
} else if csr, err := p.client.CertificatesV1beta1().CertificateSigningRequests().Get(context.TODO(), name, metav1.GetOptions{}); err == nil {
|
||||
crBytes = csr.Spec.Request
|
||||
metadata = csr.ObjectMeta
|
||||
conditionTypes := []string{}
|
||||
for _, c := range csr.Status.Conditions {
|
||||
conditionTypes = append(conditionTypes, string(c.Type))
|
||||
}
|
||||
status = extractCSRStatus(conditionTypes, csr.Status.Certificate)
|
||||
if csr.Spec.SignerName != nil {
|
||||
signerName = *csr.Spec.SignerName
|
||||
}
|
||||
expirationSeconds = csr.Spec.ExpirationSeconds
|
||||
username = csr.Spec.Username
|
||||
if describerSettings.ShowEvents {
|
||||
events, _ = searchEvents(p.client.CoreV1(), csr, describerSettings.ChunkSize)
|
||||
}
|
||||
} else {
|
||||
csr, err := p.client.CertificatesV1().CertificateSigningRequests().Get(context.TODO(), name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
crBytes = csr.Spec.Request
|
||||
metadata = csr.ObjectMeta
|
||||
conditionTypes := []string{}
|
||||
for _, c := range csr.Status.Conditions {
|
||||
conditionTypes = append(conditionTypes, string(c.Type))
|
||||
}
|
||||
status = extractCSRStatus(conditionTypes, csr.Status.Certificate)
|
||||
signerName = csr.Spec.SignerName
|
||||
expirationSeconds = csr.Spec.ExpirationSeconds
|
||||
username = csr.Spec.Username
|
||||
if describerSettings.ShowEvents {
|
||||
events, _ = searchEvents(p.client.CoreV1(), csr, describerSettings.ChunkSize)
|
||||
}
|
||||
|
||||
cr, err := certificate.ParseCSR(crBytes)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("Error parsing CSR: %v", err)
|
||||
|
|
@ -5495,11 +5480,11 @@ func extractCSRStatus(conditions []string, certificateBytes []byte) string {
|
|||
var approved, denied, failed bool
|
||||
for _, c := range conditions {
|
||||
switch c {
|
||||
case string(certificatesv1beta1.CertificateApproved):
|
||||
case string(certificatesv1.CertificateApproved):
|
||||
approved = true
|
||||
case string(certificatesv1beta1.CertificateDenied):
|
||||
case string(certificatesv1.CertificateDenied):
|
||||
denied = true
|
||||
case string(certificatesv1beta1.CertificateFailed):
|
||||
case string(certificatesv1.CertificateFailed):
|
||||
failed = true
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue