v0.11.0
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
hostPathcan be risky in production, as it ties your Pod to a specific node and can lead to data loss if the node fails. emptyDiris not for persistent data.persistentVolumeClaimis 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.runtimeClassNamefield has been removed from thecrd.yamland code because it wasn't being used.spec.backup.imagePullSecretswill now be applied to the backup and restore jobs.spec.proxy.haproxy.runtimeClassNamewill be applied to the HAProxy Pods.spec.pmm.serverUseris 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.storageand 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.serverUserfield 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
hostPathandemptyDirvolume 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
allowUnsafeConfigurationsnot 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.