Skip to content

Commit c602c65

Browse files
authored
chore: update sigs.k8s.io/karpenter to v1.4.0 (#601)
* chore: update sigs.k8s.io/karpenter to v1.1.0 * chore: update main and alt operator * chore: remove webhooks wiring * chore: update operator * chore: update cloudprovider * chore: fix tests and update expectation helpers * chore: add repair policy test * chore: add node repair feature gate * chore: fix install-deps action and dependabot config * chore: remove go toolchain * chore: fix ci * chore: update Makefile * fix: skip debug controller name validation * fix: skip debug controller name validation * chore: remove comment * chore: update sig.k8s.io/karpenter to v1.1.1 * chore: update comment * fix: allow nodeclass label * chore: regen CRDs * fix: spacing * chore: update sigs.k8s.io/karpenter to v1.3.2 * fix: have Delete return NewNodeClaimNotFoundError if VM is deleted * test: fix duplicate controller name on chaos testing * chore: fix indent * feat: add Unknown Kubelet Ready condition to repair policies * fix: remove alt operator * fix: ensure NodeRepair feature gate is enabled for testing * chore: regenerate CRDs * chorre: regenerate CRDs * test: re-enable "drain pods in order" test * deps: bump sigs.k8s.io/karpenter to v1.4.0
1 parent 1101874 commit c602c65

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+449
-5225
lines changed

charts/karpenter-crd/templates/karpenter.sh_nodeclaims.yaml

+20-439
Large diffs are not rendered by default.

charts/karpenter-crd/templates/karpenter.sh_nodepools.yaml

+24-570
Large diffs are not rendered by default.

charts/karpenter/templates/deployment.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ spec:
103103
divisor: "0"
104104
resource: limits.memory
105105
- name: FEATURE_GATES
106-
value: "SpotToSpotConsolidation={{ .Values.settings.featureGates.spotToSpotConsolidation }}"
106+
value: "SpotToSpotConsolidation={{ .Values.settings.featureGates.spotToSpotConsolidation }},NodeRepair={{ .Values.settings.featureGates.nodeRepair }}"
107107
{{- with .Values.settings.batchMaxDuration }}
108108
- name: BATCH_MAX_DURATION
109109
value: "{{ . }}"

charts/karpenter/values.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -174,3 +174,6 @@ settings:
174174
# -- spotToSpotConsolidation is ALPHA and is disabled by default.
175175
# Setting this to true will enable spot replacement consolidation for both single and multi-node consolidation.
176176
spotToSpotConsolidation: false
177+
# -- nodeRepair is ALPHA and is disabled by default.
178+
# Setting this to true will enable node repair.
179+
nodeRepair: false

cmd/controller/main.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ import (
2727

2828
"sigs.k8s.io/karpenter/pkg/cloudprovider/metrics"
2929
corecontrollers "sigs.k8s.io/karpenter/pkg/controllers"
30+
"sigs.k8s.io/karpenter/pkg/controllers/state"
3031
coreoperator "sigs.k8s.io/karpenter/pkg/operator"
31-
corewebhooks "sigs.k8s.io/karpenter/pkg/webhooks"
3232
)
3333

3434
func main() {
@@ -43,6 +43,7 @@ func main() {
4343

4444
lo.Must0(op.AddHealthzCheck("cloud-provider", aksCloudProvider.LivenessProbe))
4545
cloudProvider := metrics.Decorate(aksCloudProvider)
46+
clusterState := state.NewCluster(op.Clock, op.GetClient(), cloudProvider)
4647

4748
op.
4849
WithControllers(ctx, corecontrollers.NewControllers(
@@ -52,8 +53,8 @@ func main() {
5253
op.GetClient(),
5354
op.EventRecorder,
5455
cloudProvider,
56+
clusterState,
5557
)...).
56-
WithWebhooks(ctx, corewebhooks.NewWebhooks()...).
5758
WithControllers(ctx, controllers.NewControllers(
5859
ctx,
5960
op.Manager,
@@ -65,6 +66,5 @@ func main() {
6566
op.ImageProvider,
6667
op.ImageProvider,
6768
)...).
68-
//WithWebhooks(ctx, webhooks.NewWebhooks()...).
69-
Start(ctx, cloudProvider)
69+
Start(ctx)
7070
}

cmd/controller/main_ccp.go

+8-45
Original file line numberDiff line numberDiff line change
@@ -19,58 +19,20 @@ limitations under the License.
1919
package main
2020

2121
import (
22-
"context"
23-
2422
"github.com/samber/lo"
25-
"go.uber.org/zap"
26-
"knative.dev/pkg/logging"
27-
28-
// Injection stuff
29-
kubeclientinjection "knative.dev/pkg/client/injection/kube/client"
30-
"knative.dev/pkg/configmap"
31-
"knative.dev/pkg/controller"
32-
knativeinjection "knative.dev/pkg/injection"
33-
secretinformer "knative.dev/pkg/injection/clients/namespacedkube/informers/core/v1/secret"
34-
kubeinformerfactory "knative.dev/pkg/injection/clients/namespacedkube/informers/factory"
35-
"knative.dev/pkg/webhook/certificates"
3623

37-
altOperator "github.com/Azure/karpenter-provider-azure/pkg/alt/karpenter-core/pkg/operator"
38-
altwebhooks "github.com/Azure/karpenter-provider-azure/pkg/alt/karpenter-core/pkg/webhooks"
3924
"github.com/Azure/karpenter-provider-azure/pkg/cloudprovider"
40-
controllers "github.com/Azure/karpenter-provider-azure/pkg/controllers"
25+
"github.com/Azure/karpenter-provider-azure/pkg/controllers"
4126
"github.com/Azure/karpenter-provider-azure/pkg/operator"
27+
4228
"sigs.k8s.io/karpenter/pkg/cloudprovider/metrics"
4329
corecontrollers "sigs.k8s.io/karpenter/pkg/controllers"
30+
"sigs.k8s.io/karpenter/pkg/controllers/state"
31+
coreoperator "sigs.k8s.io/karpenter/pkg/operator"
4432
)
4533

46-
func newWebhooks(ctx context.Context) []knativeinjection.ControllerConstructor {
47-
client := altOperator.GetCCPClient(ctx)
48-
ccpInformerFactory := kubeinformerfactory.Get(ctx)
49-
50-
secretInformer := ccpInformerFactory.Core().V1().Secrets()
51-
ctx = context.WithValue(ctx, secretinformer.Key{}, secretInformer)
52-
53-
logging.FromContext(ctx).Info("Starting horrible CCP informer")
54-
if err := controller.StartInformers(ctx.Done(), secretInformer.Informer()); err != nil {
55-
logging.FromContext(ctx).Fatalw("Failed to start horrible CCP informer", zap.Error(err))
56-
}
57-
58-
return []knativeinjection.ControllerConstructor{
59-
func(ctx context.Context, watcher configmap.Watcher) *controller.Impl {
60-
ctx = context.WithValue(ctx, secretinformer.Key{}, secretInformer)
61-
ctx = context.WithValue(ctx, kubeclientinjection.Key{}, client)
62-
return certificates.NewController(ctx, watcher)
63-
},
64-
func(ctx context.Context, watcher configmap.Watcher) *controller.Impl {
65-
ctx = context.WithValue(ctx, secretinformer.Key{}, secretInformer)
66-
return altwebhooks.NewCRDConversionWebhook(ctx, watcher)
67-
},
68-
}
69-
}
70-
7134
func main() {
72-
//ctx, op := operator.NewOperator(coreoperator.NewOperator())
73-
ctx, op := operator.NewOperator(altOperator.NewOperator())
35+
ctx, op := operator.NewOperator(coreoperator.NewOperator())
7436
aksCloudProvider := cloudprovider.New(
7537
op.InstanceTypesProvider,
7638
op.InstanceProvider,
@@ -81,6 +43,7 @@ func main() {
8143

8244
lo.Must0(op.AddHealthzCheck("cloud-provider", aksCloudProvider.LivenessProbe))
8345
cloudProvider := metrics.Decorate(aksCloudProvider)
46+
clusterState := state.NewCluster(op.Clock, op.GetClient(), cloudProvider)
8447

8548
op.
8649
WithControllers(ctx, corecontrollers.NewControllers(
@@ -90,8 +53,8 @@ func main() {
9053
op.GetClient(),
9154
op.EventRecorder,
9255
cloudProvider,
56+
clusterState,
9357
)...).
94-
WithWebhooks(ctx, newWebhooks(ctx)...).
9558
WithControllers(ctx, controllers.NewControllers(
9659
ctx,
9760
op.Manager,
@@ -102,5 +65,5 @@ func main() {
10265
op.ImageProvider,
10366
op.ImageProvider,
10467
)...).
105-
Start(ctx, cloudProvider)
68+
Start(ctx)
10669
}

go.mod

+37-49
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/Azure/karpenter-provider-azure
22

3-
go 1.23.8
3+
go 1.24.2
44

55
require (
66
github.com/Azure/aks-middleware v0.0.33
@@ -19,17 +19,14 @@ require (
1919
github.com/Azure/skewer v0.0.19
2020
github.com/Pallinder/go-randomdata v1.2.0
2121
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137
22-
github.com/awslabs/operatorpkg v0.0.0-20240805231134-67d0acfb6306
22+
github.com/awslabs/operatorpkg v0.0.0-20250320000002-b05af0f15c68
2323
github.com/blang/semver/v4 v4.0.0
24-
github.com/go-logr/logr v1.4.2
25-
github.com/go-logr/zapr v1.3.0
2624
github.com/go-openapi/errors v0.22.1
2725
github.com/go-openapi/runtime v0.28.0
2826
github.com/go-openapi/strfmt v0.23.0
2927
github.com/go-openapi/swag v0.23.1
3028
github.com/go-openapi/validate v0.24.0
3129
github.com/go-playground/validator/v10 v10.26.0
32-
github.com/google/go-cmp v0.7.0
3330
github.com/google/uuid v1.6.0
3431
github.com/imdario/mergo v0.3.16
3532
github.com/jongio/azidext/go/azidext v0.5.0
@@ -42,23 +39,20 @@ require (
4239
github.com/stretchr/testify v1.10.0
4340
go.uber.org/multierr v1.11.0
4441
go.uber.org/zap v1.27.0
45-
golang.org/x/sync v0.13.0
4642
gopkg.in/yaml.v2 v2.4.0
47-
k8s.io/api v0.30.3
48-
k8s.io/apiextensions-apiserver v0.30.3
49-
k8s.io/apimachinery v0.30.3
50-
k8s.io/client-go v0.30.3
43+
k8s.io/api v0.32.3
44+
k8s.io/apiextensions-apiserver v0.32.3
45+
k8s.io/apimachinery v0.32.3
46+
k8s.io/client-go v0.32.3
5147
k8s.io/klog/v2 v2.130.1
52-
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8
48+
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738
5349
knative.dev/pkg v0.0.0-20240910170930-fdbc0b5adde7
5450
sigs.k8s.io/cloud-provider-azure v1.29.3
55-
sigs.k8s.io/controller-runtime v0.18.4
56-
sigs.k8s.io/karpenter v1.0.6
51+
sigs.k8s.io/controller-runtime v0.20.4
52+
sigs.k8s.io/karpenter v1.4.0
5753
)
5854

5955
require (
60-
contrib.go.opencensus.io/exporter/ocagent v0.7.1-0.20200907061046-05415f1de66d // indirect
61-
contrib.go.opencensus.io/exporter/prometheus v0.4.2 // indirect
6256
github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect
6357
github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets v0.12.0 // indirect
6458
github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 // indirect
@@ -80,18 +74,17 @@ require (
8074
github.com/avast/retry-go v3.0.0+incompatible // indirect
8175
github.com/beorn7/perks v1.0.1 // indirect
8276
github.com/blendle/zapdriver v1.3.1 // indirect
83-
github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect
8477
github.com/cespare/xxhash/v2 v2.3.0 // indirect
85-
github.com/davecgh/go-spew v1.1.1 // indirect
78+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
8679
github.com/emicklei/go-restful/v3 v3.12.1 // indirect
87-
github.com/evanphx/json-patch v5.9.0+incompatible // indirect
88-
github.com/evanphx/json-patch/v5 v5.9.0 // indirect
80+
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
8981
github.com/felixge/httpsnoop v1.0.4 // indirect
9082
github.com/fsnotify/fsnotify v1.7.0 // indirect
83+
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
9184
github.com/gabriel-vasile/mimetype v1.4.8 // indirect
92-
github.com/go-kit/log v0.2.1 // indirect
93-
github.com/go-logfmt/logfmt v0.6.0 // indirect
85+
github.com/go-logr/logr v1.4.2 // indirect
9486
github.com/go-logr/stdr v1.2.2 // indirect
87+
github.com/go-logr/zapr v1.3.0 // indirect
9588
github.com/go-openapi/analysis v0.23.0 // indirect
9689
github.com/go-openapi/jsonpointer v0.21.0 // indirect
9790
github.com/go-openapi/jsonreference v0.21.0 // indirect
@@ -103,17 +96,15 @@ require (
10396
github.com/gogo/protobuf v1.3.2 // indirect
10497
github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
10598
github.com/golang-jwt/jwt/v5 v5.2.2 // indirect
106-
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
10799
github.com/golang/protobuf v1.5.4 // indirect
100+
github.com/google/btree v1.1.3 // indirect
108101
github.com/google/gnostic-models v0.6.8 // indirect
102+
github.com/google/go-cmp v0.7.0 // indirect
109103
github.com/google/gofuzz v1.2.0 // indirect
110104
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect
111-
github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 // indirect
112-
github.com/hashicorp/golang-lru v1.0.2 // indirect
113105
github.com/inconshreveable/mousetrap v1.1.0 // indirect
114106
github.com/josharian/intern v1.0.0 // indirect
115107
github.com/json-iterator/go v1.1.12 // indirect
116-
github.com/kelseyhightower/envconfig v1.4.0 // indirect
117108
github.com/kylelemons/godebug v1.1.0 // indirect
118109
github.com/leodido/go-urn v1.4.0 // indirect
119110
github.com/mailru/easyjson v0.9.0 // indirect
@@ -125,49 +116,46 @@ require (
125116
github.com/opentracing/opentracing-go v1.2.0 // indirect
126117
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
127118
github.com/pkg/errors v0.9.1 // indirect
128-
github.com/pmezard/go-difflib v1.0.0 // indirect
129-
github.com/prometheus/client_model v0.6.1 // indirect
119+
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
120+
github.com/prometheus/client_model v0.6.2 // indirect
130121
github.com/prometheus/common v0.62.0 // indirect
131122
github.com/prometheus/procfs v0.15.1 // indirect
132-
github.com/prometheus/statsd_exporter v0.24.0 // indirect
133123
github.com/robfig/cron/v3 v3.0.1 // indirect
134124
github.com/shopspring/decimal v1.3.1 // indirect
135-
github.com/spf13/cobra v1.8.0 // indirect
136-
github.com/spf13/pflag v1.0.5 // indirect
125+
github.com/spf13/cobra v1.8.1 // indirect
126+
github.com/spf13/pflag v1.0.6 // indirect
127+
github.com/x448/float16 v0.8.4 // indirect
137128
go.mongodb.org/mongo-driver v1.14.0 // indirect
138-
go.opencensus.io v0.24.0 // indirect
139-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
140-
go.opentelemetry.io/otel v1.24.0 // indirect
141-
go.opentelemetry.io/otel/metric v1.24.0 // indirect
142-
go.opentelemetry.io/otel/trace v1.24.0 // indirect
129+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect
130+
go.opentelemetry.io/otel v1.28.0 // indirect
131+
go.opentelemetry.io/otel/metric v1.28.0 // indirect
132+
go.opentelemetry.io/otel/trace v1.28.0 // indirect
143133
go.uber.org/automaxprocs v1.6.0 // indirect
144134
go.uber.org/mock v0.4.0 // indirect
145135
golang.org/x/crypto v0.36.0 // indirect
146-
golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa // indirect
147136
golang.org/x/net v0.38.0 // indirect
148137
golang.org/x/oauth2 v0.24.0 // indirect
138+
golang.org/x/sync v0.13.0 // indirect
149139
golang.org/x/sys v0.32.0 // indirect
150140
golang.org/x/term v0.30.0 // indirect
151-
golang.org/x/text v0.23.0 // indirect
152-
golang.org/x/time v0.6.0 // indirect
141+
golang.org/x/text v0.24.0 // indirect
142+
golang.org/x/time v0.11.0 // indirect
153143
golang.org/x/tools v0.31.0 // indirect
154144
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
155-
google.golang.org/api v0.183.0 // indirect
156-
google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697 // indirect
157-
google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect
158145
google.golang.org/grpc v1.68.0 // indirect
159-
google.golang.org/protobuf v1.36.5 // indirect
146+
google.golang.org/protobuf v1.36.6 // indirect
160147
gopkg.in/dnaeon/go-vcr.v3 v3.2.0 // indirect
148+
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
161149
gopkg.in/inf.v0 v0.9.1 // indirect
162150
gopkg.in/yaml.v3 v3.0.1 // indirect
163-
k8s.io/cloud-provider v0.30.3 // indirect
164-
k8s.io/component-base v0.30.3 // indirect
165-
k8s.io/component-helpers v0.30.3 // indirect
166-
k8s.io/csi-translation-lib v0.30.3 // indirect
167-
k8s.io/kube-openapi v0.0.0-20240808142205-8e686545bdb8 // indirect
151+
k8s.io/cloud-provider v0.32.3 // indirect
152+
k8s.io/component-base v0.32.3 // indirect
153+
k8s.io/component-helpers v0.32.3 // indirect
154+
k8s.io/csi-translation-lib v0.32.3 // indirect
155+
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect
168156
sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.0.26 // indirect
169157
sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.1 // indirect
170-
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
171-
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
158+
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
159+
sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect
172160
sigs.k8s.io/yaml v1.4.0 // indirect
173161
)

0 commit comments

Comments
 (0)