-
Bug
-
Resolution: Unresolved
-
Undefined
-
None
-
4.22
-
None
-
None
-
False
-
-
None
-
Moderate
-
Yes
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Description of problem:
Deleting secondaryControlPlaneLoadBalancer in awscluster get panic liuhuali@Lius-MacBook-Pro huali-test % oc edit awscluster error: awsclusters.infrastructure.cluster.x-k8s.io "huliu-aws1217a-thqm7" could not be patched: admission webhook "validation.awscluster.infrastructure.cluster.x-k8s.io" denied the request: panic: runtime error: invalid memory address or nil pointer dereference [recovered] You can run `oc replace -f /var/folders/yc/y9zy01jn3f51r9knbpsm_55r0000gn/T/oc-edit-797326194.yaml` to try this update again. liuhuali@Lius-MacBook-Pro huali-test % I've tested it before, the secondaryControlPlaneLoadBalancer can be deleted without panic
Version-Release number of selected component (if applicable):
4.22.0-0.nightly-2025-12-16-225527
How reproducible:
always
Steps to Reproduce:
1.Edit awscluster deleting secondaryControlPlaneLoadBalancer part
liuhuali@Lius-MacBook-Pro huali-test % oc edit awscluster
error: awsclusters.infrastructure.cluster.x-k8s.io "huliu-aws1217a-thqm7" could not be patched: admission webhook "validation.awscluster.infrastructure.cluster.x-k8s.io" denied the request: panic: runtime error: invalid memory address or nil pointer dereference [recovered]
You can run `oc replace -f /var/folders/yc/y9zy01jn3f51r9knbpsm_55r0000gn/T/oc-edit-797326194.yaml` to try this update again.
liuhuali@Lius-MacBook-Pro huali-test % oc logs capa-controller-manager-7ccbd765d7-lhgbh
...
E1217 08:45:24.852777 1 runtime.go:142] "Observed a panic" logger="admission" webhookGroup="infrastructure.cluster.x-k8s.io" webhookKind="AWSCluster" AWSCluster="openshift-cluster-api/huliu-aws1217a-thqm7" namespace="openshift-cluster-api" name="huliu-aws1217a-thqm7" resource={"group":"infrastructure.cluster.x-k8s.io","version":"v1beta2","resource":"awsclusters"} user="system:admin" requestID="741c5377-3721-4505-9ddc-c62cc2ccf2b8" panic="runtime error: invalid memory address or nil pointer dereference" panicGoValue="\"invalid memory address or nil pointer dereference\"" stacktrace=<
goroutine 17137 [running]:
k8s.io/apimachinery/pkg/util/runtime.logPanic({0x65f0eb8, 0xc00245e090}, {0x5517320, 0x8c693a0})
/build/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:132 +0xbc
sigs.k8s.io/controller-runtime/pkg/webhook/admission.(*Webhook).Handle.func1()
/build/vendor/sigs.k8s.io/controller-runtime/pkg/webhook/admission/webhook.go:163 +0xf8
panic({0x5517320?, 0x8c693a0?})
/usr/lib/golang/src/runtime/panic.go:792 +0x132
sigs.k8s.io/cluster-api-provider-aws/v2/api/v1beta2.(*AWSCluster).validateControlPlaneLoadBalancerUpdate(0x56bed60?, 0xc002203d60, 0x0)
/build/api/v1beta2/awscluster_webhook.go:207 +0xce
sigs.k8s.io/cluster-api-provider-aws/v2/api/v1beta2.(*awsClusterWebhook).ValidateUpdate(0xc001552e80?, {0xc00228e580?, 0xc31?}, {0x6594598, 0xc00023fb88}, {0x6594598?, 0xc0014c5708?})
/build/api/v1beta2/awscluster_webhook.go:130 +0x73e
sigs.k8s.io/controller-runtime/pkg/webhook/admission.(*validatorForType).Handle(_, {_, _}, {{{0xc001ac7e30, 0x24}, {{0xc0022e7480, 0x1f}, {0xc00251bfb8, 0x7}, {0xc00251bfe0, ...}}, ...}})
/build/vendor/sigs.k8s.io/controller-runtime/pkg/webhook/admission/validator_custom.go:104 +0x802
sigs.k8s.io/controller-runtime/pkg/webhook/admission.(*Webhook).Handle(_, {_, _}, {{{0xc001ac7e30, 0x24}, {{0xc0022e7480, 0x1f}, {0xc00251bfb8, 0x7}, {0xc00251bfe0, ...}}, ...}})
/build/vendor/sigs.k8s.io/controller-runtime/pkg/webhook/admission/webhook.go:181 +0x224
sigs.k8s.io/controller-runtime/pkg/webhook/admission.(*Webhook).ServeHTTP(0xc000358730, {0x7fd2dce14a38, 0xc0001700a0}, 0xc00258a640)
/build/vendor/sigs.k8s.io/controller-runtime/pkg/webhook/admission/http.go:119 +0xaf0
sigs.k8s.io/controller-runtime/pkg/webhook/internal/metrics.InstrumentedHook.InstrumentHandlerInFlight.func1({0x7fd2dce14a38, 0xc0001700a0}, 0xc00258a640)
/build/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_server.go:60 +0xb6
net/http.HandlerFunc.ServeHTTP(0x8d85b50?, {0x7fd2dce14a38?, 0xc0001700a0?}, 0x6228a6?)
/usr/lib/golang/src/net/http/server.go:2294 +0x29
github.com/prometheus/client_golang/prometheus/promhttp.InstrumentHandlerCounter.func1({0x65dda88?, 0xc002280460?}, 0xc00258a640)
/build/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_server.go:147 +0xc3
net/http.HandlerFunc.ServeHTTP(0x5a7d2e0?, {0x65dda88?, 0xc002280460?}, 0xc0022b3a20?)
/usr/lib/golang/src/net/http/server.go:2294 +0x29
github.com/prometheus/client_golang/prometheus/promhttp.InstrumentHandlerDuration.func2({0x65dda88, 0xc002280460}, 0xc00258a640)
/build/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_server.go:109 +0xc5
net/http.HandlerFunc.ServeHTTP(0xc000460a80?, {0x65dda88?, 0xc002280460?}, 0xc0022b3b60?)
/usr/lib/golang/src/net/http/server.go:2294 +0x29
net/http.(*ServeMux).ServeHTTP(0x41bf25?, {0x65dda88, 0xc002280460}, 0xc00258a640)
/usr/lib/golang/src/net/http/server.go:2822 +0x1c4
net/http.serverHandler.ServeHTTP({0x65934e8?}, {0x65dda88?, 0xc002280460?}, 0x1?)
/usr/lib/golang/src/net/http/server.go:3301 +0x8e
net/http.(*conn).serve(0xc0015bbc20, {0x65f0eb8, 0xc00159c390})
/usr/lib/golang/src/net/http/server.go:2102 +0x625
created by net/http.(*Server).Serve in goroutine 93
/usr/lib/golang/src/net/http/server.go:3454 +0x485
>
Actual results:
Deleting secondaryControlPlaneLoadBalancer in awscluster get panic
Expected results:
should not panic
Additional info:
must-gather: https://drive.google.com/file/d/1-aaOVUQRNj20G8L_1aaS7VmoliCuqwLn/view?usp=sharing