From fdea6ad17d74c7f39e55d4ae2b57f2430c12eaba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arda=20G=C3=BC=C3=A7l=C3=BC?= Date: Mon, 24 Jul 2023 15:32:26 +0300 Subject: [PATCH] kubectl debug: Remove legacy server support Legacy server support for ephemeral containers were added in kubetl debug in 1.22. Since now we are in 1.29, we can safely remove ephemeral container legacy server support because 1.22 is already far away from supported version skew boundary. --- .../src/k8s.io/kubectl/pkg/cmd/debug/debug.go | 41 ------------------- 1 file changed, 41 deletions(-) diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/debug/debug.go b/staging/src/k8s.io/kubectl/pkg/cmd/debug/debug.go index 1066a86b8b8..72926150b89 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/debug/debug.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/debug/debug.go @@ -455,53 +455,12 @@ func (o *DebugOptions) debugByEphemeralContainer(ctx context.Context, pod *corev return nil, "", fmt.Errorf("ephemeral containers are disabled for this cluster (error from server: %q)", err) } - // The Kind used for the /ephemeralcontainers subresource changed in 1.22. When presented with an unexpected - // Kind the api server will respond with a not-registered error. When this happens we can optimistically try - // using the old API. - if runtime.IsNotRegisteredError(err) { - klog.V(1).Infof("Falling back to legacy API because server returned error: %v", err) - return o.debugByEphemeralContainerLegacy(ctx, pod, debugContainer) - } - return nil, "", err } return result, debugContainer.Name, nil } -// debugByEphemeralContainerLegacy adds debugContainer as an ephemeral container using the pre-1.22 /ephemeralcontainers API -// This may be removed when we no longer wish to support releases prior to 1.22. -func (o *DebugOptions) debugByEphemeralContainerLegacy(ctx context.Context, pod *corev1.Pod, debugContainer *corev1.EphemeralContainer) (*corev1.Pod, string, error) { - // We no longer have the v1.EphemeralContainers Kind since it was removed in 1.22, but - // we can present a JSON 6902 patch that the api server will apply. - patch, err := json.Marshal([]map[string]interface{}{{ - "op": "add", - "path": "/ephemeralContainers/-", - "value": debugContainer, - }}) - if err != nil { - return nil, "", fmt.Errorf("error creating JSON 6902 patch for old /ephemeralcontainers API: %s", err) - } - - result := o.podClient.RESTClient().Patch(types.JSONPatchType). - Namespace(pod.Namespace). - Resource("pods"). - Name(pod.Name). - SubResource("ephemeralcontainers"). - Body(patch). - Do(ctx) - if err := result.Error(); err != nil { - return nil, "", err - } - - newPod, err := o.podClient.Pods(pod.Namespace).Get(ctx, pod.Name, metav1.GetOptions{}) - if err != nil { - return nil, "", err - } - - return newPod, debugContainer.Name, nil -} - // debugByCopy runs a copy of the target Pod with a debug container added or an original container modified func (o *DebugOptions) debugByCopy(ctx context.Context, pod *corev1.Pod) (*corev1.Pod, string, error) { copied, dc, err := o.generatePodCopyWithDebugContainer(pod)