chore: Upgrade pxc-operator version (#729)
Co-authored-by: okozachenko1203 <okozachenko1203@users.noreply.github.com>
diff --git a/roles/defaults/vars/main.yml b/roles/defaults/vars/main.yml
index d14443b..c34cf2e 100644
--- a/roles/defaults/vars/main.yml
+++ b/roles/defaults/vars/main.yml
@@ -159,9 +159,10 @@
ovn_ovsdb_nb: quay.io/vexxhost/ovn-central:23.03.0
ovn_ovsdb_sb: quay.io/vexxhost/ovn-central:23.03.0
pause: registry.k8s.io/pause:3.8
- percona_xtradb_cluster_haproxy: docker.io/percona/percona-xtradb-cluster-operator:1.12.0-haproxy
- percona_xtradb_cluster_operator: docker.io/percona/percona-xtradb-cluster-operator:1.12.0
- percona_xtradb_cluster: docker.io/percona/percona-xtradb-cluster:5.7.39-31.61
+ percona_xtradb_cluster_haproxy: docker.io/percona/percona-xtradb-cluster-operator:1.13.0-haproxy
+ percona_xtradb_cluster_operator: docker.io/percona/percona-xtradb-cluster-operator:1.13.0
+ percona_xtradb_cluster: docker.io/percona/percona-xtradb-cluster:8.0.32-24.2
+ percona_version_service: docker.io/perconalab/version-service:main-3325140
placement_db_sync: quay.io/vexxhost/placement@sha256:ae9a7567e3619440b3a7a58b5ab407c5efad372627c06fb0ab0193a85c9d1c70 # image-source: quay.io/vexxhost/placement:zed
placement: quay.io/vexxhost/placement@sha256:ae9a7567e3619440b3a7a58b5ab407c5efad372627c06fb0ab0193a85c9d1c70 # image-source: quay.io/vexxhost/placement:zed
prometheus_config_reloader: quay.io/prometheus-operator/prometheus-config-reloader:v0.67.1
diff --git a/roles/percona_xtradb_cluster/tasks/main.yml b/roles/percona_xtradb_cluster/tasks/main.yml
index 384b701..647a24a 100644
--- a/roles/percona_xtradb_cluster/tasks/main.yml
+++ b/roles/percona_xtradb_cluster/tasks/main.yml
@@ -30,7 +30,100 @@
namespace: openstack
type: Opaque
-- name: Create Percona XtraDB cluster
+- name: Check if the Percona XtraDB cluster exists
+ run_once: true
+ block:
+ - name: Check if the Percona XtraDB cluster exists
+ kubernetes.core.k8s_info:
+ api_version: pxc.percona.com/v1
+ kind: PerconaXtraDBCluster
+ name: percona-xtradb
+ namespace: openstack
+ register: _pxc_cluster
+ ignore_errors: true
+
+ - name: Get current status of the cluster
+ ansible.builtin.set_fact:
+ _pxc_version: "{{ _pxc_cluster.resources[0].status.pxc.version }}"
+ _pxc_status: "{{ _pxc_cluster.resources[0].status.state }}"
+ when: ( _pxc_cluster.resources | length==1 )
+
+- name: Do version upgrade
+ run_once: true
+ when:
+ - _pxc_version is defined
+ - _pxc_status is defined
+ - _pxc_version.startswith('5.7')
+ - (atmosphere_images['percona_xtradb_cluster'] | vexxhost.kubernetes.docker_image('tag')).startswith('8.')
+ block:
+ - name: Assert that the cluster is healthy before upgrade
+ run_once: true
+ ansible.builtin.assert:
+ that:
+ - _pxc_status == 'ready'
+ fail_msg: >-
+ The Percona XtraDB Cluster is not healthy. Please fix the cluster manually first before upgrade.
+
+ - name: Stop PXC-operator
+ kubernetes.core.k8s_scale:
+ api_version: v1
+ kind: Deployment
+ name: pxc-operator
+ namespace: openstack
+ replicas: 0
+ wait_timeout: 60
+
+ - name: Change the cluster Statefulset image to 8.0
+ kubernetes.core.k8s_json_patch:
+ api_version: apps/v1
+ kind: StatefulSet
+ namespace: openstack
+ name: percona-xtradb-pxc
+ patch:
+ - op: replace
+ path: /spec/template/spec/containers/0/image
+ value: "{{ atmosphere_images['percona_xtradb_cluster'] | vexxhost.kubernetes.docker_image('ref') }}"
+
+ - name: Wait until the cluster Statefulset rollout
+ kubernetes.core.k8s_info:
+ api_version: apps/v1
+ kind: StatefulSet
+ name: percona-xtradb-pxc
+ namespace: openstack
+ register: _pxc_cluster_sts
+ retries: 120
+ delay: 5
+ until:
+ - _pxc_cluster_sts.resources[0].status.replicas == _pxc_cluster_sts.resources[0].status.readyReplicas
+
+ - name: Update pxc cluster spec
+ kubernetes.core.k8s:
+ definition:
+ apiVersion: pxc.percona.com/v1
+ kind: PerconaXtraDBCluster
+ metadata:
+ name: percona-xtradb
+ namespace: openstack
+ spec:
+ pxc:
+ image: "{{ atmosphere_images['percona_xtradb_cluster'] | vexxhost.kubernetes.docker_image('ref') }}"
+ wait_sleep: 1
+ wait_timeout: 600
+ wait: true
+ wait_condition:
+ type: ready
+ status: true
+
+ - name: Start PXC-operator
+ kubernetes.core.k8s_scale:
+ api_version: v1
+ kind: Deployment
+ name: pxc-operator
+ namespace: openstack
+ replicas: 1
+ wait_timeout: 60
+
+- name: Apply Percona XtraDB cluster
run_once: true
kubernetes.core.k8s:
state: present
diff --git a/roles/percona_xtradb_cluster/vars/main.yml b/roles/percona_xtradb_cluster/vars/main.yml
index 7836fdb..5a99be1 100644
--- a/roles/percona_xtradb_cluster/vars/main.yml
+++ b/roles/percona_xtradb_cluster/vars/main.yml
@@ -1,5 +1,5 @@
_percona_xtradb_cluster_spec:
- crVersion: "1.12.0"
+ crVersion: "1.13.0"
secretsName: percona-xtradb
pxc:
size: 3
diff --git a/roles/percona_xtradb_cluster/vars_test.go b/roles/percona_xtradb_cluster/vars_test.go
index 9b0deda..f085563 100644
--- a/roles/percona_xtradb_cluster/vars_test.go
+++ b/roles/percona_xtradb_cluster/vars_test.go
@@ -53,7 +53,7 @@
func TestPerconaXtraDBClusterPXCSpec(t *testing.T) {
assert.Equal(t, int32(3), vars.PerconaXtraDBClusterSpec.PXC.Size)
assert.Equal(t, true, *vars.PerconaXtraDBClusterSpec.PXC.AutoRecovery)
- defaults.AssertAtmosphereImage(t, "docker.io/percona/percona-xtradb-cluster:5.7.39-31.61", vars.PerconaXtraDBClusterSpec.PXC.Image)
+ defaults.AssertAtmosphereImage(t, "docker.io/percona/percona-xtradb-cluster:8.0.32-24.2", vars.PerconaXtraDBClusterSpec.PXC.Image)
assert.Equal(t, map[string]string{
"openstack-control-plane": "enabled",