-
Notifications
You must be signed in to change notification settings - Fork 591
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
🐛fix: classic elb fix for TLS issues #5346
base: main
Are you sure you want to change the base?
Conversation
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
68dbdef
to
9a459b0
Compare
/test ? |
@richardcase: The following commands are available to trigger required jobs:
The following commands are available to trigger optional jobs:
Use
In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
/test pull-cluster-api-provider-aws-e2e |
9a459b0
to
d8eea98
Compare
/test pull-cluster-api-provider-aws-e2e |
d8eea98
to
ae8ab0a
Compare
/test pull-cluster-api-provider-aws-e2e |
Test failures are strange as the linting passes locally :( |
/test pull-cluster-api-provider-aws-e2e |
/test pull-cluster-api-provider-aws-test |
#5352 will fix the issue with the tests. Just need to sort out the e2e. |
There is an issue when creating clusters (or upgrading clusters) with kubernetes versions v1.30+ and using a classic elb with an SSL health check (which the default for new clusters). The problem is that Kubernetes v1.30+ switched to Go 1.22 which removed the RSA ciphers. This then causes the ELB health check to fail. There are a number of workarounds including manually specifying the cipher suites to use for the api server. This commit does the following: - Adds warnings to the AWSCluster webhook to alert users that: - their cluster is using a classic elb and this is now deprecated - their cluster is using the default health check protocol which warnings previously SSL and that now the default has changed to TCP. - Will update the health check to TCP if the load balancer is "classic" and the health check protocol is not set. Signed-off-by: Richard Case <[email protected]>
10e273e
to
b2d30a8
Compare
/test pull-cluster-api-provider-aws-e2e |
@damdo - looks like the e2e is now passing. Worth a discussion on Monday at the office hours. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @richardcase for your work on this!
The logic for migrating health-check types from SSL->TCP (for classic LBs)
and the testing to verify that then works LGTM
/lgtm
For posterity, made a small edit to the release note to add
|
} | ||
|
||
if r.Spec.SecondaryControlPlaneLoadBalancer != nil { | ||
if r.Spec.SecondaryControlPlaneLoadBalancer.LoadBalancerType == LoadBalancerTypeClassic { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This case shouldn't even be possible, see the webhook: https://github.com/kubernetes-sigs/cluster-api-provider-aws/blob/main/api/v1beta2/awscluster_webhook.go#L322
That being said, I think we can remove this code in a follow up PR rather than block this further.
@@ -322,6 +367,9 @@ func (r *AWSCluster) validateControlPlaneLBs() field.ErrorList { | |||
if r.Spec.SecondaryControlPlaneLoadBalancer.LoadBalancerType != LoadBalancerTypeNLB { | |||
allErrs = append(allErrs, field.Invalid(field.NewPath("spec", "secondaryControlPlaneLoadBalancer", "loadBalancerType"), r.Spec.SecondaryControlPlaneLoadBalancer.LoadBalancerType, "secondary control plane load balancer must be a Network Load Balancer")) | |||
} | |||
if r.Spec.SecondaryControlPlaneLoadBalancer.LoadBalancerType == LoadBalancerTypeClassic { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this needed if we're also setting an error for this case on L367?
What type of PR is this?
/kind bug
What this PR does / why we need it:
There is an issue when creating clusters (or upgrading clusters) with
kubernetes versions v1.30+ and using a classic elb with an SSL health
check (which the default for new clusters).
The problem is that Kubernetes v1.30+ switched to Go 1.22 which removed
the RSA ciphers. This then causes the ELB health check to fail.
There are a number of workarounds including manually specifying the
cipher suites to use for the api server.
This commit does the following:
previously SSL and that now the default has changed to TCP.
and the health check protocol is not set.
Which issue(s) this PR fixes (optional, in
fixes #<issue number>(, fixes #<issue_number>, ...)
format, will close the issue(s) when PR gets merged):Fixes #5139
Fixes #5280
Relates #5335
Special notes for your reviewer:
Checklist:
Release note: