apiVersion: apps/v1
kind: StatefulSet
metadata:
  annotations:
    percona.com/last-config-hash: eyJyZXBsaWNhcyI6MSwic2VsZWN0b3IiOnsibWF0Y2hMYWJlbHMiOnsiYXBwLmt1YmVybmV0ZXMuaW8vY29tcG9uZW50IjoicHhjIiwiYXBwLmt1YmVybmV0ZXMuaW8vaW5zdGFuY2UiOiJwZXJjb25hLXh0cmFkYiIsImFwcC5rdWJlcm5ldGVzLmlvL21hbmFnZWQtYnkiOiJwZXJjb25hLXh0cmFkYi1jbHVzdGVyLW9wZXJhdG9yIiwiYXBwLmt1YmVybmV0ZXMuaW8vbmFtZSI6InBlcmNvbmEteHRyYWRiLWNsdXN0ZXIiLCJhcHAua3ViZXJuZXRlcy5pby9wYXJ0LW9mIjoicGVyY29uYS14dHJhZGItY2x1c3RlciJ9fSwidGVtcGxhdGUiOnsibWV0YWRhdGEiOnsiY3JlYXRpb25UaW1lc3RhbXAiOm51bGwsImxhYmVscyI6eyJhcHAua3ViZXJuZXRlcy5pby9jb21wb25lbnQiOiJweGMiLCJhcHAua3ViZXJuZXRlcy5pby9pbnN0YW5jZSI6InBlcmNvbmEteHRyYWRiIiwiYXBwLmt1YmVybmV0ZXMuaW8vbWFuYWdlZC1ieSI6InBlcmNvbmEteHRyYWRiLWNsdXN0ZXItb3BlcmF0b3IiLCJhcHAua3ViZXJuZXRlcy5pby9uYW1lIjoicGVyY29uYS14dHJhZGItY2x1c3RlciIsImFwcC5rdWJlcm5ldGVzLmlvL3BhcnQtb2YiOiJwZXJjb25hLXh0cmFkYi1jbHVzdGVyIn0sImFubm90YXRpb25zIjp7InBlcmNvbmEuY29tL2NvbmZpZ3VyYXRpb24taGFzaCI6IjA1Y2JhM2MwYjFmMWFlYTIxODg4YTg3MTJiOWJjMWI1In19LCJzcGVjIjp7InZvbHVtZXMiOlt7Im5hbWUiOiJ0bXAiLCJlbXB0eURpciI6e319LHsibmFtZSI6ImNvbmZpZyIsImNvbmZpZ01hcCI6eyJuYW1lIjoicGVyY29uYS14dHJhZGItcHhjIiwib3B0aW9uYWwiOnRydWV9fSx7Im5hbWUiOiJzc2wtaW50ZXJuYWwiLCJzZWNyZXQiOnsic2VjcmV0TmFtZSI6InBlcmNvbmEteHRyYWRiLXNzbC1pbnRlcm5hbCIsIm9wdGlvbmFsIjp0cnVlfX0seyJuYW1lIjoic3NsIiwic2VjcmV0Ijp7InNlY3JldE5hbWUiOiJwZXJjb25hLXh0cmFkYi1zc2wiLCJvcHRpb25hbCI6dHJ1ZX19LHsibmFtZSI6ImF1dG8tY29uZmlnIiwiY29uZmlnTWFwIjp7Im5hbWUiOiJhdXRvLXBlcmNvbmEteHRyYWRiLXB4YyIsIm9wdGlvbmFsIjp0cnVlfX0seyJuYW1lIjoidmF1bHQta2V5cmluZy1zZWNyZXQiLCJzZWNyZXQiOnsic2VjcmV0TmFtZSI6InBlcmNvbmEteHRyYWRiLXZhdWx0Iiwib3B0aW9uYWwiOnRydWV9fSx7Im5hbWUiOiJteXNxbC11c2Vycy1zZWNyZXQtZmlsZSIsInNlY3JldCI6eyJzZWNyZXROYW1lIjoiaW50ZXJuYWwtcGVyY29uYS14dHJhZGIiLCJvcHRpb25hbCI6ZmFsc2V9fV0sImluaXRDb250YWluZXJzIjpbeyJuYW1lIjoicHhjLWluaXQiLCJpbWFnZSI6ImRvY2tlci5pby9wZXJjb25hL3BlcmNvbmEteHRyYWRiLWNsdXN0ZXItb3BlcmF0b3I6MS4xMy4wIiwiY29tbWFuZCI6WyIvcHhjLWluaXQtZW50cnlwb2ludC5zaCJdLCJyZXNvdXJjZXMiOnt9LCJ2b2x1bWVNb3VudHMiOlt7Im5hbWUiOiJkYXRhZGlyIiwibW91bnRQYXRoIjoiL3Zhci9saWIvbXlzcWwifV0sImltYWdlUHVsbFBvbGljeSI6IkFsd2F5cyJ9XSwiY29udGFpbmVycyI6W3sibmFtZSI6InB4YyIsImltYWdlIjoiZG9ja2VyLmlvL3BlcmNvbmEvcGVyY29uYS14dHJhZGItY2x1c3Rlcjo4LjAuMzItMjQuMiIsImNvbW1hbmQiOlsiL3Zhci9saWIvbXlzcWwvcHhjLWVudHJ5cG9pbnQuc2giXSwiYXJncyI6WyJteXNxbGQiXSwicG9ydHMiOlt7Im5hbWUiOiJteXNxbCIsImNvbnRhaW5lclBvcnQiOjMzMDZ9LHsibmFtZSI6InNzdCIsImNvbnRhaW5lclBvcnQiOjQ0NDR9LHsibmFtZSI6IndyaXRlLXNldCIsImNvbnRhaW5lclBvcnQiOjQ1Njd9LHsibmFtZSI6ImlzdCIsImNvbnRhaW5lclBvcnQiOjQ1Njh9LHsibmFtZSI6Im15c3FsLWFkbWluIiwiY29udGFpbmVyUG9ydCI6MzMwNjJ9LHsibmFtZSI6Im15c3FseCIsImNvbnRhaW5lclBvcnQiOjMzMDYwfV0sImVudkZyb20iOlt7InNlY3JldFJlZiI6eyJuYW1lIjoicGVyY29uYS14dHJhZGItZW52LXZhcnMtcHhjIiwib3B0aW9uYWwiOnRydWV9fV0sImVudiI6W3sibmFtZSI6IlBYQ19TRVJWSUNFIiwidmFsdWUiOiJwZXJjb25hLXh0cmFkYi1weGMtdW5yZWFkeSJ9LHsibmFtZSI6Ik1PTklUT1JfSE9TVCIsInZhbHVlIjoiJSJ9LHsibmFtZSI6Ik1ZU1FMX1JPT1RfUEFTU1dPUkQiLCJ2YWx1ZUZyb20iOnsic2VjcmV0S2V5UmVmIjp7Im5hbWUiOiJpbnRlcm5hbC1wZXJjb25hLXh0cmFkYiIsImtleSI6InJvb3QifX19LHsibmFtZSI6IlhUUkFCQUNLVVBfUEFTU1dPUkQiLCJ2YWx1ZUZyb20iOnsic2VjcmV0S2V5UmVmIjp7Im5hbWUiOiJpbnRlcm5hbC1wZXJjb25hLXh0cmFkYiIsImtleSI6Inh0cmFiYWNrdXAifX19LHsibmFtZSI6Ik1PTklUT1JfUEFTU1dPUkQiLCJ2YWx1ZUZyb20iOnsic2VjcmV0S2V5UmVmIjp7Im5hbWUiOiJpbnRlcm5hbC1wZXJjb25hLXh0cmFkYiIsImtleSI6Im1vbml0b3IifX19LHsibmFtZSI6IkNMVVNURVJfSEFTSCIsInZhbHVlIjoiMjI2ODM0NyJ9LHsibmFtZSI6Ik9QRVJBVE9SX0FETUlOX1BBU1NXT1JEIiwidmFsdWVGcm9tIjp7InNlY3JldEtleVJlZiI6eyJuYW1lIjoiaW50ZXJuYWwtcGVyY29uYS14dHJhZGIiLCJrZXkiOiJvcGVyYXRvciJ9fX0seyJuYW1lIjoiTElWRU5FU1NfQ0hFQ0tfVElNRU9VVCIsInZhbHVlIjoiNjAifSx7Im5hbWUiOiJSRUFESU5FU1NfQ0hFQ0tfVElNRU9VVCIsInZhbHVlIjoiMTUifSx7Im5hbWUiOiJERUZBVUxUX0FVVEhFTlRJQ0FUSU9OX1BMVUdJTiIsInZhbHVlIjoiY2FjaGluZ19zaGEyX3Bhc3N3b3JkIn1dLCJyZXNvdXJjZXMiOnt9LCJ2b2x1bWVNb3VudHMiOlt7Im5hbWUiOiJkYXRhZGlyIiwibW91bnRQYXRoIjoiL3Zhci9saWIvbXlzcWwifSx7Im5hbWUiOiJjb25maWciLCJtb3VudFBhdGgiOiIvZXRjL3BlcmNvbmEteHRyYWRiLWNsdXN0ZXIuY29uZi5kIn0seyJuYW1lIjoidG1wIiwibW91bnRQYXRoIjoiL3RtcCJ9LHsibmFtZSI6InNzbCIsIm1vdW50UGF0aCI6Ii9ldGMvbXlzcWwvc3NsIn0seyJuYW1lIjoic3NsLWludGVybmFsIiwibW91bnRQYXRoIjoiL2V0Yy9teXNxbC9zc2wtaW50ZXJuYWwifSx7Im5hbWUiOiJteXNxbC11c2Vycy1zZWNyZXQtZmlsZSIsIm1vdW50UGF0aCI6Ii9ldGMvbXlzcWwvbXlzcWwtdXNlcnMtc2VjcmV0In0seyJuYW1lIjoiYXV0by1jb25maWciLCJtb3VudFBhdGgiOiIvZXRjL215LmNuZi5kIn0seyJuYW1lIjoidmF1bHQta2V5cmluZy1zZWNyZXQiLCJtb3VudFBhdGgiOiIvZXRjL215c3FsL3ZhdWx0LWtleXJpbmctc2VjcmV0In1dLCJsaXZlbmVzc1Byb2JlIjp7ImV4ZWMiOnsiY29tbWFuZCI6WyIvdmFyL2xpYi9teXNxbC9saXZlbmVzcy1jaGVjay5zaCJdfSwiaW5pdGlhbERlbGF5U2Vjb25kcyI6MzAwLCJ0aW1lb3V0U2Vjb25kcyI6NSwicGVyaW9kU2Vjb25kcyI6MTB9LCJyZWFkaW5lc3NQcm9iZSI6eyJleGVjIjp7ImNvbW1hbmQiOlsiL3Zhci9saWIvbXlzcWwvcmVhZGluZXNzLWNoZWNrLnNoIl19LCJpbml0aWFsRGVsYXlTZWNvbmRzIjoxNSwidGltZW91dFNlY29uZHMiOjE1LCJwZXJpb2RTZWNvbmRzIjozMCwiZmFpbHVyZVRocmVzaG9sZCI6NX0sImltYWdlUHVsbFBvbGljeSI6IkFsd2F5cyJ9LHsibmFtZSI6ImV4cG9ydGVyIiwiaW1hZ2UiOiJxdWF5LmlvL3Byb21ldGhldXMvbXlzcWxkLWV4cG9ydGVyOnYwLjE0LjAiLCJhcmdzIjpbIi0tY29sbGVjdC5pbmZvX3NjaGVtYS5wcm9jZXNzbGlzdCJdLCJwb3J0cyI6W3sibmFtZSI6Im1ldHJpY3MiLCJjb250YWluZXJQb3J0Ijo5MTA0LCJwcm90b2NvbCI6IlRDUCJ9XSwiZW52IjpbeyJuYW1lIjoiTU9OSVRPUl9QQVNTV09SRCIsInZhbHVlRnJvbSI6eyJzZWNyZXRLZXlSZWYiOnsibmFtZSI6InBlcmNvbmEteHRyYWRiIiwia2V5IjoibW9uaXRvciJ9fX0seyJuYW1lIjoiREFUQV9TT1VSQ0VfTkFNRSIsInZhbHVlIjoibW9uaXRvcjokKE1PTklUT1JfUEFTU1dPUkQpQChsb2NhbGhvc3Q6MzMwNikvIn1dLCJyZXNvdXJjZXMiOnt9LCJyZWFkaW5lc3NQcm9iZSI6eyJodHRwR2V0Ijp7InBhdGgiOiIvIiwicG9ydCI6Im1ldHJpY3MifX19XSwicmVzdGFydFBvbGljeSI6IkFsd2F5cyIsInRlcm1pbmF0aW9uR3JhY2VQZXJpb2RTZWNvbmRzIjo2MDAsImRuc1BvbGljeSI6IkNsdXN0ZXJGaXJzdCIsIm5vZGVTZWxlY3RvciI6eyJvcGVuc3RhY2stY29udHJvbC1wbGFuZSI6ImVuYWJsZWQifSwic2VydmljZUFjY291bnROYW1lIjoiZGVmYXVsdCIsInNlcnZpY2VBY2NvdW50IjoiZGVmYXVsdCIsInNlY3VyaXR5Q29udGV4dCI6eyJzdXBwbGVtZW50YWxHcm91cHMiOlsxMDAxXSwiZnNHcm91cCI6MTAwMX0sImFmZmluaXR5Ijp7InBvZEFudGlBZmZpbml0eSI6eyJyZXF1aXJlZER1cmluZ1NjaGVkdWxpbmdJZ25vcmVkRHVyaW5nRXhlY3V0aW9uIjpbeyJsYWJlbFNlbGVjdG9yIjp7Im1hdGNoTGFiZWxzIjp7ImFwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudCI6InB4YyIsImFwcC5rdWJlcm5ldGVzLmlvL2luc3RhbmNlIjoicGVyY29uYS14dHJhZGIiLCJhcHAua3ViZXJuZXRlcy5pby9tYW5hZ2VkLWJ5IjoicGVyY29uYS14dHJhZGItY2x1c3Rlci1vcGVyYXRvciIsImFwcC5rdWJlcm5ldGVzLmlvL25hbWUiOiJwZXJjb25hLXh0cmFkYi1jbHVzdGVyIiwiYXBwLmt1YmVybmV0ZXMuaW8vcGFydC1vZiI6InBlcmNvbmEteHRyYWRiLWNsdXN0ZXIifX0sInRvcG9sb2d5S2V5Ijoia3ViZXJuZXRlcy5pby9ob3N0bmFtZSJ9XX19LCJzY2hlZHVsZXJOYW1lIjoiZGVmYXVsdC1zY2hlZHVsZXIifX0sInZvbHVtZUNsYWltVGVtcGxhdGVzIjpbeyJtZXRhZGF0YSI6eyJuYW1lIjoiZGF0YWRpciIsImNyZWF0aW9uVGltZXN0YW1wIjpudWxsfSwic3BlYyI6eyJhY2Nlc3NNb2RlcyI6WyJSZWFkV3JpdGVPbmNlIl0sInJlc291cmNlcyI6eyJyZXF1ZXN0cyI6eyJzdG9yYWdlIjoiMTYwR2kifX0sInZvbHVtZU1vZGUiOiJGaWxlc3lzdGVtIn0sInN0YXR1cyI6eyJwaGFzZSI6IlBlbmRpbmcifX1dLCJzZXJ2aWNlTmFtZSI6InBlcmNvbmEteHRyYWRiLXB4YyIsInBvZE1hbmFnZW1lbnRQb2xpY3kiOiJPcmRlcmVkUmVhZHkiLCJ1cGRhdGVTdHJhdGVneSI6eyJ0eXBlIjoiUm9sbGluZ1VwZGF0ZSIsInJvbGxpbmdVcGRhdGUiOnsicGFydGl0aW9uIjowfX0sInJldmlzaW9uSGlzdG9yeUxpbWl0IjoxMCwicGVyc2lzdGVudFZvbHVtZUNsYWltUmV0ZW50aW9uUG9saWN5Ijp7IndoZW5EZWxldGVkIjoiUmV0YWluIiwid2hlblNjYWxlZCI6IlJldGFpbiJ9fQ==
  creationTimestamp: "2026-02-25T02:23:07Z"
  generation: 1
  name: percona-xtradb-pxc
  namespace: openstack
  ownerReferences:
  - apiVersion: pxc.percona.com/v1
    controller: true
    kind: PerconaXtraDBCluster
    name: percona-xtradb
    uid: aa6e9a80-8cfd-45c5-87d4-9ad15d4c3ec5
  resourceVersion: "5483"
  uid: 365a87b9-d92d-4333-9f9a-a37dcce3cc6e
