apiVersion: apps/v1
kind: StatefulSet
metadata:
  annotations:
    percona.com/last-config-hash: eyJyZXBsaWNhcyI6MSwic2VsZWN0b3IiOnsibWF0Y2hMYWJlbHMiOnsiYXBwLmt1YmVybmV0ZXMuaW8vY29tcG9uZW50IjoicHhjIiwiYXBwLmt1YmVybmV0ZXMuaW8vaW5zdGFuY2UiOiJwZXJjb25hLXh0cmFkYiIsImFwcC5rdWJlcm5ldGVzLmlvL21hbmFnZWQtYnkiOiJwZXJjb25hLXh0cmFkYi1jbHVzdGVyLW9wZXJhdG9yIiwiYXBwLmt1YmVybmV0ZXMuaW8vbmFtZSI6InBlcmNvbmEteHRyYWRiLWNsdXN0ZXIiLCJhcHAua3ViZXJuZXRlcy5pby9wYXJ0LW9mIjoicGVyY29uYS14dHJhZGItY2x1c3RlciJ9fSwidGVtcGxhdGUiOnsibWV0YWRhdGEiOnsiY3JlYXRpb25UaW1lc3RhbXAiOm51bGwsImxhYmVscyI6eyJhcHAua3ViZXJuZXRlcy5pby9jb21wb25lbnQiOiJweGMiLCJhcHAua3ViZXJuZXRlcy5pby9pbnN0YW5jZSI6InBlcmNvbmEteHRyYWRiIiwiYXBwLmt1YmVybmV0ZXMuaW8vbWFuYWdlZC1ieSI6InBlcmNvbmEteHRyYWRiLWNsdXN0ZXItb3BlcmF0b3IiLCJhcHAua3ViZXJuZXRlcy5pby9uYW1lIjoicGVyY29uYS14dHJhZGItY2x1c3RlciIsImFwcC5rdWJlcm5ldGVzLmlvL3BhcnQtb2YiOiJwZXJjb25hLXh0cmFkYi1jbHVzdGVyIn0sImFubm90YXRpb25zIjp7InBlcmNvbmEuY29tL2NvbmZpZ3VyYXRpb24taGFzaCI6IjA1Y2JhM2MwYjFmMWFlYTIxODg4YTg3MTJiOWJjMWI1In19LCJzcGVjIjp7InZvbHVtZXMiOlt7Im5hbWUiOiJ0bXAiLCJlbXB0eURpciI6e319LHsibmFtZSI6ImNvbmZpZyIsImNvbmZpZ01hcCI6eyJuYW1lIjoicGVyY29uYS14dHJhZGItcHhjIiwib3B0aW9uYWwiOnRydWV9fSx7Im5hbWUiOiJzc2wtaW50ZXJuYWwiLCJzZWNyZXQiOnsic2VjcmV0TmFtZSI6InBlcmNvbmEteHRyYWRiLXNzbC1pbnRlcm5hbCIsIm9wdGlvbmFsIjp0cnVlfX0seyJuYW1lIjoic3NsIiwic2VjcmV0Ijp7InNlY3JldE5hbWUiOiJwZXJjb25hLXh0cmFkYi1zc2wiLCJvcHRpb25hbCI6dHJ1ZX19LHsibmFtZSI6ImF1dG8tY29uZmlnIiwiY29uZmlnTWFwIjp7Im5hbWUiOiJhdXRvLXBlcmNvbmEteHRyYWRiLXB4YyIsIm9wdGlvbmFsIjp0cnVlfX0seyJuYW1lIjoidmF1bHQta2V5cmluZy1zZWNyZXQiLCJzZWNyZXQiOnsic2VjcmV0TmFtZSI6InBlcmNvbmEteHRyYWRiLXZhdWx0Iiwib3B0aW9uYWwiOnRydWV9fSx7Im5hbWUiOiJteXNxbC11c2Vycy1zZWNyZXQtZmlsZSIsInNlY3JldCI6eyJzZWNyZXROYW1lIjoiaW50ZXJuYWwtcGVyY29uYS14dHJhZGIiLCJvcHRpb25hbCI6ZmFsc2V9fV0sImluaXRDb250YWluZXJzIjpbeyJuYW1lIjoicHhjLWluaXQiLCJpbWFnZSI6ImhhcmJvci5hdG1vc3BoZXJlLmRldi9kb2NrZXIuaW8vcGVyY29uYS9wZXJjb25hLXh0cmFkYi1jbHVzdGVyLW9wZXJhdG9yOjEuMTMuMCIsImNvbW1hbmQiOlsiL3B4Yy1pbml0LWVudHJ5cG9pbnQuc2giXSwicmVzb3VyY2VzIjp7fSwidm9sdW1lTW91bnRzIjpbeyJuYW1lIjoiZGF0YWRpciIsIm1vdW50UGF0aCI6Ii92YXIvbGliL215c3FsIn1dLCJpbWFnZVB1bGxQb2xpY3kiOiJBbHdheXMifV0sImNvbnRhaW5lcnMiOlt7Im5hbWUiOiJweGMiLCJpbWFnZSI6ImhhcmJvci5hdG1vc3BoZXJlLmRldi9kb2NrZXIuaW8vcGVyY29uYS9wZXJjb25hLXh0cmFkYi1jbHVzdGVyOjguMC4zMi0yNC4yIiwiY29tbWFuZCI6WyIvdmFyL2xpYi9teXNxbC9weGMtZW50cnlwb2ludC5zaCJdLCJhcmdzIjpbIm15c3FsZCJdLCJwb3J0cyI6W3sibmFtZSI6Im15c3FsIiwiY29udGFpbmVyUG9ydCI6MzMwNn0seyJuYW1lIjoic3N0IiwiY29udGFpbmVyUG9ydCI6NDQ0NH0seyJuYW1lIjoid3JpdGUtc2V0IiwiY29udGFpbmVyUG9ydCI6NDU2N30seyJuYW1lIjoiaXN0IiwiY29udGFpbmVyUG9ydCI6NDU2OH0seyJuYW1lIjoibXlzcWwtYWRtaW4iLCJjb250YWluZXJQb3J0IjozMzA2Mn0seyJuYW1lIjoibXlzcWx4IiwiY29udGFpbmVyUG9ydCI6MzMwNjB9XSwiZW52RnJvbSI6W3sic2VjcmV0UmVmIjp7Im5hbWUiOiJwZXJjb25hLXh0cmFkYi1lbnYtdmFycy1weGMiLCJvcHRpb25hbCI6dHJ1ZX19XSwiZW52IjpbeyJuYW1lIjoiUFhDX1NFUlZJQ0UiLCJ2YWx1ZSI6InBlcmNvbmEteHRyYWRiLXB4Yy11bnJlYWR5In0seyJuYW1lIjoiTU9OSVRPUl9IT1NUIiwidmFsdWUiOiIlIn0seyJuYW1lIjoiTVlTUUxfUk9PVF9QQVNTV09SRCIsInZhbHVlRnJvbSI6eyJzZWNyZXRLZXlSZWYiOnsibmFtZSI6ImludGVybmFsLXBlcmNvbmEteHRyYWRiIiwia2V5Ijoicm9vdCJ9fX0seyJuYW1lIjoiWFRSQUJBQ0tVUF9QQVNTV09SRCIsInZhbHVlRnJvbSI6eyJzZWNyZXRLZXlSZWYiOnsibmFtZSI6ImludGVybmFsLXBlcmNvbmEteHRyYWRiIiwia2V5IjoieHRyYWJhY2t1cCJ9fX0seyJuYW1lIjoiTU9OSVRPUl9QQVNTV09SRCIsInZhbHVlRnJvbSI6eyJzZWNyZXRLZXlSZWYiOnsibmFtZSI6ImludGVybmFsLXBlcmNvbmEteHRyYWRiIiwia2V5IjoibW9uaXRvciJ9fX0seyJuYW1lIjoiQ0xVU1RFUl9IQVNIIiwidmFsdWUiOiIxNzkyNTcxIn0seyJuYW1lIjoiT1BFUkFUT1JfQURNSU5fUEFTU1dPUkQiLCJ2YWx1ZUZyb20iOnsic2VjcmV0S2V5UmVmIjp7Im5hbWUiOiJpbnRlcm5hbC1wZXJjb25hLXh0cmFkYiIsImtleSI6Im9wZXJhdG9yIn19fSx7Im5hbWUiOiJMSVZFTkVTU19DSEVDS19USU1FT1VUIiwidmFsdWUiOiI2MCJ9LHsibmFtZSI6IlJFQURJTkVTU19DSEVDS19USU1FT1VUIiwidmFsdWUiOiIxNSJ9LHsibmFtZSI6IkRFRkFVTFRfQVVUSEVOVElDQVRJT05fUExVR0lOIiwidmFsdWUiOiJjYWNoaW5nX3NoYTJfcGFzc3dvcmQifV0sInJlc291cmNlcyI6e30sInZvbHVtZU1vdW50cyI6W3sibmFtZSI6ImRhdGFkaXIiLCJtb3VudFBhdGgiOiIvdmFyL2xpYi9teXNxbCJ9LHsibmFtZSI6ImNvbmZpZyIsIm1vdW50UGF0aCI6Ii9ldGMvcGVyY29uYS14dHJhZGItY2x1c3Rlci5jb25mLmQifSx7Im5hbWUiOiJ0bXAiLCJtb3VudFBhdGgiOiIvdG1wIn0seyJuYW1lIjoic3NsIiwibW91bnRQYXRoIjoiL2V0Yy9teXNxbC9zc2wifSx7Im5hbWUiOiJzc2wtaW50ZXJuYWwiLCJtb3VudFBhdGgiOiIvZXRjL215c3FsL3NzbC1pbnRlcm5hbCJ9LHsibmFtZSI6Im15c3FsLXVzZXJzLXNlY3JldC1maWxlIiwibW91bnRQYXRoIjoiL2V0Yy9teXNxbC9teXNxbC11c2Vycy1zZWNyZXQifSx7Im5hbWUiOiJhdXRvLWNvbmZpZyIsIm1vdW50UGF0aCI6Ii9ldGMvbXkuY25mLmQifSx7Im5hbWUiOiJ2YXVsdC1rZXlyaW5nLXNlY3JldCIsIm1vdW50UGF0aCI6Ii9ldGMvbXlzcWwvdmF1bHQta2V5cmluZy1zZWNyZXQifV0sImxpdmVuZXNzUHJvYmUiOnsiZXhlYyI6eyJjb21tYW5kIjpbIi92YXIvbGliL215c3FsL2xpdmVuZXNzLWNoZWNrLnNoIl19LCJpbml0aWFsRGVsYXlTZWNvbmRzIjozMDAsInRpbWVvdXRTZWNvbmRzIjo1LCJwZXJpb2RTZWNvbmRzIjoxMH0sInJlYWRpbmVzc1Byb2JlIjp7ImV4ZWMiOnsiY29tbWFuZCI6WyIvdmFyL2xpYi9teXNxbC9yZWFkaW5lc3MtY2hlY2suc2giXX0sImluaXRpYWxEZWxheVNlY29uZHMiOjE1LCJ0aW1lb3V0U2Vjb25kcyI6MTUsInBlcmlvZFNlY29uZHMiOjMwLCJmYWlsdXJlVGhyZXNob2xkIjo1fSwiaW1hZ2VQdWxsUG9saWN5IjoiQWx3YXlzIn0seyJuYW1lIjoiZXhwb3J0ZXIiLCJpbWFnZSI6ImhhcmJvci5hdG1vc3BoZXJlLmRldi9xdWF5LmlvL3Byb21ldGhldXMvbXlzcWxkLWV4cG9ydGVyOnYwLjE0LjAiLCJhcmdzIjpbIi0tY29sbGVjdC5pbmZvX3NjaGVtYS5wcm9jZXNzbGlzdCJdLCJwb3J0cyI6W3sibmFtZSI6Im1ldHJpY3MiLCJjb250YWluZXJQb3J0Ijo5MTA0LCJwcm90b2NvbCI6IlRDUCJ9XSwiZW52IjpbeyJuYW1lIjoiTU9OSVRPUl9QQVNTV09SRCIsInZhbHVlRnJvbSI6eyJzZWNyZXRLZXlSZWYiOnsibmFtZSI6InBlcmNvbmEteHRyYWRiIiwia2V5IjoibW9uaXRvciJ9fX0seyJuYW1lIjoiREFUQV9TT1VSQ0VfTkFNRSIsInZhbHVlIjoibW9uaXRvcjokKE1PTklUT1JfUEFTU1dPUkQpQChsb2NhbGhvc3Q6MzMwNikvIn1dLCJyZXNvdXJjZXMiOnt9LCJyZWFkaW5lc3NQcm9iZSI6eyJodHRwR2V0Ijp7InBhdGgiOiIvIiwicG9ydCI6Im1ldHJpY3MifX19XSwicmVzdGFydFBvbGljeSI6IkFsd2F5cyIsInRlcm1pbmF0aW9uR3JhY2VQZXJpb2RTZWNvbmRzIjo2MDAsImRuc1BvbGljeSI6IkNsdXN0ZXJGaXJzdCIsIm5vZGVTZWxlY3RvciI6eyJvcGVuc3RhY2stY29udHJvbC1wbGFuZSI6ImVuYWJsZWQifSwic2VydmljZUFjY291bnROYW1lIjoiZGVmYXVsdCIsInNlcnZpY2VBY2NvdW50IjoiZGVmYXVsdCIsInNlY3VyaXR5Q29udGV4dCI6eyJzdXBwbGVtZW50YWxHcm91cHMiOlsxMDAxXSwiZnNHcm91cCI6MTAwMX0sImFmZmluaXR5Ijp7InBvZEFudGlBZmZpbml0eSI6eyJyZXF1aXJlZER1cmluZ1NjaGVkdWxpbmdJZ25vcmVkRHVyaW5nRXhlY3V0aW9uIjpbeyJsYWJlbFNlbGVjdG9yIjp7Im1hdGNoTGFiZWxzIjp7ImFwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudCI6InB4YyIsImFwcC5rdWJlcm5ldGVzLmlvL2luc3RhbmNlIjoicGVyY29uYS14dHJhZGIiLCJhcHAua3ViZXJuZXRlcy5pby9tYW5hZ2VkLWJ5IjoicGVyY29uYS14dHJhZGItY2x1c3Rlci1vcGVyYXRvciIsImFwcC5rdWJlcm5ldGVzLmlvL25hbWUiOiJwZXJjb25hLXh0cmFkYi1jbHVzdGVyIiwiYXBwLmt1YmVybmV0ZXMuaW8vcGFydC1vZiI6InBlcmNvbmEteHRyYWRiLWNsdXN0ZXIifX0sInRvcG9sb2d5S2V5Ijoia3ViZXJuZXRlcy5pby9ob3N0bmFtZSJ9XX19LCJzY2hlZHVsZXJOYW1lIjoiZGVmYXVsdC1zY2hlZHVsZXIifX0sInZvbHVtZUNsYWltVGVtcGxhdGVzIjpbeyJtZXRhZGF0YSI6eyJuYW1lIjoiZGF0YWRpciIsImNyZWF0aW9uVGltZXN0YW1wIjpudWxsfSwic3BlYyI6eyJhY2Nlc3NNb2RlcyI6WyJSZWFkV3JpdGVPbmNlIl0sInJlc291cmNlcyI6eyJyZXF1ZXN0cyI6eyJzdG9yYWdlIjoiMTYwR2kifX0sInZvbHVtZU1vZGUiOiJGaWxlc3lzdGVtIn0sInN0YXR1cyI6eyJwaGFzZSI6IlBlbmRpbmcifX1dLCJzZXJ2aWNlTmFtZSI6InBlcmNvbmEteHRyYWRiLXB4YyIsInBvZE1hbmFnZW1lbnRQb2xpY3kiOiJPcmRlcmVkUmVhZHkiLCJ1cGRhdGVTdHJhdGVneSI6eyJ0eXBlIjoiUm9sbGluZ1VwZGF0ZSIsInJvbGxpbmdVcGRhdGUiOnsicGFydGl0aW9uIjowfX0sInJldmlzaW9uSGlzdG9yeUxpbWl0IjoxMCwicGVyc2lzdGVudFZvbHVtZUNsYWltUmV0ZW50aW9uUG9saWN5Ijp7IndoZW5EZWxldGVkIjoiUmV0YWluIiwid2hlblNjYWxlZCI6IlJldGFpbiJ9fQ==
  creationTimestamp: "2026-03-09T01:42:18Z"
  generation: 1
  name: percona-xtradb-pxc
  namespace: openstack
  ownerReferences:
  - apiVersion: pxc.percona.com/v1
    controller: true
    kind: PerconaXtraDBCluster
    name: percona-xtradb
    uid: 8ea86c6a-ddd7-4178-8710-6f0200cc88a1
  resourceVersion: "12328"
  uid: b7e8eb5d-c099-414b-8f3f-fbdf20f1f793
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: "1792571"
        - 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: harbor.atmosphere.dev/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: harbor.atmosphere.dev/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: harbor.atmosphere.dev/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: 1
  collisionCount: 0
  currentReplicas: 1
  currentRevision: percona-xtradb-pxc-7c844d9c8
  observedGeneration: 1
  readyReplicas: 1
  replicas: 1
  updateRevision: percona-xtradb-pxc-7c844d9c8
  updatedReplicas: 1
