From 985416f20c4f945e54eb4ad5d7b5dee82618d3ee Mon Sep 17 00:00:00 2001 From: Adam Wolfe Gordon Date: Wed, 14 Jan 2026 12:40:33 -0700 Subject: [PATCH] Copy TaintExists to pkg/k8sutil and stop importing k8s.io/kubernetes (#1952) Importing k8s.io/kubernetes causes any go modules that depend on this one to have some issues. For example, the following happens in a module that depends on troubleshoot: ```shell $ go list -modfile=./go.mod -m -json -mod=mod all go: k8s.io/cloud-provider@v0.0.0: invalid version: unknown revision v0.0.0 go: k8s.io/cluster-bootstrap@v0.0.0: invalid version: unknown revision v0.0.0 go: k8s.io/controller-manager@v0.0.0: invalid version: unknown revision v0.0.0 go: k8s.io/cri-client@v0.0.0: invalid version: unknown revision v0.0.0 go: k8s.io/csi-translation-lib@v0.0.0: invalid version: unknown revision v0.0.0 go: k8s.io/dynamic-resource-allocation@v0.0.0: invalid version: unknown revision v0.0.0 go: k8s.io/endpointslice@v0.0.0: invalid version: unknown revision v0.0.0 go: k8s.io/externaljwt@v0.0.0: invalid version: unknown revision v0.0.0 go: k8s.io/kube-controller-manager@v0.0.0: invalid version: unknown revision v0.0.0 go: k8s.io/kube-proxy@v0.0.0: invalid version: unknown revision v0.0.0 go: k8s.io/kube-scheduler@v0.0.0: invalid version: unknown revision v0.0.0 go: k8s.io/mount-utils@v0.0.0: invalid version: unknown revision v0.0.0 go: k8s.io/pod-security-admission@v0.0.0: invalid version: unknown revision v0.0.0 go: k8s.io/sample-apiserver@v0.0.0: invalid version: unknown revision v0.0.0 ``` The only thing being used from k8s.io/kubernetes is a simple utility function, `TaintExists`. Copy it into pkg/k8sutil to eliminate the need for the import. Signed-off-by: Adam Wolfe Gordon Co-authored-by: Andrew Lavery --- go.mod | 1 - go.sum | 2 -- pkg/analyze/node_resources.go | 4 ++-- pkg/k8sutil/taints.go | 17 +++++++++++++++++ 4 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 pkg/k8sutil/taints.go diff --git a/go.mod b/go.mod index ffdfcc66..8e1cae7b 100644 --- a/go.mod +++ b/go.mod @@ -55,7 +55,6 @@ require ( k8s.io/cli-runtime v0.34.2 k8s.io/client-go v0.34.2 k8s.io/klog/v2 v2.130.1 - k8s.io/kubernetes v1.34.2 oras.land/oras-go v1.2.7 sigs.k8s.io/controller-runtime v0.22.4 sigs.k8s.io/e2e-framework v0.6.0 diff --git a/go.sum b/go.sum index f3abf32c..9fd23e1e 100644 --- a/go.sum +++ b/go.sum @@ -824,8 +824,6 @@ k8s.io/kubectl v0.34.0 h1:NcXz4TPTaUwhiX4LU+6r6udrlm0NsVnSkP3R9t0dmxs= k8s.io/kubectl v0.34.0/go.mod h1:bmd0W5i+HuG7/p5sqicr0Li0rR2iIhXL0oUyLF3OjR4= k8s.io/kubelet v0.34.2 h1:Dl+1uh7xwJr70r+SHKyIpvu6XvzuoPu0uDIC4cqgJUs= k8s.io/kubelet v0.34.2/go.mod h1:RfwR03iuKeVV7Z1qD9XKH98c3tlPImJpQ3qHIW40htM= -k8s.io/kubernetes v1.34.2 h1:WQdDvYJazkmkwSncgNwGvVtaCt4TYXIU3wSMRgvp3MI= -k8s.io/kubernetes v1.34.2/go.mod h1:m6pZk6a179pRo2wsTiCPORJ86iOEQmfIzUvtyEF8BwA= k8s.io/metrics v0.34.2 h1:zao91FNDVPRGIiHLO2vqqe21zZVPien1goyzn0hsz90= k8s.io/metrics v0.34.2/go.mod h1:Ydulln+8uZZctUM8yrUQX4rfq/Ay6UzsuXf24QJ37Vc= k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y= diff --git a/pkg/analyze/node_resources.go b/pkg/analyze/node_resources.go index f52ea656..5e676a67 100644 --- a/pkg/analyze/node_resources.go +++ b/pkg/analyze/node_resources.go @@ -12,11 +12,11 @@ import ( "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" - "k8s.io/kubernetes/pkg/util/taints" "github.com/replicatedhq/troubleshoot/internal/util" troubleshootv1beta2 "github.com/replicatedhq/troubleshoot/pkg/apis/troubleshoot/v1beta2" "github.com/replicatedhq/troubleshoot/pkg/constants" + "github.com/replicatedhq/troubleshoot/pkg/k8sutil" ) type AnalyzeNodeResources struct { @@ -453,7 +453,7 @@ func nodeMatchesFilters(node corev1.Node, filters *troubleshootv1beta2.NodeResou } if filters.Taint != nil { - return taints.TaintExists(node.Spec.Taints, filters.Taint), nil + return k8sutil.TaintExists(node.Spec.Taints, filters.Taint), nil } if filters.CPUArchitecture != "" { diff --git a/pkg/k8sutil/taints.go b/pkg/k8sutil/taints.go new file mode 100644 index 00000000..6013dada --- /dev/null +++ b/pkg/k8sutil/taints.go @@ -0,0 +1,17 @@ +package k8sutil + +import corev1 "k8s.io/api/core/v1" + +// TaintExists checks if the given taint exists in list of taints. Returns true +// if exists false otherwise. +// +// Copied from k8s.io/kubernetes/pkg/util/taints so we don't have to import +// k8s.io/kubernetes. +func TaintExists(taints []corev1.Taint, taintToFind *corev1.Taint) bool { + for _, taint := range taints { + if taint.MatchTaint(taintToFind) { + return true + } + } + return false +}