spec:
  persistentVolumeClaimRetentionPolicy:
    whenDeleted: Retain
    whenScaled: Retain
  podManagementPolicy: OrderedReady
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app.kubernetes.io/component: pxc
      app.kubernetes.io/instance: percona-xtradb
      app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
      app.kubernetes.io/name: percona-xtradb-cluster
      app.kubernetes.io/part-of: percona-xtradb-cluster
  serviceName: percona-xtradb-pxc
  template:
    metadata:
      annotations:
        percona.com/configuration-hash: 05cba3c0b1f1aea21888a8712b9bc1b5
      creationTimestamp: null
      labels:
        app.kubernetes.io/component: pxc
        app.kubernetes.io/instance: percona-xtradb
        app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
        app.kubernetes.io/name: percona-xtradb-cluster
        app.kubernetes.io/part-of: percona-xtradb-cluster
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchLabels:
                app.kubernetes.io/component: pxc
                app.kubernetes.io/instance: percona-xtradb
                app.kubernetes.io/managed-by: percona-xtradb-cluster-operator
                app.kubernetes.io/name: percona-xtradb-cluster
                app.kubernetes.io/part-of: percona-xtradb-cluster
            topologyKey: kubernetes.io/hostname
      containers:
      - args:
        - mysqld
        command:
        - /var/lib/mysql/pxc-entrypoint.sh
        env:
        - name: PXC_SERVICE
          value: percona-xtradb-pxc-unready
        - name: MONITOR_HOST
          value: '%'
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              key: root
              name: internal-percona-xtradb
        - name: XTRABACKUP_PASSWORD
          valueFrom:
            secretKeyRef:
              key: xtrabackup
              name: internal-percona-xtradb
        - name: MONITOR_PASSWORD
          valueFrom:
            secretKeyRef:
              key: monitor
              name: internal-percona-xtradb
        - name: CLUSTER_HASH
          value: "2268347"
        - name: OPERATOR_ADMIN_PASSWORD
          valueFrom:
            secretKeyRef:
              key: operator
              name: internal-percona-xtradb
        - name: LIVENESS_CHECK_TIMEOUT
          value: "60"
        - name: READINESS_CHECK_TIMEOUT
          value: "15"
        - name: DEFAULT_AUTHENTICATION_PLUGIN
          value: caching_sha2_password
        envFrom:
        - secretRef:
            name: percona-xtradb-env-vars-pxc
            optional: true
        image: docker.io/percona/percona-xtradb-cluster:8.0.32-24.2
        imagePullPolicy: Always
        livenessProbe:
          exec:
            command:
            - /var/lib/mysql/liveness-check.sh
          failureThreshold: 3
          initialDelaySeconds: 300
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 5
        name: pxc
        ports:
        - containerPort: 3306
          name: mysql
          protocol: TCP
        - containerPort: 4444
          name: sst
          protocol: TCP
        - containerPort: 4567
          name: write-set
          protocol: TCP
        - containerPort: 4568
          name: ist
          protocol: TCP
        - containerPort: 33062
          name: mysql-admin
          protocol: TCP
        - containerPort: 33060
          name: mysqlx
          protocol: TCP
        readinessProbe:
          exec:
            command:
            - /var/lib/mysql/readiness-check.sh
          failureThreshold: 5
          initialDelaySeconds: 15
          periodSeconds: 30
          successThreshold: 1
          timeoutSeconds: 15
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /var/lib/mysql
          name: datadir
        - mountPath: /etc/percona-xtradb-cluster.conf.d
          name: config
        - mountPath: /tmp
          name: tmp
        - mountPath: /etc/mysql/ssl
          name: ssl
        - mountPath: /etc/mysql/ssl-internal
          name: ssl-internal
        - mountPath: /etc/mysql/mysql-users-secret
          name: mysql-users-secret-file
        - mountPath: /etc/my.cnf.d
          name: auto-config
        - mountPath: /etc/mysql/vault-keyring-secret
          name: vault-keyring-secret
      - args:
        - --collect.info_schema.processlist
        env:
        - name: MONITOR_PASSWORD
          valueFrom:
            secretKeyRef:
              key: monitor
              name: percona-xtradb
        - name: DATA_SOURCE_NAME
          value: monitor:$(MONITOR_PASSWORD)@(localhost:3306)/
        image: quay.io/prometheus/mysqld-exporter:v0.14.0
        imagePullPolicy: IfNotPresent
        name: exporter
        ports:
        - containerPort: 9104
          name: metrics
          protocol: TCP
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /
            port: metrics
            scheme: HTTP
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      initContainers:
      - command:
        - /pxc-init-entrypoint.sh
        image: docker.io/percona/percona-xtradb-cluster-operator:1.13.0
        imagePullPolicy: Always
        name: pxc-init
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /var/lib/mysql
          name: datadir
      nodeSelector:
        openstack-control-plane: enabled
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext:
        fsGroup: 1001
        supplementalGroups:
        - 1001
      serviceAccount: default
      serviceAccountName: default
      terminationGracePeriodSeconds: 600
      volumes:
      - emptyDir: {}
        name: tmp
      - configMap:
          defaultMode: 420
          name: percona-xtradb-pxc
          optional: true
        name: config
      - name: ssl-internal
        secret:
          defaultMode: 420
          optional: true
          secretName: percona-xtradb-ssl-internal
      - name: ssl
        secret:
          defaultMode: 420
          optional: true
          secretName: percona-xtradb-ssl
      - configMap:
          defaultMode: 420
          name: auto-percona-xtradb-pxc
          optional: true
        name: auto-config
      - name: vault-keyring-secret
        secret:
          defaultMode: 420
          optional: true
          secretName: percona-xtradb-vault
      - name: mysql-users-secret-file
        secret:
          defaultMode: 420
          optional: false
          secretName: internal-percona-xtradb
  updateStrategy:
    rollingUpdate:
      partition: 0
    type: RollingUpdate
  volumeClaimTemplates:
  - apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      creationTimestamp: null
      name: datadir
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 160Gi
      volumeMode: Filesystem
    status:
      phase: Pending
status:
  availableReplicas: 0
  collisionCount: 0
  currentReplicas: 1
  currentRevision: percona-xtradb-pxc-fcf6f85f6
  observedGeneration: 1
  replicas: 1
  updateRevision: percona-xtradb-pxc-fcf6f85f6
  updatedReplicas: 1
