From b7a28b2ff357c35f7b576d746c98a2bcbf2dff93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20K=C5=82obuszewski?= Date: Mon, 15 Jul 2024 14:49:08 +0200 Subject: [PATCH] Update vendor to use k8s 1.30.2 --- cluster-autoscaler/apis/go.mod | 8 +- cluster-autoscaler/apis/go.sum | 16 +-- cluster-autoscaler/go.mod | 86 +++++++-------- cluster-autoscaler/go.sum | 80 +++++++------- .../pkg/admission/plugin/cel/compile.go | 64 ++++++----- .../pkg/admission/plugin/cel/interface.go | 4 +- .../plugin/policy/validating/plugin.go | 27 +++-- .../plugin/policy/validating/typechecking.go | 5 +- .../pkg/admission/plugin/webhook/accessors.go | 12 +++ .../plugin/webhook/generic/webhook.go | 6 +- .../apis/apiserver/validation/validation.go | 6 +- .../apiserver/pkg/cel/environment/base.go | 47 ++++++-- .../apiserver/pkg/features/kube_features.go | 22 ++++ .../structured/namedresources/cel/compile.go | 3 +- .../kubernetes/pkg/features/kube_features.go | 4 + .../pkg/scheduler/framework/interface.go | 4 +- .../framework/preemption/preemption.go | 17 +-- .../pkg/scheduler/framework/types.go | 4 +- .../internal/queue/scheduling_queue.go | 5 + .../kubernetes/pkg/scheduler/schedule_one.go | 14 ++- .../k8s.io/kubernetes/pkg/volume/plugins.go | 2 +- cluster-autoscaler/vendor/modules.txt | 100 +++++++++--------- cluster-autoscaler/version/version.go | 2 +- 23 files changed, 322 insertions(+), 216 deletions(-) diff --git a/cluster-autoscaler/apis/go.mod b/cluster-autoscaler/apis/go.mod index 59d43f1a2a15..929c8c6c067d 100644 --- a/cluster-autoscaler/apis/go.mod +++ b/cluster-autoscaler/apis/go.mod @@ -5,9 +5,9 @@ go 1.22.0 require ( github.com/onsi/ginkgo/v2 v2.16.0 github.com/onsi/gomega v1.31.1 - k8s.io/apimachinery v0.30.1 - k8s.io/client-go v0.30.1 - k8s.io/code-generator v0.30.1 + k8s.io/apimachinery v0.30.2 + k8s.io/client-go v0.30.2 + k8s.io/code-generator v0.30.2 sigs.k8s.io/structured-merge-diff/v4 v4.4.1 ) @@ -48,7 +48,7 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.30.1 // indirect + k8s.io/api v0.30.2 // indirect k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70 // indirect k8s.io/klog/v2 v2.120.1 // indirect k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect diff --git a/cluster-autoscaler/apis/go.sum b/cluster-autoscaler/apis/go.sum index a02472d84274..2182d365f585 100644 --- a/cluster-autoscaler/apis/go.sum +++ b/cluster-autoscaler/apis/go.sum @@ -144,14 +144,14 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= 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.30.1 h1:kCm/6mADMdbAxmIh0LBjS54nQBE+U4KmbCfIkF5CpJY= -k8s.io/api v0.30.1/go.mod h1:ddbN2C0+0DIiPntan/bye3SW3PdwLa11/0yqwvuRrJM= -k8s.io/apimachinery v0.30.1 h1:ZQStsEfo4n65yAdlGTfP/uSHMQSoYzU/oeEbkmF7P2U= -k8s.io/apimachinery v0.30.1/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= -k8s.io/client-go v0.30.1 h1:uC/Ir6A3R46wdkgCV3vbLyNOYyCJ8oZnjtJGKfytl/Q= -k8s.io/client-go v0.30.1/go.mod h1:wrAqLNs2trwiCH/wxxmT/x3hKVH9PuV0GGW0oDoHVqc= -k8s.io/code-generator v0.30.1 h1:ZsG++q5Vt0ScmKCeLhynUuWgcwFGg1Hl1AGfatqPJBI= -k8s.io/code-generator v0.30.1/go.mod h1:hFgxRsvOUg79mbpbVKfjJvRhVz1qLoe40yZDJ/hwRH4= +k8s.io/api v0.30.2 h1:+ZhRj+28QT4UOH+BKznu4CBgPWgkXO7XAvMcMl0qKvI= +k8s.io/api v0.30.2/go.mod h1:ULg5g9JvOev2dG0u2hig4Z7tQ2hHIuS+m8MNZ+X6EmI= +k8s.io/apimachinery v0.30.2 h1:fEMcnBj6qkzzPGSVsAZtQThU62SmQ4ZymlXRC5yFSCg= +k8s.io/apimachinery v0.30.2/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= +k8s.io/client-go v0.30.2 h1:sBIVJdojUNPDU/jObC+18tXWcTJVcwyqS9diGdWHk50= +k8s.io/client-go v0.30.2/go.mod h1:JglKSWULm9xlJLx4KCkfLLQ7XwtlbflV6uFFSHTMgVs= +k8s.io/code-generator v0.30.2 h1:ZY1+aGkqZVwKIyGsOzquaeZ5rSfE6wZHur8z3jQAaiw= +k8s.io/code-generator v0.30.2/go.mod h1:RQP5L67QxqgkVquk704CyvWFIq0e6RCMmLTXxjE8dVA= k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70 h1:NGrVE502P0s0/1hudf8zjgwki1X/TByhmAoILTarmzo= k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70/go.mod h1:VH3AT8AaQOqiGjMF9p0/IM1Dj+82ZwjfxUP1IxaHE+8= k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= diff --git a/cluster-autoscaler/go.mod b/cluster-autoscaler/go.mod index e13b898f3613..589ce5005c09 100644 --- a/cluster-autoscaler/go.mod +++ b/cluster-autoscaler/go.mod @@ -36,18 +36,18 @@ require ( google.golang.org/protobuf v1.33.0 gopkg.in/gcfg.v1 v1.2.3 gopkg.in/yaml.v2 v2.4.0 - k8s.io/api v0.30.1 - k8s.io/apimachinery v0.30.1 - k8s.io/apiserver v0.30.1 + k8s.io/api v0.30.2 + k8s.io/apimachinery v0.30.2 + k8s.io/apiserver v0.30.2 k8s.io/autoscaler/cluster-autoscaler/apis v0.0.0-00010101000000-000000000000 - k8s.io/client-go v0.30.1 - k8s.io/cloud-provider v0.30.1 + k8s.io/client-go v0.30.2 + k8s.io/cloud-provider v0.30.2 k8s.io/cloud-provider-aws v1.27.0 - k8s.io/component-base v0.30.1 - k8s.io/component-helpers v0.30.1 + k8s.io/component-base v0.30.2 + k8s.io/component-helpers v0.30.2 k8s.io/klog/v2 v2.120.1 - k8s.io/kubelet v0.30.1 - k8s.io/kubernetes v1.30.1 + k8s.io/kubelet v0.30.2 + k8s.io/kubernetes v1.30.2 k8s.io/legacy-cloud-providers v0.0.0 k8s.io/utils v0.0.0-20230726121419-3b25d923346b sigs.k8s.io/cloud-provider-azure v1.28.0 @@ -182,13 +182,13 @@ require ( gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/apiextensions-apiserver v0.0.0 // indirect - k8s.io/code-generator v0.30.1 // indirect - k8s.io/controller-manager v0.30.1 // indirect - k8s.io/cri-api v0.30.1 // indirect + k8s.io/code-generator v0.30.2 // indirect + k8s.io/controller-manager v0.30.2 // indirect + k8s.io/cri-api v0.30.2 // indirect k8s.io/csi-translation-lib v0.27.0 // indirect k8s.io/dynamic-resource-allocation v0.0.0 // indirect k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70 // indirect - k8s.io/kms v0.30.1 // indirect + k8s.io/kms v0.30.2 // indirect k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect k8s.io/kube-scheduler v0.0.0 // indirect k8s.io/kubectl v0.28.0 // indirect @@ -204,64 +204,64 @@ replace github.com/digitalocean/godo => github.com/digitalocean/godo v1.27.0 replace github.com/rancher/go-rancher => github.com/rancher/go-rancher v0.1.0 -replace k8s.io/api => k8s.io/api v0.30.1 +replace k8s.io/api => k8s.io/api v0.30.2 -replace k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.30.1 +replace k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.30.2 -replace k8s.io/apimachinery => k8s.io/apimachinery v0.30.1 +replace k8s.io/apimachinery => k8s.io/apimachinery v0.30.2 -replace k8s.io/apiserver => k8s.io/apiserver v0.30.1 +replace k8s.io/apiserver => k8s.io/apiserver v0.30.2 -replace k8s.io/cli-runtime => k8s.io/cli-runtime v0.30.1 +replace k8s.io/cli-runtime => k8s.io/cli-runtime v0.30.2 -replace k8s.io/client-go => k8s.io/client-go v0.30.1 +replace k8s.io/client-go => k8s.io/client-go v0.30.2 -replace k8s.io/cloud-provider => k8s.io/cloud-provider v0.30.1 +replace k8s.io/cloud-provider => k8s.io/cloud-provider v0.30.2 -replace k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.30.1 +replace k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.30.2 -replace k8s.io/code-generator => k8s.io/code-generator v0.30.1 +replace k8s.io/code-generator => k8s.io/code-generator v0.30.2 -replace k8s.io/component-base => k8s.io/component-base v0.30.1 +replace k8s.io/component-base => k8s.io/component-base v0.30.2 -replace k8s.io/component-helpers => k8s.io/component-helpers v0.30.1 +replace k8s.io/component-helpers => k8s.io/component-helpers v0.30.2 -replace k8s.io/controller-manager => k8s.io/controller-manager v0.30.1 +replace k8s.io/controller-manager => k8s.io/controller-manager v0.30.2 -replace k8s.io/cri-api => k8s.io/cri-api v0.30.1 +replace k8s.io/cri-api => k8s.io/cri-api v0.30.2 -replace k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.30.1 +replace k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.30.2 -replace k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.30.1 +replace k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.30.2 -replace k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.30.1 +replace k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.30.2 -replace k8s.io/kube-proxy => k8s.io/kube-proxy v0.30.1 +replace k8s.io/kube-proxy => k8s.io/kube-proxy v0.30.2 -replace k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.30.1 +replace k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.30.2 -replace k8s.io/kubectl => k8s.io/kubectl v0.30.1 +replace k8s.io/kubectl => k8s.io/kubectl v0.30.2 -replace k8s.io/kubelet => k8s.io/kubelet v0.30.1 +replace k8s.io/kubelet => k8s.io/kubelet v0.30.2 -replace k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.30.1 +replace k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.30.2 -replace k8s.io/metrics => k8s.io/metrics v0.30.1 +replace k8s.io/metrics => k8s.io/metrics v0.30.2 -replace k8s.io/mount-utils => k8s.io/mount-utils v0.30.1 +replace k8s.io/mount-utils => k8s.io/mount-utils v0.30.2 -replace k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.30.1 +replace k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.30.2 -replace k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.30.1 +replace k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.30.2 -replace k8s.io/sample-controller => k8s.io/sample-controller v0.30.1 +replace k8s.io/sample-controller => k8s.io/sample-controller v0.30.2 -replace k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.30.1 +replace k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.30.2 -replace k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.30.1 +replace k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.30.2 -replace k8s.io/kms => k8s.io/kms v0.30.1 +replace k8s.io/kms => k8s.io/kms v0.30.2 -replace k8s.io/endpointslice => k8s.io/endpointslice v0.30.1 +replace k8s.io/endpointslice => k8s.io/endpointslice v0.30.2 replace k8s.io/autoscaler/cluster-autoscaler/apis => ./apis diff --git a/cluster-autoscaler/go.sum b/cluster-autoscaler/go.sum index 6086c5e99cc3..bd1e140bdd19 100644 --- a/cluster-autoscaler/go.sum +++ b/cluster-autoscaler/go.sum @@ -1082,55 +1082,55 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.30.1 h1:kCm/6mADMdbAxmIh0LBjS54nQBE+U4KmbCfIkF5CpJY= -k8s.io/api v0.30.1/go.mod h1:ddbN2C0+0DIiPntan/bye3SW3PdwLa11/0yqwvuRrJM= -k8s.io/apiextensions-apiserver v0.30.1 h1:4fAJZ9985BmpJG6PkoxVRpXv9vmPUOVzl614xarePws= -k8s.io/apiextensions-apiserver v0.30.1/go.mod h1:R4GuSrlhgq43oRY9sF2IToFh7PVlF1JjfWdoG3pixk4= -k8s.io/apimachinery v0.30.1 h1:ZQStsEfo4n65yAdlGTfP/uSHMQSoYzU/oeEbkmF7P2U= -k8s.io/apimachinery v0.30.1/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= -k8s.io/apiserver v0.30.1 h1:BEWEe8bzS12nMtDKXzCF5Q5ovp6LjjYkSp8qOPk8LZ8= -k8s.io/apiserver v0.30.1/go.mod h1:i87ZnQ+/PGAmSbD/iEKM68bm1D5reX8fO4Ito4B01mo= -k8s.io/client-go v0.30.1 h1:uC/Ir6A3R46wdkgCV3vbLyNOYyCJ8oZnjtJGKfytl/Q= -k8s.io/client-go v0.30.1/go.mod h1:wrAqLNs2trwiCH/wxxmT/x3hKVH9PuV0GGW0oDoHVqc= -k8s.io/cloud-provider v0.30.1 h1:OslHpog97zG9Kr7/vV1ki8nLKq8xTPUkN/kepCxBqKI= -k8s.io/cloud-provider v0.30.1/go.mod h1:1uZp+FSskXQoeAAIU91/XCO8X/9N1U3z5usYeSLT4MI= +k8s.io/api v0.30.2 h1:+ZhRj+28QT4UOH+BKznu4CBgPWgkXO7XAvMcMl0qKvI= +k8s.io/api v0.30.2/go.mod h1:ULg5g9JvOev2dG0u2hig4Z7tQ2hHIuS+m8MNZ+X6EmI= +k8s.io/apiextensions-apiserver v0.30.2 h1:l7Eue2t6QiLHErfn2vwK4KgF4NeDgjQkCXtEbOocKIE= +k8s.io/apiextensions-apiserver v0.30.2/go.mod h1:lsJFLYyK40iguuinsb3nt+Sj6CmodSI4ACDLep1rgjw= +k8s.io/apimachinery v0.30.2 h1:fEMcnBj6qkzzPGSVsAZtQThU62SmQ4ZymlXRC5yFSCg= +k8s.io/apimachinery v0.30.2/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= +k8s.io/apiserver v0.30.2 h1:ACouHiYl1yFI2VFI3YGM+lvxgy6ir4yK2oLOsLI1/tw= +k8s.io/apiserver v0.30.2/go.mod h1:BOTdFBIch9Sv0ypSEcUR6ew/NUFGocRFNl72Ra7wTm8= +k8s.io/client-go v0.30.2 h1:sBIVJdojUNPDU/jObC+18tXWcTJVcwyqS9diGdWHk50= +k8s.io/client-go v0.30.2/go.mod h1:JglKSWULm9xlJLx4KCkfLLQ7XwtlbflV6uFFSHTMgVs= +k8s.io/cloud-provider v0.30.2 h1:yov6r02v7sMUNNvzEz51LtL2krn2c1wsC+dy/8BxKQI= +k8s.io/cloud-provider v0.30.2/go.mod h1:w69t2dSjDtI9BYK6SEqj6HmMKIojEk08fXRoUzjFN2I= k8s.io/cloud-provider-aws v1.27.0 h1:PF8YrH8QcN6JoXB3Xxlaz84SBDYMPunJuCc0cPuCWXA= k8s.io/cloud-provider-aws v1.27.0/go.mod h1:9vUb5mnVnReSRDBWcBxB1b0HOeEc472iOPmrnwpN9SA= -k8s.io/code-generator v0.30.1 h1:ZsG++q5Vt0ScmKCeLhynUuWgcwFGg1Hl1AGfatqPJBI= -k8s.io/code-generator v0.30.1/go.mod h1:hFgxRsvOUg79mbpbVKfjJvRhVz1qLoe40yZDJ/hwRH4= -k8s.io/component-base v0.30.1 h1:bvAtlPh1UrdaZL20D9+sWxsJljMi0QZ3Lmw+kmZAaxQ= -k8s.io/component-base v0.30.1/go.mod h1:e/X9kDiOebwlI41AvBHuWdqFriSRrX50CdwA9TFaHLI= -k8s.io/component-helpers v0.30.1 h1:/UcxSLzZ0owluTE2WMDrFfZl2L+WVXKdYYYm68qnH7U= -k8s.io/component-helpers v0.30.1/go.mod h1:b1Xk27UJ3p/AmPqDx7khrnSxrdwQy9gTP7O1y6MZ6rg= -k8s.io/controller-manager v0.30.1 h1:vrpfinHQWGf40U08Zmrt+QxK/2yTgjJl/9DKtjaB1gI= -k8s.io/controller-manager v0.30.1/go.mod h1:8rTEPbn8LRKC/vS+If+JAKBfsftCfTMaF8/n4SJC+PQ= -k8s.io/cri-api v0.30.1 h1:AUM78wiC56B1WJ2c795AS0IG5T57CkEdkn0IuC+miAE= -k8s.io/cri-api v0.30.1/go.mod h1://4/umPJSW1ISNSNng4OwjpkvswJOQwU8rnkvO8P+xg= -k8s.io/csi-translation-lib v0.30.1 h1:fIBtNMQjyr7HFv3xGSSH9cWOQS1K1kIBmZ1zRsHuVKs= -k8s.io/csi-translation-lib v0.30.1/go.mod h1:l0HrIBIxUKRvqnNWqn6AXTYgUa2mAFLT6bjo1lU+55U= -k8s.io/dynamic-resource-allocation v0.30.1 h1:Orv5t34/PMUxi57Fgzr3UpeWUvp5RmM3HWeQKqzTnyw= -k8s.io/dynamic-resource-allocation v0.30.1/go.mod h1:l1kPvmIhxAysEHqW0lGjSIRvansWSpq27wCuqCccP6E= +k8s.io/code-generator v0.30.2 h1:ZY1+aGkqZVwKIyGsOzquaeZ5rSfE6wZHur8z3jQAaiw= +k8s.io/code-generator v0.30.2/go.mod h1:RQP5L67QxqgkVquk704CyvWFIq0e6RCMmLTXxjE8dVA= +k8s.io/component-base v0.30.2 h1:pqGBczYoW1sno8q9ObExUqrYSKhtE5rW3y6gX88GZII= +k8s.io/component-base v0.30.2/go.mod h1:yQLkQDrkK8J6NtP+MGJOws+/PPeEXNpwFixsUI7h/OE= +k8s.io/component-helpers v0.30.2 h1:kDMYLiWEYeWU7H6jBI+Ua1i2hqNh0DzqDHNIppFC3po= +k8s.io/component-helpers v0.30.2/go.mod h1:tI0anfS6AbRqooaICkGg7UVAQLedOauVSQW9srDBnJw= +k8s.io/controller-manager v0.30.2 h1:tC7V7IdGUW2I4de3bXx4m2fS3naP7VlCYlECCajK9fU= +k8s.io/controller-manager v0.30.2/go.mod h1:CYltIHGhCgldEkXT5vS2JHCCWM1WyBI4kA2UfP9cZvY= +k8s.io/cri-api v0.30.2 h1:4KR5W6ziqfGzKYVmFG9AEOJzxNbCPyZMoeCeIlK9jew= +k8s.io/cri-api v0.30.2/go.mod h1://4/umPJSW1ISNSNng4OwjpkvswJOQwU8rnkvO8P+xg= +k8s.io/csi-translation-lib v0.30.2 h1:ZcFVMWDHg7feW3mtdl+xClgmw1Yxv7m9ysOKt8h3K8Y= +k8s.io/csi-translation-lib v0.30.2/go.mod h1:jFT8vquP6eSDUwDHk0mKT6uKFWlZp60ecUEUhmlGsOY= +k8s.io/dynamic-resource-allocation v0.30.2 h1:wEhjNbVPymPEY5Db4UXPiQkioHV/4MHDzAkf+1TLaNM= +k8s.io/dynamic-resource-allocation v0.30.2/go.mod h1:J5gKMh7FcGcWziX6ugeNfyFM8j1mvxBgYWrLfRDZ38k= k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70 h1:NGrVE502P0s0/1hudf8zjgwki1X/TByhmAoILTarmzo= k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70/go.mod h1:VH3AT8AaQOqiGjMF9p0/IM1Dj+82ZwjfxUP1IxaHE+8= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kms v0.30.1 h1:gEIbEeCbFiaN2tNfp/EUhFdGr5/CSj8Eyq6Mkr7cCiY= -k8s.io/kms v0.30.1/go.mod h1:GrMurD0qk3G4yNgGcsCEmepqf9KyyIrTXYR2lyUOJC4= +k8s.io/kms v0.30.2 h1:VSZILO/tkzrz5Tu2j+yFQZ2Dc5JerQZX2GqhFJbQrfw= +k8s.io/kms v0.30.2/go.mod h1:GrMurD0qk3G4yNgGcsCEmepqf9KyyIrTXYR2lyUOJC4= k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= -k8s.io/kube-scheduler v0.30.1 h1:bH7Ie+gSDHas0BVjtdEY87zGLCPA2WMZ+TV4/7lqXg0= -k8s.io/kube-scheduler v0.30.1/go.mod h1:nAiJHoSyc3/XBUGE24MYcoSiDMuUhabmKVD0KTjQdus= -k8s.io/kubectl v0.30.1 h1:sHFIRI3oP0FFZmBAVEE8ErjnTyXDPkBcvO88mH9RjuY= -k8s.io/kubectl v0.30.1/go.mod h1:7j+L0Cc38RYEcx+WH3y44jRBe1Q1jxdGPKkX0h4iDq0= -k8s.io/kubelet v0.30.1 h1:6gS1gWjrefUGfC/9n0ITOzxnKyt89FfkIhom70Bola4= -k8s.io/kubelet v0.30.1/go.mod h1:5IUeAt3YlIfLNdT/YfRuCCONfEefm7qfcqz81b002Z8= -k8s.io/kubernetes v1.30.1 h1:XlqS6KslLEA5mQzLK2AJrhr4Z1m8oJfkhHiWJ5lue+I= -k8s.io/kubernetes v1.30.1/go.mod h1:yPbIk3MhmhGigX62FLJm+CphNtjxqCvAIFQXup6RKS0= -k8s.io/legacy-cloud-providers v0.30.1 h1:QGoeW4C7TQdsuMagqmzUVYhh7m0r4tyzgtmxU0iubqo= -k8s.io/legacy-cloud-providers v0.30.1/go.mod h1:cYPg6vX/fH4lp6smtN/QKRWPuJPDRWqIp1JOVs674zc= -k8s.io/mount-utils v0.30.1 h1:4HEFqo2bzRjCHHXRu7yQh6tvpMnplwWaqhuU7oE3710= -k8s.io/mount-utils v0.30.1/go.mod h1:9sCVmwGLcV1MPvbZ+rToMDnl1QcGozy+jBPd0MsQLIo= +k8s.io/kube-scheduler v0.30.2 h1:2uR6qVkAV4ySzAQws5XDTWu62mRCxwm2m9oS0EIhAQI= +k8s.io/kube-scheduler v0.30.2/go.mod h1:ft17TR1cD7ZgLC5m3xkpvU4wK2X5ccbsg/b+a3HdR2Y= +k8s.io/kubectl v0.30.2 h1:cgKNIvsOiufgcs4yjvgkK0+aPCfa8pUwzXdJtkbhsH8= +k8s.io/kubectl v0.30.2/go.mod h1:rz7GHXaxwnigrqob0lJsiA07Df8RE3n1TSaC2CTeuB4= +k8s.io/kubelet v0.30.2 h1:Ck4E/pHndI20IzDXxS57dElhDGASPO5pzXF7BcKfmCY= +k8s.io/kubelet v0.30.2/go.mod h1:DSwwTbLQmdNkebAU7ypIALR4P9aXZNFwgRmedojUE94= +k8s.io/kubernetes v1.30.2 h1:11WhS78OYX/lnSy6TXxPO6Hk+E5K9ZNrEsk9JgMSX8I= +k8s.io/kubernetes v1.30.2/go.mod h1:yPbIk3MhmhGigX62FLJm+CphNtjxqCvAIFQXup6RKS0= +k8s.io/legacy-cloud-providers v0.30.2 h1:RfMtmbAPvTn7+nkHRWXpGeaif4x7VBOU2SAZ2BdFEdI= +k8s.io/legacy-cloud-providers v0.30.2/go.mod h1:Y3vTBCDw/A42HIwMBoVMpLv3hP5WewjUj8F6zYrO0Ug= +k8s.io/mount-utils v0.30.2 h1:2KDVY9hXyDyRw9EO4lmox4+Nn5atVOq+4ffZ/br2aAU= +k8s.io/mount-utils v0.30.2/go.mod h1:9sCVmwGLcV1MPvbZ+rToMDnl1QcGozy+jBPd0MsQLIo= k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/cel/compile.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/cel/compile.go index b7b589d273ac..bb5e233d4536 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/cel/compile.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/cel/compile.go @@ -222,40 +222,48 @@ func (c compiler) CompileCELExpression(expressionAccessor ExpressionAccessor, op func mustBuildEnvs(baseEnv *environment.EnvSet) variableDeclEnvs { requestType := BuildRequestType() namespaceType := BuildNamespaceType() - envs := make(variableDeclEnvs, 4) // since the number of variable combinations is small, pre-build a environment for each + envs := make(variableDeclEnvs, 8) // since the number of variable combinations is small, pre-build a environment for each for _, hasParams := range []bool{false, true} { for _, hasAuthorizer := range []bool{false, true} { - var envOpts []cel.EnvOption - if hasParams { - envOpts = append(envOpts, cel.Variable(ParamsVarName, cel.DynType)) - } - if hasAuthorizer { + for _, strictCost := range []bool{false, true} { + var envOpts []cel.EnvOption + if hasParams { + envOpts = append(envOpts, cel.Variable(ParamsVarName, cel.DynType)) + } + if hasAuthorizer { + envOpts = append(envOpts, + cel.Variable(AuthorizerVarName, library.AuthorizerType), + cel.Variable(RequestResourceAuthorizerVarName, library.ResourceCheckType)) + } envOpts = append(envOpts, - cel.Variable(AuthorizerVarName, library.AuthorizerType), - cel.Variable(RequestResourceAuthorizerVarName, library.ResourceCheckType)) - } - envOpts = append(envOpts, - cel.Variable(ObjectVarName, cel.DynType), - cel.Variable(OldObjectVarName, cel.DynType), - cel.Variable(NamespaceVarName, namespaceType.CelType()), - cel.Variable(RequestVarName, requestType.CelType())) + cel.Variable(ObjectVarName, cel.DynType), + cel.Variable(OldObjectVarName, cel.DynType), + cel.Variable(NamespaceVarName, namespaceType.CelType()), + cel.Variable(RequestVarName, requestType.CelType())) - extended, err := baseEnv.Extend( - environment.VersionedOptions{ - // Feature epoch was actually 1.26, but we artificially set it to 1.0 because these - // options should always be present. - IntroducedVersion: version.MajorMinor(1, 0), - EnvOptions: envOpts, - DeclTypes: []*apiservercel.DeclType{ - namespaceType, - requestType, + extended, err := baseEnv.Extend( + environment.VersionedOptions{ + // Feature epoch was actually 1.26, but we artificially set it to 1.0 because these + // options should always be present. + IntroducedVersion: version.MajorMinor(1, 0), + EnvOptions: envOpts, + DeclTypes: []*apiservercel.DeclType{ + namespaceType, + requestType, + }, }, - }, - ) - if err != nil { - panic(fmt.Sprintf("environment misconfigured: %v", err)) + ) + if err != nil { + panic(fmt.Sprintf("environment misconfigured: %v", err)) + } + if strictCost { + extended, err = extended.Extend(environment.StrictCostOpt) + if err != nil { + panic(fmt.Sprintf("environment misconfigured: %v", err)) + } + } + envs[OptionalVariableDeclarations{HasParams: hasParams, HasAuthorizer: hasAuthorizer, StrictCost: strictCost}] = extended } - envs[OptionalVariableDeclarations{HasParams: hasParams, HasAuthorizer: hasAuthorizer}] = extended } } return envs diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/cel/interface.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/cel/interface.go index c9f4e63369f0..ae61dc826c4b 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/cel/interface.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/cel/interface.go @@ -57,10 +57,12 @@ type OptionalVariableDeclarations struct { // HasParams specifies if the "params" variable is declared. // The "params" variable may still be bound to "null" when declared. HasParams bool - // HasAuthorizer specifies if the"authorizer" and "authorizer.requestResource" + // HasAuthorizer specifies if the "authorizer" and "authorizer.requestResource" // variables are declared. When declared, the authorizer variables are // expected to be non-null. HasAuthorizer bool + // StrictCost specifies if the CEL cost limitation is strict for extended libraries as well as native libraries. + StrictCost bool } // FilterCompiler contains a function to assist with converting types and values to/from CEL-typed values. diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/policy/validating/plugin.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/policy/validating/plugin.go index c286cffbdc86..fb097737a8c1 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/policy/validating/plugin.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/policy/validating/plugin.go @@ -31,6 +31,7 @@ import ( "k8s.io/apiserver/pkg/authorization/authorizer" "k8s.io/apiserver/pkg/cel/environment" "k8s.io/apiserver/pkg/features" + utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/dynamic" "k8s.io/client-go/informers" "k8s.io/client-go/kubernetes" @@ -43,13 +44,21 @@ const ( ) var ( - compositionEnvTemplate *cel.CompositionEnv = func() *cel.CompositionEnv { - compositionEnvTemplate, err := cel.NewCompositionEnv(cel.VariablesTypeName, environment.MustBaseEnvSet(environment.DefaultCompatibilityVersion())) + compositionEnvTemplateWithStrictCost *cel.CompositionEnv = func() *cel.CompositionEnv { + compositionEnvTemplateWithStrictCost, err := cel.NewCompositionEnv(cel.VariablesTypeName, environment.MustBaseEnvSet(environment.DefaultCompatibilityVersion(), true)) if err != nil { panic(err) } - return compositionEnvTemplate + return compositionEnvTemplateWithStrictCost + }() + compositionEnvTemplateWithoutStrictCost *cel.CompositionEnv = func() *cel.CompositionEnv { + compositionEnvTemplateWithoutStrictCost, err := cel.NewCompositionEnv(cel.VariablesTypeName, environment.MustBaseEnvSet(environment.DefaultCompatibilityVersion(), false)) + if err != nil { + panic(err) + } + + return compositionEnvTemplateWithoutStrictCost }() ) @@ -114,12 +123,18 @@ func compilePolicy(policy *Policy) Validator { if policy.Spec.ParamKind != nil { hasParam = true } - optionalVars := cel.OptionalVariableDeclarations{HasParams: hasParam, HasAuthorizer: true} - expressionOptionalVars := cel.OptionalVariableDeclarations{HasParams: hasParam, HasAuthorizer: false} + strictCost := utilfeature.DefaultFeatureGate.Enabled(features.StrictCostEnforcementForVAP) + optionalVars := cel.OptionalVariableDeclarations{HasParams: hasParam, HasAuthorizer: true, StrictCost: strictCost} + expressionOptionalVars := cel.OptionalVariableDeclarations{HasParams: hasParam, HasAuthorizer: false, StrictCost: strictCost} failurePolicy := policy.Spec.FailurePolicy var matcher matchconditions.Matcher = nil matchConditions := policy.Spec.MatchConditions - + var compositionEnvTemplate *cel.CompositionEnv + if strictCost { + compositionEnvTemplate = compositionEnvTemplateWithStrictCost + } else { + compositionEnvTemplate = compositionEnvTemplateWithoutStrictCost + } filterCompiler := cel.NewCompositedCompilerFromTemplate(compositionEnvTemplate) filterCompiler.CompileAndStoreVariables(convertv1beta1Variables(policy.Spec.Variables), optionalVars, environment.StoredExpressions) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/policy/validating/typechecking.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/policy/validating/typechecking.go index 16184b4badd4..192be9621bde 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/policy/validating/typechecking.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/policy/validating/typechecking.go @@ -39,6 +39,8 @@ import ( "k8s.io/apiserver/pkg/cel/library" "k8s.io/apiserver/pkg/cel/openapi" "k8s.io/apiserver/pkg/cel/openapi/resolver" + "k8s.io/apiserver/pkg/features" + utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/klog/v2" ) @@ -210,6 +212,7 @@ func (c *TypeChecker) CheckExpression(ctx *TypeCheckingContext, expression strin options := plugincel.OptionalVariableDeclarations{ HasParams: ctx.paramDeclType != nil, HasAuthorizer: true, + StrictCost: utilfeature.DefaultFeatureGate.Enabled(features.StrictCostEnforcementForVAP), } compiler.CompileAndStoreVariables(convertv1beta1Variables(ctx.variables), options, environment.StoredExpressions) result := compiler.CompileCELExpression(celExpression(expression), options, environment.StoredExpressions) @@ -391,7 +394,7 @@ func (c *TypeChecker) tryRefreshRESTMapper() { } func buildEnvSet(hasParams bool, hasAuthorizer bool, types typeOverwrite) (*environment.EnvSet, error) { - baseEnv := environment.MustBaseEnvSet(environment.DefaultCompatibilityVersion()) + baseEnv := environment.MustBaseEnvSet(environment.DefaultCompatibilityVersion(), utilfeature.DefaultFeatureGate.Enabled(features.StrictCostEnforcementForVAP)) requestType := plugincel.BuildRequestType() namespaceType := plugincel.BuildNamespaceType() diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/accessors.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/accessors.go index e60d245a621b..f23580cc09f7 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/accessors.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/accessors.go @@ -27,6 +27,8 @@ import ( "k8s.io/apiserver/pkg/admission/plugin/webhook/predicates/namespace" "k8s.io/apiserver/pkg/admission/plugin/webhook/predicates/object" "k8s.io/apiserver/pkg/cel/environment" + "k8s.io/apiserver/pkg/features" + utilfeature "k8s.io/apiserver/pkg/util/feature" webhookutil "k8s.io/apiserver/pkg/util/webhook" "k8s.io/client-go/rest" ) @@ -139,11 +141,16 @@ func (m *mutatingWebhookAccessor) GetCompiledMatcher(compiler cel.FilterCompiler Expression: matchCondition.Expression, } } + strictCost := false + if utilfeature.DefaultFeatureGate.Enabled(features.StrictCostEnforcementForWebhooks) { + strictCost = true + } m.compiledMatcher = matchconditions.NewMatcher(compiler.Compile( expressions, cel.OptionalVariableDeclarations{ HasParams: false, HasAuthorizer: true, + StrictCost: strictCost, }, environment.StoredExpressions, ), m.FailurePolicy, "webhook", "admit", m.Name) @@ -267,11 +274,16 @@ func (v *validatingWebhookAccessor) GetCompiledMatcher(compiler cel.FilterCompil Expression: matchCondition.Expression, } } + strictCost := false + if utilfeature.DefaultFeatureGate.Enabled(features.StrictCostEnforcementForWebhooks) { + strictCost = true + } v.compiledMatcher = matchconditions.NewMatcher(compiler.Compile( expressions, cel.OptionalVariableDeclarations{ HasParams: false, HasAuthorizer: true, + StrictCost: strictCost, }, environment.StoredExpressions, ), v.FailurePolicy, "webhook", "validating", v.Name) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/generic/webhook.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/generic/webhook.go index 6a513f1c11aa..f067b3f723ce 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/generic/webhook.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/generic/webhook.go @@ -21,7 +21,6 @@ import ( "fmt" "io" - admissionmetrics "k8s.io/apiserver/pkg/admission/metrics" "k8s.io/klog/v2" admissionv1 "k8s.io/api/admission/v1" @@ -31,6 +30,7 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apiserver/pkg/admission" genericadmissioninit "k8s.io/apiserver/pkg/admission/initializer" + admissionmetrics "k8s.io/apiserver/pkg/admission/metrics" "k8s.io/apiserver/pkg/admission/plugin/cel" "k8s.io/apiserver/pkg/admission/plugin/webhook" "k8s.io/apiserver/pkg/admission/plugin/webhook/config" @@ -39,6 +39,8 @@ import ( "k8s.io/apiserver/pkg/admission/plugin/webhook/predicates/rules" "k8s.io/apiserver/pkg/authorization/authorizer" "k8s.io/apiserver/pkg/cel/environment" + "k8s.io/apiserver/pkg/features" + utilfeature "k8s.io/apiserver/pkg/util/feature" webhookutil "k8s.io/apiserver/pkg/util/webhook" "k8s.io/client-go/informers" clientset "k8s.io/client-go/kubernetes" @@ -100,7 +102,7 @@ func NewWebhook(handler *admission.Handler, configFile io.Reader, sourceFactory namespaceMatcher: &namespace.Matcher{}, objectMatcher: &object.Matcher{}, dispatcher: dispatcherFactory(&cm), - filterCompiler: cel.NewFilterCompiler(environment.MustBaseEnvSet(environment.DefaultCompatibilityVersion())), + filterCompiler: cel.NewFilterCompiler(environment.MustBaseEnvSet(environment.DefaultCompatibilityVersion(), utilfeature.DefaultFeatureGate.Enabled(features.StrictCostEnforcementForWebhooks))), }, nil } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/validation/validation.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/validation/validation.go index 35ee8a4503cb..471eb4a74100 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/validation/validation.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/apiserver/validation/validation.go @@ -91,7 +91,8 @@ func CompileAndValidateJWTAuthenticator(authenticator api.JWTAuthenticator, disa func validateJWTAuthenticator(authenticator api.JWTAuthenticator, fldPath *field.Path, disallowedIssuers sets.Set[string], structuredAuthnFeatureEnabled bool) (authenticationcel.CELMapper, field.ErrorList) { var allErrs field.ErrorList - compiler := authenticationcel.NewCompiler(environment.MustBaseEnvSet(environment.DefaultCompatibilityVersion())) + // strictCost is set to true which enables the strict cost for CEL validation. + compiler := authenticationcel.NewCompiler(environment.MustBaseEnvSet(environment.DefaultCompatibilityVersion(), true)) state := &validationState{} allErrs = append(allErrs, validateIssuer(authenticator.Issuer, disallowedIssuers, fldPath.Child("issuer"))...) @@ -722,7 +723,8 @@ func compileMatchConditions(matchConditions []api.WebhookMatchCondition, fldPath return nil, allErrs } - compiler := authorizationcel.NewCompiler(environment.MustBaseEnvSet(environment.DefaultCompatibilityVersion())) + // strictCost is set to true which enables the strict cost for CEL validation. + compiler := authorizationcel.NewCompiler(environment.MustBaseEnvSet(environment.DefaultCompatibilityVersion(), true)) seenExpressions := sets.NewString() var compilationResults []authorizationcel.CompilationResult diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/cel/environment/base.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/cel/environment/base.go index c108bdd644f3..2cea83c2e12f 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/cel/environment/base.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/cel/environment/base.go @@ -46,7 +46,9 @@ func DefaultCompatibilityVersion() *version.Version { return version.MajorMinor(1, 29) } -var baseOpts = []VersionedOptions{ +var baseOpts = append(baseOptsWithoutStrictCost, StrictCostOpt) + +var baseOptsWithoutStrictCost = []VersionedOptions{ { // CEL epoch was actually 1.23, but we artificially set it to 1.0 because these // options should always be present. @@ -132,6 +134,14 @@ var baseOpts = []VersionedOptions{ }, } +var StrictCostOpt = VersionedOptions{ + // This is to configure the cost calculation for extended libraries + IntroducedVersion: version.MajorMinor(1, 0), + ProgramOptions: []cel.ProgramOption{ + cel.CostTracking(&library.CostEstimator{}), + }, +} + // MustBaseEnvSet returns the common CEL base environments for Kubernetes for Version, or panics // if the version is nil, or does not have major and minor components. // @@ -141,7 +151,8 @@ var baseOpts = []VersionedOptions{ // The returned environment contains no CEL variable definitions or custom type declarations and // should be extended to construct environments with the appropriate variable definitions, // type declarations and any other needed configuration. -func MustBaseEnvSet(ver *version.Version) *EnvSet { +// strictCost is used to determine whether to enforce strict cost calculation for CEL expressions. +func MustBaseEnvSet(ver *version.Version, strictCost bool) *EnvSet { if ver == nil { panic("version must be non-nil") } @@ -149,19 +160,33 @@ func MustBaseEnvSet(ver *version.Version) *EnvSet { panic(fmt.Sprintf("version must contain an major and minor component, but got: %s", ver.String())) } key := strconv.FormatUint(uint64(ver.Major()), 10) + "." + strconv.FormatUint(uint64(ver.Minor()), 10) - if entry, ok := baseEnvs.Load(key); ok { - return entry.(*EnvSet) + var entry interface{} + if strictCost { + if entry, ok := baseEnvs.Load(key); ok { + return entry.(*EnvSet) + } + entry, _, _ = baseEnvsSingleflight.Do(key, func() (interface{}, error) { + entry := mustNewEnvSet(ver, baseOpts) + baseEnvs.Store(key, entry) + return entry, nil + }) + } else { + if entry, ok := baseEnvsWithOption.Load(key); ok { + return entry.(*EnvSet) + } + entry, _, _ = baseEnvsWithOptionSingleflight.Do(key, func() (interface{}, error) { + entry := mustNewEnvSet(ver, baseOptsWithoutStrictCost) + baseEnvsWithOption.Store(key, entry) + return entry, nil + }) } - entry, _, _ := baseEnvsSingleflight.Do(key, func() (interface{}, error) { - entry := mustNewEnvSet(ver, baseOpts) - baseEnvs.Store(key, entry) - return entry, nil - }) return entry.(*EnvSet) } var ( - baseEnvs = sync.Map{} - baseEnvsSingleflight = &singleflight.Group{} + baseEnvs = sync.Map{} + baseEnvsWithOption = sync.Map{} + baseEnvsSingleflight = &singleflight.Group{} + baseEnvsWithOptionSingleflight = &singleflight.Group{} ) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/features/kube_features.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/features/kube_features.go index dbd41b8c5f0c..bae04d95458f 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/features/kube_features.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/features/kube_features.go @@ -220,6 +220,24 @@ const ( // if the generated name conflicts with an existing resource name, up to a maximum number of 7 retries. RetryGenerateName featuregate.Feature = "RetryGenerateName" + // owner: @cici37 + // alpha: v1.30 + // + // StrictCostEnforcementForVAP is used to apply strict CEL cost validation for ValidatingAdmissionPolicy. + // It will be set to off by default for certain time of period to prevent the impact on the existing users. + // It is strongly recommended to enable this feature gate as early as possible. + // The strict cost is specific for the extended libraries whose cost defined under k8s/apiserver/pkg/cel/library. + StrictCostEnforcementForVAP featuregate.Feature = "StrictCostEnforcementForVAP" + + // owner: @cici37 + // alpha: v1.30 + // + // StrictCostEnforcementForWebhooks is used to apply strict CEL cost validation for matchConditions in Webhooks. + // It will be set to off by default for certain time of period to prevent the impact on the existing users. + // It is strongly recommended to enable this feature gate as early as possible. + // The strict cost is specific for the extended libraries whose cost defined under k8s/apiserver/pkg/cel/library. + StrictCostEnforcementForWebhooks featuregate.Feature = "StrictCostEnforcementForWebhooks" + // owner: @caesarxuchao @roycaihw // alpha: v1.20 // @@ -347,6 +365,10 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS StorageVersionHash: {Default: true, PreRelease: featuregate.Beta}, + StrictCostEnforcementForVAP: {Default: false, PreRelease: featuregate.Beta}, + + StrictCostEnforcementForWebhooks: {Default: false, PreRelease: featuregate.Beta}, + StructuredAuthenticationConfiguration: {Default: true, PreRelease: featuregate.Beta}, StructuredAuthorizationConfiguration: {Default: true, PreRelease: featuregate.Beta}, diff --git a/cluster-autoscaler/vendor/k8s.io/dynamic-resource-allocation/structured/namedresources/cel/compile.go b/cluster-autoscaler/vendor/k8s.io/dynamic-resource-allocation/structured/namedresources/cel/compile.go index 755dcbff10b7..d4beb0ce6989 100644 --- a/cluster-autoscaler/vendor/k8s.io/dynamic-resource-allocation/structured/namedresources/cel/compile.go +++ b/cluster-autoscaler/vendor/k8s.io/dynamic-resource-allocation/structured/namedresources/cel/compile.go @@ -184,7 +184,8 @@ func (c CompilationResult) Evaluate(ctx context.Context, attributes []resourceap } func mustBuildEnv() *environment.EnvSet { - envset := environment.MustBaseEnvSet(environment.DefaultCompatibilityVersion()) + // strictCost is always true to enforce cost limits. + envset := environment.MustBaseEnvSet(environment.DefaultCompatibilityVersion(), true) versioned := []environment.VersionedOptions{ { // Feature epoch was actually 1.30, but we artificially set it to 1.0 because these diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/features/kube_features.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/features/kube_features.go index 87aeca3fd2fb..bfd01e1e046a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/features/kube_features.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/features/kube_features.go @@ -1297,6 +1297,10 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS genericfeatures.StorageVersionHash: {Default: true, PreRelease: featuregate.Beta}, + genericfeatures.StrictCostEnforcementForVAP: {Default: false, PreRelease: featuregate.Beta}, + + genericfeatures.StrictCostEnforcementForWebhooks: {Default: false, PreRelease: featuregate.Beta}, + genericfeatures.StructuredAuthenticationConfiguration: {Default: true, PreRelease: featuregate.Beta}, genericfeatures.StructuredAuthorizationConfiguration: {Default: true, PreRelease: featuregate.Beta}, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/interface.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/interface.go index 5fd8bd86fcf5..c5b7d89ceed6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/interface.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/interface.go @@ -49,7 +49,8 @@ type NodeScore struct { Score int64 } -// NodeToStatusMap declares map from node name to its status. +// NodeToStatusMap contains the statuses of the Nodes where the incoming Pod was not schedulable. +// A PostFilter plugin that uses this map should interpret absent Nodes as UnschedulableAndUnresolvable. type NodeToStatusMap map[string]*Status // NodePluginScores is a struct with node name and scores for that node. @@ -448,6 +449,7 @@ type PostFilterPlugin interface { // If this scheduling cycle failed at PreFilter, all Nodes have the status from the rejector PreFilter plugin in NodeToStatusMap. // Note that the scheduling framework runs PostFilter plugins even when PreFilter returned UnschedulableAndUnresolvable. // In that case, NodeToStatusMap contains all Nodes with UnschedulableAndUnresolvable. + // If there is no entry in the NodeToStatus map, its implicit status is UnschedulableAndUnresolvable. // // Also, ignoring Nodes with UnschedulableAndUnresolvable is the responsibility of each PostFilter plugin, // meaning NodeToStatusMap obviously could have Nodes with UnschedulableAndUnresolvable diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/preemption/preemption.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/preemption/preemption.go index 376b6337e99f..29864adb52f7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/preemption/preemption.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/preemption/preemption.go @@ -415,15 +415,18 @@ func (ev *Evaluator) prepareCandidate(ctx context.Context, c Candidate, pod *v1. func nodesWherePreemptionMightHelp(nodes []*framework.NodeInfo, m framework.NodeToStatusMap) ([]*framework.NodeInfo, framework.NodeToStatusMap) { var potentialNodes []*framework.NodeInfo nodeStatuses := make(framework.NodeToStatusMap) + unresolvableStatus := framework.NewStatus(framework.UnschedulableAndUnresolvable, "Preemption is not helpful for scheduling") for _, node := range nodes { - name := node.Node().Name - // We rely on the status by each plugin - 'Unschedulable' or 'UnschedulableAndUnresolvable' - // to determine whether preemption may help or not on the node. - if m[name].Code() == framework.UnschedulableAndUnresolvable { - nodeStatuses[node.Node().Name] = framework.NewStatus(framework.UnschedulableAndUnresolvable, "Preemption is not helpful for scheduling") - continue + nodeName := node.Node().Name + // We only attempt preemption on nodes with status 'Unschedulable'. For + // diagnostic purposes, we propagate UnschedulableAndUnresolvable if either + // implied by absence in map or explicitly set. + status, ok := m[nodeName] + if status.Code() == framework.Unschedulable { + potentialNodes = append(potentialNodes, node) + } else if !ok || status.Code() == framework.UnschedulableAndUnresolvable { + nodeStatuses[nodeName] = unresolvableStatus } - potentialNodes = append(potentialNodes, node) } return potentialNodes, nodeStatuses } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/types.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/types.go index 16421d86a8ea..97ae918dc4e8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/types.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/types.go @@ -325,9 +325,11 @@ const ExtenderName = "Extender" // Diagnosis records the details to diagnose a scheduling failure. type Diagnosis struct { - // NodeToStatusMap records the status of each node + // NodeToStatusMap records the status of each retriable node (status Unschedulable) // if they're rejected in PreFilter (via PreFilterResult) or Filter plugins. // Nodes that pass PreFilter/Filter plugins are not included in this map. + // While this map may contain UnschedulableAndUnresolvable statuses, the absence of + // a node should be interpreted as UnschedulableAndUnresolvable. NodeToStatusMap NodeToStatusMap // UnschedulablePlugins are plugins that returns Unschedulable or UnschedulableAndUnresolvable. UnschedulablePlugins sets.Set[string] diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/queue/scheduling_queue.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/queue/scheduling_queue.go index 115f81afc13d..93a8333a4a5f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/queue/scheduling_queue.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/queue/scheduling_queue.go @@ -1175,6 +1175,11 @@ func (p *PriorityQueue) movePodsToActiveOrBackoffQueue(logger klog.Logger, podIn activated := false for _, pInfo := range podInfoList { + // Since there may be many gated pods and they will not move from the + // unschedulable pool, we skip calling the expensive isPodWorthRequeueing. + if pInfo.Gated { + continue + } schedulingHint := p.isPodWorthRequeuing(logger, pInfo, event, oldObj, newObj) if schedulingHint == queueSkip { // QueueingHintFn determined that this Pod isn't worth putting to activeQ or backoffQ by this event. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/schedule_one.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/schedule_one.go index 282ce5ab8e2f..9df41bf470b9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/schedule_one.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/schedule_one.go @@ -488,21 +488,19 @@ func (sched *Scheduler) findNodesThatFitPod(ctx context.Context, fwk framework.F nodes := allNodes if !preRes.AllNodes() { nodes = make([]*framework.NodeInfo, 0, len(preRes.NodeNames)) - for _, n := range allNodes { - if !preRes.NodeNames.Has(n.Node().Name) { - // We consider Nodes that are filtered out by PreFilterResult as rejected via UnschedulableAndUnresolvable. - // We have to record them in NodeToStatusMap so that they won't be considered as candidates in the preemption. - diagnosis.NodeToStatusMap[n.Node().Name] = framework.NewStatus(framework.UnschedulableAndUnresolvable, "node is filtered out by the prefilter result") - continue + for nodeName := range preRes.NodeNames { + // PreRes may return nodeName(s) which do not exist; we verify + // node exists in the Snapshot. + if nodeInfo, err := sched.nodeInfoSnapshot.Get(nodeName); err == nil { + nodes = append(nodes, nodeInfo) } - nodes = append(nodes, n) } } feasibleNodes, err := sched.findNodesThatPassFilters(ctx, fwk, state, pod, &diagnosis, nodes) // always try to update the sched.nextStartNodeIndex regardless of whether an error has occurred // this is helpful to make sure that all the nodes have a chance to be searched processedNodes := len(feasibleNodes) + len(diagnosis.NodeToStatusMap) - sched.nextStartNodeIndex = (sched.nextStartNodeIndex + processedNodes) % len(nodes) + sched.nextStartNodeIndex = (sched.nextStartNodeIndex + processedNodes) % len(allNodes) if err != nil { return nil, diagnosis, err } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/plugins.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/plugins.go index 6ce01755fdc4..dcccb56f102e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/plugins.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/plugins.go @@ -1064,7 +1064,7 @@ func NewPersistentVolumeRecyclerPodTemplate() *v1.Pod { Containers: []v1.Container{ { Name: "pv-recycler", - Image: "registry.k8s.io/build-image/debian-base:bookworm-v1.0.2", + Image: "registry.k8s.io/build-image/debian-base:bookworm-v1.0.3", Command: []string{"/bin/sh"}, Args: []string{"-c", "test -e /scrub && find /scrub -mindepth 1 -delete && test -z \"$(ls -A /scrub)\" || exit 1"}, VolumeMounts: []v1.VolumeMount{ diff --git a/cluster-autoscaler/vendor/modules.txt b/cluster-autoscaler/vendor/modules.txt index 16aa26b8542d..5dbae38f341d 100644 --- a/cluster-autoscaler/vendor/modules.txt +++ b/cluster-autoscaler/vendor/modules.txt @@ -1032,7 +1032,7 @@ gopkg.in/yaml.v2 # gopkg.in/yaml.v3 v3.0.1 ## explicit gopkg.in/yaml.v3 -# k8s.io/api v0.30.1 => k8s.io/api v0.30.1 +# k8s.io/api v0.30.2 => k8s.io/api v0.30.2 ## explicit; go 1.22.0 k8s.io/api/admission/v1 k8s.io/api/admission/v1beta1 @@ -1090,10 +1090,10 @@ k8s.io/api/storage/v1 k8s.io/api/storage/v1alpha1 k8s.io/api/storage/v1beta1 k8s.io/api/storagemigration/v1alpha1 -# k8s.io/apiextensions-apiserver v0.0.0 => k8s.io/apiextensions-apiserver v0.30.1 +# k8s.io/apiextensions-apiserver v0.0.0 => k8s.io/apiextensions-apiserver v0.30.2 ## explicit; go 1.22.0 k8s.io/apiextensions-apiserver/pkg/features -# k8s.io/apimachinery v0.30.1 => k8s.io/apimachinery v0.30.1 +# k8s.io/apimachinery v0.30.2 => k8s.io/apimachinery v0.30.2 ## explicit; go 1.22.0 k8s.io/apimachinery/pkg/api/equality k8s.io/apimachinery/pkg/api/errors @@ -1157,7 +1157,7 @@ k8s.io/apimachinery/pkg/watch k8s.io/apimachinery/third_party/forked/golang/json k8s.io/apimachinery/third_party/forked/golang/netutil k8s.io/apimachinery/third_party/forked/golang/reflect -# k8s.io/apiserver v0.30.1 => k8s.io/apiserver v0.30.1 +# k8s.io/apiserver v0.30.2 => k8s.io/apiserver v0.30.2 ## explicit; go 1.22.0 k8s.io/apiserver/pkg/admission k8s.io/apiserver/pkg/admission/configuration @@ -1319,7 +1319,7 @@ k8s.io/autoscaler/cluster-autoscaler/apis/provisioningrequest/client/informers/e k8s.io/autoscaler/cluster-autoscaler/apis/provisioningrequest/client/informers/externalversions/autoscaling.x-k8s.io/v1beta1 k8s.io/autoscaler/cluster-autoscaler/apis/provisioningrequest/client/informers/externalversions/internalinterfaces k8s.io/autoscaler/cluster-autoscaler/apis/provisioningrequest/client/listers/autoscaling.x-k8s.io/v1beta1 -# k8s.io/client-go v0.30.1 => k8s.io/client-go v0.30.1 +# k8s.io/client-go v0.30.2 => k8s.io/client-go v0.30.2 ## explicit; go 1.22.0 k8s.io/client-go/applyconfigurations/admissionregistration/v1 k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1 @@ -1654,7 +1654,7 @@ k8s.io/client-go/util/homedir k8s.io/client-go/util/keyutil k8s.io/client-go/util/retry k8s.io/client-go/util/workqueue -# k8s.io/cloud-provider v0.30.1 => k8s.io/cloud-provider v0.30.1 +# k8s.io/cloud-provider v0.30.2 => k8s.io/cloud-provider v0.30.2 ## explicit; go 1.22.0 k8s.io/cloud-provider k8s.io/cloud-provider/api @@ -1677,7 +1677,7 @@ k8s.io/cloud-provider/volume/helpers # k8s.io/cloud-provider-aws v1.27.0 ## explicit; go 1.20 k8s.io/cloud-provider-aws/pkg/providers/v1 -# k8s.io/code-generator v0.30.1 => k8s.io/code-generator v0.30.1 +# k8s.io/code-generator v0.30.2 => k8s.io/code-generator v0.30.2 ## explicit; go 1.22.0 k8s.io/code-generator k8s.io/code-generator/cmd/applyconfiguration-gen @@ -1713,7 +1713,7 @@ k8s.io/code-generator/cmd/register-gen/generators k8s.io/code-generator/pkg/namer k8s.io/code-generator/pkg/util k8s.io/code-generator/third_party/forked/golang/reflect -# k8s.io/component-base v0.30.1 => k8s.io/component-base v0.30.1 +# k8s.io/component-base v0.30.2 => k8s.io/component-base v0.30.2 ## explicit; go 1.22.0 k8s.io/component-base/cli/flag k8s.io/component-base/codec @@ -1743,7 +1743,7 @@ k8s.io/component-base/tracing k8s.io/component-base/tracing/api/v1 k8s.io/component-base/version k8s.io/component-base/version/verflag -# k8s.io/component-helpers v0.30.1 => k8s.io/component-helpers v0.30.1 +# k8s.io/component-helpers v0.30.2 => k8s.io/component-helpers v0.30.2 ## explicit; go 1.22.0 k8s.io/component-helpers/apimachinery/lease k8s.io/component-helpers/node/topology @@ -1753,7 +1753,7 @@ k8s.io/component-helpers/scheduling/corev1 k8s.io/component-helpers/scheduling/corev1/nodeaffinity k8s.io/component-helpers/storage/ephemeral k8s.io/component-helpers/storage/volume -# k8s.io/controller-manager v0.30.1 => k8s.io/controller-manager v0.30.1 +# k8s.io/controller-manager v0.30.2 => k8s.io/controller-manager v0.30.2 ## explicit; go 1.22.0 k8s.io/controller-manager/config k8s.io/controller-manager/config/v1 @@ -1765,16 +1765,16 @@ k8s.io/controller-manager/pkg/features k8s.io/controller-manager/pkg/features/register k8s.io/controller-manager/pkg/leadermigration/config k8s.io/controller-manager/pkg/leadermigration/options -# k8s.io/cri-api v0.30.1 => k8s.io/cri-api v0.30.1 +# k8s.io/cri-api v0.30.2 => k8s.io/cri-api v0.30.2 ## explicit; go 1.22.0 k8s.io/cri-api/pkg/apis k8s.io/cri-api/pkg/apis/runtime/v1 k8s.io/cri-api/pkg/errors -# k8s.io/csi-translation-lib v0.27.0 => k8s.io/csi-translation-lib v0.30.1 +# k8s.io/csi-translation-lib v0.27.0 => k8s.io/csi-translation-lib v0.30.2 ## explicit; go 1.22.0 k8s.io/csi-translation-lib k8s.io/csi-translation-lib/plugins -# k8s.io/dynamic-resource-allocation v0.0.0 => k8s.io/dynamic-resource-allocation v0.30.1 +# k8s.io/dynamic-resource-allocation v0.0.0 => k8s.io/dynamic-resource-allocation v0.30.2 ## explicit; go 1.22.0 k8s.io/dynamic-resource-allocation/resourceclaim k8s.io/dynamic-resource-allocation/structured/namedresources/cel @@ -1796,7 +1796,7 @@ k8s.io/klog/v2/internal/severity k8s.io/klog/v2/internal/sloghandler k8s.io/klog/v2/internal/verbosity k8s.io/klog/v2/textlogger -# k8s.io/kms v0.30.1 => k8s.io/kms v0.30.1 +# k8s.io/kms v0.30.2 => k8s.io/kms v0.30.2 ## explicit; go 1.22.0 k8s.io/kms/apis/v1beta1 k8s.io/kms/apis/v2 @@ -1823,14 +1823,14 @@ k8s.io/kube-openapi/pkg/validation/errors k8s.io/kube-openapi/pkg/validation/spec k8s.io/kube-openapi/pkg/validation/strfmt k8s.io/kube-openapi/pkg/validation/strfmt/bson -# k8s.io/kube-scheduler v0.0.0 => k8s.io/kube-scheduler v0.30.1 +# k8s.io/kube-scheduler v0.0.0 => k8s.io/kube-scheduler v0.30.2 ## explicit; go 1.22.0 k8s.io/kube-scheduler/config/v1 k8s.io/kube-scheduler/extender/v1 -# k8s.io/kubectl v0.28.0 => k8s.io/kubectl v0.30.1 +# k8s.io/kubectl v0.28.0 => k8s.io/kubectl v0.30.2 ## explicit; go 1.22.0 k8s.io/kubectl/pkg/scale -# k8s.io/kubelet v0.30.1 => k8s.io/kubelet v0.30.1 +# k8s.io/kubelet v0.30.2 => k8s.io/kubelet v0.30.2 ## explicit; go 1.22.0 k8s.io/kubelet/config/v1 k8s.io/kubelet/config/v1alpha1 @@ -1852,7 +1852,7 @@ k8s.io/kubelet/pkg/cri/streaming k8s.io/kubelet/pkg/cri/streaming/portforward k8s.io/kubelet/pkg/cri/streaming/remotecommand k8s.io/kubelet/pkg/types -# k8s.io/kubernetes v1.30.1 +# k8s.io/kubernetes v1.30.2 ## explicit; go 1.22.0 k8s.io/kubernetes/cmd/kubelet/app k8s.io/kubernetes/cmd/kubelet/app/options @@ -2097,11 +2097,11 @@ k8s.io/kubernetes/pkg/volume/validation k8s.io/kubernetes/pkg/windows/service k8s.io/kubernetes/test/utils k8s.io/kubernetes/third_party/forked/golang/expansion -# k8s.io/legacy-cloud-providers v0.0.0 => k8s.io/legacy-cloud-providers v0.30.1 +# k8s.io/legacy-cloud-providers v0.0.0 => k8s.io/legacy-cloud-providers v0.30.2 ## explicit; go 1.22.0 k8s.io/legacy-cloud-providers/gce k8s.io/legacy-cloud-providers/gce/gcpcredential -# k8s.io/mount-utils v0.26.0-alpha.0 => k8s.io/mount-utils v0.30.1 +# k8s.io/mount-utils v0.26.0-alpha.0 => k8s.io/mount-utils v0.30.2 ## explicit; go 1.22.0 k8s.io/mount-utils # k8s.io/utils v0.0.0-20230726121419-3b25d923346b @@ -2201,34 +2201,34 @@ sigs.k8s.io/yaml # github.com/aws/aws-sdk-go/service/eks => github.com/aws/aws-sdk-go/service/eks v1.38.49 # github.com/digitalocean/godo => github.com/digitalocean/godo v1.27.0 # github.com/rancher/go-rancher => github.com/rancher/go-rancher v0.1.0 -# k8s.io/api => k8s.io/api v0.30.1 -# k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.30.1 -# k8s.io/apimachinery => k8s.io/apimachinery v0.30.1 -# k8s.io/apiserver => k8s.io/apiserver v0.30.1 -# k8s.io/cli-runtime => k8s.io/cli-runtime v0.30.1 -# k8s.io/client-go => k8s.io/client-go v0.30.1 -# k8s.io/cloud-provider => k8s.io/cloud-provider v0.30.1 -# k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.30.1 -# k8s.io/code-generator => k8s.io/code-generator v0.30.1 -# k8s.io/component-base => k8s.io/component-base v0.30.1 -# k8s.io/component-helpers => k8s.io/component-helpers v0.30.1 -# k8s.io/controller-manager => k8s.io/controller-manager v0.30.1 -# k8s.io/cri-api => k8s.io/cri-api v0.30.1 -# k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.30.1 -# k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.30.1 -# k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.30.1 -# k8s.io/kube-proxy => k8s.io/kube-proxy v0.30.1 -# k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.30.1 -# k8s.io/kubectl => k8s.io/kubectl v0.30.1 -# k8s.io/kubelet => k8s.io/kubelet v0.30.1 -# k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.30.1 -# k8s.io/metrics => k8s.io/metrics v0.30.1 -# k8s.io/mount-utils => k8s.io/mount-utils v0.30.1 -# k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.30.1 -# k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.30.1 -# k8s.io/sample-controller => k8s.io/sample-controller v0.30.1 -# k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.30.1 -# k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.30.1 -# k8s.io/kms => k8s.io/kms v0.30.1 -# k8s.io/endpointslice => k8s.io/endpointslice v0.30.1 +# k8s.io/api => k8s.io/api v0.30.2 +# k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.30.2 +# k8s.io/apimachinery => k8s.io/apimachinery v0.30.2 +# k8s.io/apiserver => k8s.io/apiserver v0.30.2 +# k8s.io/cli-runtime => k8s.io/cli-runtime v0.30.2 +# k8s.io/client-go => k8s.io/client-go v0.30.2 +# k8s.io/cloud-provider => k8s.io/cloud-provider v0.30.2 +# k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.30.2 +# k8s.io/code-generator => k8s.io/code-generator v0.30.2 +# k8s.io/component-base => k8s.io/component-base v0.30.2 +# k8s.io/component-helpers => k8s.io/component-helpers v0.30.2 +# k8s.io/controller-manager => k8s.io/controller-manager v0.30.2 +# k8s.io/cri-api => k8s.io/cri-api v0.30.2 +# k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.30.2 +# k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.30.2 +# k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.30.2 +# k8s.io/kube-proxy => k8s.io/kube-proxy v0.30.2 +# k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.30.2 +# k8s.io/kubectl => k8s.io/kubectl v0.30.2 +# k8s.io/kubelet => k8s.io/kubelet v0.30.2 +# k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.30.2 +# k8s.io/metrics => k8s.io/metrics v0.30.2 +# k8s.io/mount-utils => k8s.io/mount-utils v0.30.2 +# k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.30.2 +# k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.30.2 +# k8s.io/sample-controller => k8s.io/sample-controller v0.30.2 +# k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.30.2 +# k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.30.2 +# k8s.io/kms => k8s.io/kms v0.30.2 +# k8s.io/endpointslice => k8s.io/endpointslice v0.30.2 # k8s.io/autoscaler/cluster-autoscaler/apis => ./apis diff --git a/cluster-autoscaler/version/version.go b/cluster-autoscaler/version/version.go index 008246d9c202..8b5016b6ef7a 100644 --- a/cluster-autoscaler/version/version.go +++ b/cluster-autoscaler/version/version.go @@ -17,4 +17,4 @@ limitations under the License. package version // ClusterAutoscalerVersion contains version of CA. -const ClusterAutoscalerVersion = "1.30.1" +const ClusterAutoscalerVersion = "1.30.2"