fleetdm / fleet

Open-source platform for IT, security, and infrastructure teams. (Linux, macOS, Chrome, Windows, cloud, data center)
https://fleetdm.com
Other
3.18k stars 435 forks source link

Fleet >=4.55: new minimum version of MySQL: 8.0.31 instead of 8.0.36 #21845

Open efasel opened 2 months ago

efasel commented 2 months ago

Problem

CHANGELOG for Fleet 4.55.0 (Aug 9, 2024) says:

The minimum version supported is MySQL 8.0.36.

Is this checked when running fleet? Or just a recommendation?

Unfortunately the current default version of "Cloud SQL for MySQL" on GCP is 8.0.31. While instances can be upgraded to 8.0.37 this makes automatic provisioning and deployment a little bit more complicated.

links:

Potential solutions

Would 8.0.31 as new minimum version of MySQL be sufficient?

noahtalerman commented 2 months ago

Thanks for tracking this @efasel!

Hey @lukeheath while this request isn't coming from Fleet's engineering team, I think it makes sense for this request to be weighed against other eng initiated stories.

I added the ~engineering-initiated label.

lukeheath commented 2 months ago

@georgekarrv Would you please bring this to the team to discuss? Wondering if supporting a minimum of MySQL 8.0.31 is possible.

lukeheath commented 4 weeks ago

@georgekarrv So this doesn't get lost I'm moving to the release board.

lukeheath commented 3 weeks ago

We've looked into this and unfortunately reducing the minimum dependency to 8.0.31 would be non-trivial. Given that GCP has deprecated 8.0.29, we're hoping they will upgrade their default soon to avoid the extra steps.

fleet-release commented 3 weeks ago

Cloud SQL's dance in air, Fleet adapts, eases their care, Harmony, we share.

efasel commented 3 weeks ago

Hi @lukeheath!

We've looked into this and unfortunately reducing the minimum dependency to 8.0.31 would be non-trivial.

As far as I can see it would be 19 places where you would need to change the version. Should I send a PR?

Given that GCP has deprecated 8.0.29, we're hoping they will upgrade their default soon to avoid the extra steps.

Well. We don’t know.

And … are you actually using any feature which would we only available in MySQL >= 8.0.36 which is not yet available in 8.0.31?

lukeheath commented 2 weeks ago

Hi @efasel!

The code change is trivial, but testing and validating that all features work as intended on 8.0.31 would not be.

are you actually using any feature which would we only available in MySQL >= 8.0.36 which is not yet available in 8.0.31?

Before we can make this change, we'd have to be able to confidently answer this question, which would involve auditing our codebase. That's doable, but the opportunity cost is high given our current backlog of issues.

lukeheath commented 2 weeks ago

I am going to re-open this issue for tracking the request. I'm happy to revisit if we receive more requests from the community to justify prioritizing over other issues.

efasel commented 2 weeks ago

Thanks!

I’ve had a look at MySQL 8.0 Migration by dantecatalfamo · Pull Request #20225 and it doesn’t look like anything requires MySQL >= 8.0.36, but you’re obviously right that this would needed to be checked as time has moved on and something might have been added afterwards. (Although I doubt it. :sweat_smile:)

efasel commented 2 weeks ago

Would be great if Google simply made a newer version of MySQL the default version. What are they waiting for.

MySQL 8.0.36 (2024-01-16, General Availability)

:roll_eyes:

lukeheath commented 2 weeks ago

Agreed, I feel pretty confident that it would be fine, but there's a chance something has been added since the change that could cause production issues, and that's what makes it challenging to move minimum support backwards.

I'm surprised MySQL's default version is so old, and that they don't provide a way to change it before spinning up the DB. I'm tagging one of our infra engineers @rfairburn in case he has run into this in GCP and found a workaround (we host in AWS so probably not, but worth asking.)

rfairburn commented 2 weeks ago

can you not say MYSQL_8_0_36 as a db version at provision time instead of just MYSQL_8_0 which defaults to 8.0.31?

This terraform example for the GCP terraform mysql resource, implies the format above is valid.

efasel commented 2 weeks ago

There is an abstraction layer between me and Cloud SQL, which doesn’t allow the granularity to specify a minor version for MySQL Cloud SQL instance. :crying_cat_face: Otherwise this would be the simplest solution for me.