Release highlights
Support for MySQL 8.4
This release introduces support for Percona Server for MySQL 8.4.x. The Operator supports all major functionality for this latest major version except data-at-rest encryption. However, we do not recommend Percona Server for MySQL 8.4 for production environments yet.
Ensure data security with data-at-rest encryption
Data-at-rest encryption provides robust data protection by encrypting your database files on disk. Data is encrypted automatically, in real time, prior to writing to storage and decrypted when read from storage. The Operator uses the keyring_vault
plugin to encrypt tablespace files and binlog. It integrates directly with HashiCorp Vault, giving you a secure and automated solution for managing encryption keys.
With this feature, you can meet your compliance requirements and protect sensitive data without the operational complexity. Learn how to configure it in our documentation.
Note that data-at-rest encryption is currently not supported for Percona Server for MySQL 8.4.x. We plan to add it in future releases.
Support for emptyDir
and hostPath
volumes
You can now configure the Operator to use emptyDir
or hostPath
volumes for MySQL Pods, in addition to persistentVolumeClaim
volumes. This extends the number of use cases for using the Operator, such as configuring additional storage for the data you don't need to persist when a Pod restarts, ephemeral workloads, testing CI/CD automation against a database and more.
Note the following key points for using volume types:
- Using
hostPath
can be risky in production, as it ties your Pod to a specific node and can lead to data loss if the node fails. emptyDir
is not for persistent data.persistentVolumeClaim
is the recommended way for persistent, portable storage in Kubernetes.
Improved security for user secrets with special characters in passwords
The Operator now generates stronger passwords using the combination of uppercase and lowercase letters, digits, and special characters like ! $ % & ( ) * + , - . < = > ? @ [ ] ^ _ { } ~ #
. These have been tested to ensure compatibility across SQL queries, shell scripts, YAML files, and connection strings.
The Operator excludes problematic characters such as ’ “ \ / : | ;
.
When you create passwords for user secrets yourself, be sure to stick to the approved character set to ensure your services run smoothly.
Customize connection to MySQL Router via configurable ports
You can now modify existing ports for the MySQL Router service, as well as add new custom ports. This ability enables you to fine-tune the connection to your Percona Server for MySQL cluster. For example, you can separate access to the database for different applications, so that each one connects to the same MySQL Router but gets a tailored experience based on the port.
Automated volume resizing
Kubernetes supports the Persistent Volume expansion as a stable feature since v1.24. Using it with the Operator previously involved manual operations. Now this is automated, and users can resize their PVCs by just changing the value of the resources.requests.storage
option in the PerconaServerMySQL custom resource.
Deprecation, rename and removal
.spec.pmm.runtimeClassName
field has been removed from thecrd.yaml
and code because it wasn't being used.spec.backup.imagePullSecrets
will now be applied to the backup and restore jobs.spec.proxy.haproxy.runtimeClassName
will be applied to the HAProxy Pods.spec.pmm.serverUser
is removed as not used in PMM3
Changelog
New features
-
K8SPS-126 - It is now possible to resize Persistent Volume Claims by patching the PerconaServerMySQL Custom Resource. Enable, volume expansion, change
persistentVolumeClaim.resources.requests.storage
and let the Operator do the scaling. -
K8SPS-421 - Added data-at-rest encryption support
-
K8SPS-445 - Added MySQL 8.4 support
Improvements
-
K8SPS-437 - Removed the
spec.pmm.serverUser
field as not used in PMM 3 -
K8SPS-406 - Added possibility of adding custom parameters for PMM client via Custom Resource
-
K8SPS-131 - Improve connection configuration by making router ports configurable
-
K8SPS-265 - Added special symbols support in passwords
-
K8SPS-319 - Improve labels by adding MySQL to the Operator name
-
K8SPS-323 - Added support for primary Pod discovery through a Kubernetes Service (Thank you Marjus Cako for reporting this issue)
-
K8SPS-336 - Added the ability to deploy the Operator with
hostPath
andemptyDir
volume types -
K8SPS-357 - Improved cluster provisioning
-
K8SPS-401 - Added examples of setting up backups on Azure into our CRs
-
K8SPS-418 - Added the ability to specify the time for the Pod to shut down gracefully after receiving a termination signal before it is forcefully killed.
-
K8SPS-414 - Added the ability to configure imagePullSecrets via the Custom Resource
-
K8SPS-415 - Added the ability to configure runtimeClassName via the Custom Resource
-
K8SPS-416 - Added the ability to configure tolerations via the Custom Resource
Bugs Fixed
-
K8SPS-287 - Improved logging to include information about
allowUnsafeConfigurations
not set when a user tries to scale down a cluster to less than 3 Pods -
K8SPS-298 - Added an error to the logs about invalid configuration for deploying a cluster with asynchronous replication without a proxy.
-
K8SPS-308 - Fixed the issue with smart update reporting errors for the cluster with async replication
-
K8SPS-381 - Improved restores from Azure blob storage by removing a hardcoded slash
-
K8SPS-394 - Improved the cluster behavior when a user tries to change a replication type on a running cluster. The cluster fails because this operation is not allowed on a running cluster. Added documentation with the recommended steps.
-
K8SPS-396 - Improved the gr-self-healing tests by replacing assert with readiness check for chaos-daemon
-
K8SPS-425 - Fixed the cluster boootstrap process for a group replication clusters with MySQL 8.4
Supported software
The Operator was developed and tested with the following software:
- Percona Server for MySQL 8.4.5-5
- Percona Server for MySQL 8.0.42-33
- XtraBackup 8.4.0-3
- XtraBackup 8.0.35-33
- MySQL Router 8.4.5-5
- MySQL Router 8.0.42
- HAProxy 2.8.15
- Orchestrator 3.2.6-17
- Percona Toolkit 3.7.0
- PMM Client 3.3.1
- Cert Manager 1.18.2
Other options may also work, but have not been tested.
Supported platforms
Percona Operators are designed for compatibility with all CNCF-certified Kubernetes distributions. Our release process includes targeted testing and validation on major cloud provider platforms and OpenShift, as detailed below for Operator version 0.9.0:
- Google Kubernetes Engine (GKE) 1.31 - 1.33
- Amazon Elastic Container Service for Kubernetes (EKS) 1.31 - 1.33
- OpenShift 4.15 - 4.19
- Minikube 1.36.0 (based on Kubernetes 1.33.1)
This list only includes the platforms that the Percona Operators are specifically tested on as part of the release process. Other Kubernetes flavors and versions depend on backward compatibility offered by Kubernetes itself.