Skip to content

Commit 423e3ca

Browse files
Remove k8s.io/kubernetes dependency
According to golang/go#32776 (comment), it's not supposed to be used as a dependency. Additionally, I think this code might end up being removed if we agree with golang/go#32776 (comment). Closes eksctl-io#1537
1 parent 8da038f commit 423e3ca

File tree

3 files changed

+48
-4
lines changed

3 files changed

+48
-4
lines changed

go.mod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ require (
6161
k8s.io/code-generator v0.16.8
6262
k8s.io/kops v1.15.2
6363
k8s.io/kubelet v0.16.8
64-
k8s.io/kubernetes v1.16.8
6564
k8s.io/legacy-cloud-providers v0.16.8
6665
sigs.k8s.io/aws-iam-authenticator v0.5.0
6766
sigs.k8s.io/yaml v1.2.0

go.sum

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1290,7 +1290,6 @@ k8s.io/kube-scheduler v0.16.8/go.mod h1:Yq1uX8tvuzb/dxjx0nKQE88XBRDRyhW75drSDHLT
12901290
k8s.io/kubectl v0.16.8/go.mod h1:s6lhPwTkZjHBVHH6BRVRUA1SAqqZF8osaWSYTvR1H1U=
12911291
k8s.io/kubelet v0.16.8 h1:737GeCz3Bu4NxGivTj910vPaL6UYkxaXoOGuMarzCI0=
12921292
k8s.io/kubelet v0.16.8/go.mod h1:mzDpnryQg2dlB6V3/WAgb1baIamiICtWpXMFrPOFh6I=
1293-
k8s.io/kubernetes v1.16.8 h1:AQb20svioSN1foO9LOdZiUOM8zRmNua2PnYB8bvO48w=
12941293
k8s.io/kubernetes v1.16.8/go.mod h1:bpUsy1qP0W6EtkxrPluP02p2+wyVN+95lkjPKnLQZtc=
12951294
k8s.io/legacy-cloud-providers v0.16.8 h1:CtBX+VIKHfijcJzvNaIZJ/oRYQJCsZ5y57aN8cb8Xqs=
12961295
k8s.io/legacy-cloud-providers v0.16.8/go.mod h1:8g5j8qDmqXvj1mQjyYOvSBv15CWbzV3D/CsRFrTGCJY=

pkg/apis/eksctl.io/v1alpha5/validation.go

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ import (
88
"github.com/aws/aws-sdk-go/aws/arn"
99
"github.com/pkg/errors"
1010

11+
v1 "k8s.io/api/core/v1"
1112
"k8s.io/apimachinery/pkg/util/validation"
12-
kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
13+
"k8s.io/apimachinery/pkg/util/sets"
1314
)
1415

1516
var (
@@ -239,6 +240,51 @@ func ValidateNodeGroup(i int, ng *NodeGroup) error {
239240
return nil
240241
}
241242

243+
// isKubeletLabel returns true if the label key is one that kubelets are allowed to set on their own Node object.
244+
// This checks if the key is in the KubeletLabels() list, or has a namespace in the KubeletLabelNamespaces() list.
245+
func isKubeletLabel(key string) bool {
246+
var LabelOS = "beta.kubernetes.io/os"
247+
var LabelArch = "beta.kubernetes.io/arch"
248+
249+
var labelZoneFailureDomainGA = "failure-domain.kubernetes.io/zone"
250+
var labelZoneRegionGA = "failure-domain.kubernetes.io/region"
251+
var labelInstanceTypeGA = "kubernetes.io/instance-type"
252+
var kubeletLabels = sets.NewString(
253+
v1.LabelHostname,
254+
v1.LabelZoneFailureDomain,
255+
v1.LabelZoneRegion,
256+
v1.LabelInstanceType,
257+
v1.LabelOSStable,
258+
v1.LabelArchStable,
259+
260+
LabelOS,
261+
LabelArch,
262+
263+
labelZoneFailureDomainGA,
264+
labelZoneRegionGA,
265+
labelInstanceTypeGA,
266+
)
267+
if kubeletLabels.Has(key) {
268+
return true
269+
}
270+
271+
var namespace string
272+
if parts := strings.SplitN(key, "/", 2); len(parts) == 2 {
273+
namespace = parts[0]
274+
}
275+
var kubeletLabelNamespaces = sets.NewString(
276+
v1.LabelNamespaceSuffixKubelet,
277+
v1.LabelNamespaceSuffixNode,
278+
)
279+
for allowedNamespace := range kubeletLabelNamespaces {
280+
if namespace == allowedNamespace || strings.HasSuffix(namespace, "."+allowedNamespace) {
281+
return true
282+
}
283+
}
284+
285+
return false
286+
}
287+
242288
// ValidateNodeGroupLabels uses proper Kubernetes label validation,
243289
// it's designed to make sure users don't pass weird labels to the
244290
// nodes, which would prevent kubelets to startup properly
@@ -266,7 +312,7 @@ func ValidateNodeGroupLabels(labels map[string]string) error {
266312

267313
if len(labelParts) == 2 {
268314
namespace := labelParts[0]
269-
if isKubernetesLabel(namespace) && !kubeletapis.IsKubeletLabel(label) {
315+
if isKubernetesLabel(namespace) && !isKubeletLabel(label) {
270316
unknownKubernetesLabels = append(unknownKubernetesLabels, label)
271317
}
272318
}

0 commit comments

Comments
 (0)