apiVersion: ps.percona.com/v1alpha1 kind: PerconaServerMySQL metadata: name: cluster1 finalizers: - percona.com/delete-mysql-pods-in-order # - percona.com/delete-ssl # - percona.com/delete-mysql-pvc spec: # unsafeFlags: # mysqlSize: false # orchestrator: false # orchestratorSize: false # proxy: false # proxySize: false # pause: false crVersion: 0.11.0 secretsName: cluster1-secrets sslSecretName: cluster1-ssl updateStrategy: SmartUpdate upgradeOptions: versionServiceEndpoint: https://check.percona.com apply: disabled # initImage: perconalab/percona-server-mysql-operator:main # ignoreAnnotations: # - service.beta.kubernetes.io/aws-load-balancer-backend-protocol # ignoreLabels: # - rack # tls: # SANs: # - mysql-1.example.com # - mysql-2.example.com # - mysql-3.example.com # issuerConf: # name: special-selfsigned-issuer # kind: ClusterIssuer # group: cert-manager.io mysql: clusterType: group-replication autoRecovery: true image: perconalab/percona-server-mysql-operator:main-psmysql imagePullPolicy: Always # runtimeClassName: image-rc # tolerations: # - key: "node.alpha.kubernetes.io/unreachable" # operator: "Exists" # effect: "NoExecute" # tolerationSeconds: 6000 # imagePullSecrets: # - "secret-1" # - "secret-2" # initImage: perconalab/percona-server-mysql-operator:main size: 3 # env: # - name: BOOTSTRAP_READ_TIMEOUT # value: "600" resources: requests: memory: 2G limits: memory: 4G # readinessProbe: # initialDelaySeconds: 30 # timeoutSeconds: 10 # periodSeconds: 10 # failureThreshold: 3 # successThreshold: 1 # # livenessProbe: # initialDelaySeconds: 15 # timeoutSeconds: 10 # periodSeconds: 10 # failureThreshold: 3 # successThreshold: 1 affinity: antiAffinityTopologyKey: "kubernetes.io/hostname" # advanced: # nodeAffinity: # requiredDuringSchedulingIgnoredDuringExecution: # nodeSelectorTerms: # - matchExpressions: # - key: kubernetes.io/e2e-az-name # operator: In # values: # - e2e-az1 # - e2e-az2 # topologySpreadConstraints: # - labelSelector: # matchLabels: # app.kubernetes.io/name: percona-server # maxSkew: 1 # topologyKey: kubernetes.io/hostname # whenUnsatisfiable: DoNotSchedule exposePrimary: enabled: true # type: ClusterIP # annotations: # service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp # service.beta.kubernetes.io/aws-load-balancer-type: nlb # externalTrafficPolicy: Cluster # internalTrafficPolicy: Cluster # labels: # rack: rack-22 # loadBalancerSourceRanges: # - 10.0.0.0/8 # expose: # enabled: false # type: ClusterIP # annotations: # service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp # service.beta.kubernetes.io/aws-load-balancer-type: nlb # externalTrafficPolicy: Cluster # internalTrafficPolicy: Cluster # labels: # rack: rack-22 # loadBalancerSourceRanges: # - 10.0.0.0/8 volumeSpec: # emptyDir: { } # hostPath: # path: /data # type: Directory persistentVolumeClaim: # storageClassName: standard # accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 2G gracePeriod: 600 # configuration: | # max_connections=250 # innodb_buffer_pool_size={{containerMemoryLimit * 3/4}} # sidecars: # - name: noop-memory # image: busybox # command: ["sleep", "30d"] # volumeMounts: # - name: "memory-vol" # mountPath: "/var/log/app/memory" # resources: # requests: # memory: 16M # - name: noop-pvc # image: busybox # command: ["sleep", "30d"] # volumeMounts: # - name: "pvc-vol" # mountPath: "/var/log/app/pvc" # sidecarVolumes: # - name: "memory-vol" # emptyDir: # medium: "Memory" # sidecarPVCs: # - name: pvc-vol # spec: # resources: # requests: # storage: 1G # containerSecurityContext: # privileged: true # podSecurityContext: # fsGroup: 1001 # supplementalGroups: [1001, 1002, 1003] proxy: haproxy: enabled: true size: 3 image: perconalab/percona-server-mysql-operator:main-haproxy imagePullPolicy: Always # runtimeClassName: image-rc # tolerations: # - key: "node.alpha.kubernetes.io/unreachable" # operator: "Exists" # effect: "NoExecute" # tolerationSeconds: 6000 # imagePullSecrets: # - "secret-1" # - "secret-2" resources: requests: memory: 1G cpu: 600m # limits: # memory: 1G # cpu: 700m # env: # - name: HA_CONNECTION_TIMEOUT # value: "1000" # # envFrom: # - secretRef: # name: haproxy-env-secret # readinessProbe: # timeoutSeconds: 3 # periodSeconds: 5 # failureThreshold: 3 # successThreshold: 1 # # livenessProbe: # timeoutSeconds: 3 # periodSeconds: 5 # failureThreshold: 3 # successThreshold: 1 gracePeriod: 30 # configuration: | # # the actual default configuration file can be found here https://github.com/percona/percona-server-mysql-operator/blob/main/build/haproxy-global.cfg # # global # maxconn 2048 # external-check # insecure-fork-wanted # stats socket /etc/haproxy/mysql/haproxy.sock mode 600 expose-fd listeners level admin # # defaults # default-server init-addr last,libc,none # log global # mode tcp # retries 10 # timeout client 28800s # timeout connect 100500 # timeout server 28800s # # frontend mysql-primary-in # bind *:3309 accept-proxy # bind *:3306 # mode tcp # option clitcpka # default_backend mysql-primary # # frontend mysql-replicas-in # bind *:3307 # mode tcp # option clitcpka # default_backend mysql-replicas # # frontend stats # bind *:8404 # mode http # http-request use-service prometheus-exporter if { path /metrics } affinity: antiAffinityTopologyKey: "kubernetes.io/hostname" # advanced: # nodeAffinity: # requiredDuringSchedulingIgnoredDuringExecution: # nodeSelectorTerms: # - matchExpressions: # - key: kubernetes.io/e2e-az-name # operator: In # values: # - e2e-az1 # - e2e-az2 # topologySpreadConstraints: # - labelSelector: # matchLabels: # app.kubernetes.io/name: percona-server # maxSkew: 1 # topologyKey: kubernetes.io/hostname # whenUnsatisfiable: DoNotSchedule # expose: # type: ClusterIP # annotations: # service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp # service.beta.kubernetes.io/aws-load-balancer-type: nlb # externalTrafficPolicy: Cluster # internalTrafficPolicy: Cluster # labels: # rack: rack-22 # loadBalancerSourceRanges: # - 10.0.0.0/8 # containerSecurityContext: # privileged: true # podSecurityContext: # fsGroup: 1001 # supplementalGroups: [1001, 1002, 1003] router: enabled: false image: perconalab/percona-server-mysql-operator:main-router imagePullPolicy: Always # runtimeClassName: image-rc # tolerations: # - key: "node.alpha.kubernetes.io/unreachable" # operator: "Exists" # effect: "NoExecute" # tolerationSeconds: 6000 # imagePullSecrets: # - "secret-1" # - "secret-2" # initImage: perconalab/percona-server-mysql-operator:main size: 3 resources: requests: memory: 256M limits: memory: 256M affinity: antiAffinityTopologyKey: "kubernetes.io/hostname" # advanced: # nodeAffinity: # requiredDuringSchedulingIgnoredDuringExecution: # nodeSelectorTerms: # - matchExpressions: # - key: kubernetes.io/e2e-az-name # operator: In # values: # - e2e-az1 # - e2e-az2 # topologySpreadConstraints: # - labelSelector: # matchLabels: # app.kubernetes.io/name: percona-server # maxSkew: 1 # topologyKey: kubernetes.io/hostname # whenUnsatisfiable: DoNotSchedule gracePeriod: 30 # configuration: | # [default] # logging_folder=/tmp/router/log # [logger] # level=DEBUG # expose: # type: ClusterIP # annotations: # service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp # service.beta.kubernetes.io/aws-load-balancer-type: nlb # externalTrafficPolicy: Cluster # internalTrafficPolicy: Cluster # labels: # rack: rack-22 # loadBalancerSourceRanges: # - 10.0.0.0/8 orchestrator: enabled: false image: perconalab/percona-server-mysql-operator:main-orchestrator imagePullPolicy: Always # runtimeClassName: image-rc # tolerations: # - key: "node.alpha.kubernetes.io/unreachable" # operator: "Exists" # effect: "NoExecute" # tolerationSeconds: 6000 # imagePullSecrets: # - "secret-1" # - "secret-2" # serviceAccountName: percona-server-mysql-operator-orchestrator # initImage: perconalab/percona-server-mysql-operator:main size: 3 affinity: antiAffinityTopologyKey: "kubernetes.io/hostname" # advanced: # nodeAffinity: # requiredDuringSchedulingIgnoredDuringExecution: # nodeSelectorTerms: # - matchExpressions: # - key: kubernetes.io/e2e-az-name # operator: In # values: # - e2e-az1 # - e2e-az2 # topologySpreadConstraints: # - labelSelector: # matchLabels: # app.kubernetes.io/name: percona-server # maxSkew: 1 # topologyKey: kubernetes.io/hostname # whenUnsatisfiable: DoNotSchedule # expose: # type: ClusterIP # annotations: # service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp # service.beta.kubernetes.io/aws-load-balancer-type: nlb # externalTrafficPolicy: Cluster # internalTrafficPolicy: Cluster # labels: # rack: rack-22 # loadBalancerSourceRanges: # - 10.0.0.0/8 gracePeriod: 30 resources: requests: memory: 128M limits: memory: 256M pmm: enabled: false image: perconalab/pmm-client:3-dev-latest imagePullPolicy: Always # mysqlParams: "--disable-tablestats-limit=2000" resources: requests: memory: 150M cpu: 300m # limits: # memory: 256M # cpu: 400m serverHost: monitoring-service backup: enabled: true image: perconalab/percona-server-mysql-operator:main-backup # schedule: # - name: "sat-night-backup" # schedule: "0 0 * * 6" # keep: 3 # storageName: s3-us-west # - name: "daily-backup" # schedule: "0 0 * * *" # keep: 5 # storageName: s3 # backoffLimit: 6 imagePullPolicy: Always # imagePullSecrets: # - "secret-1" # - "secret-2" # initImage: perconalab/percona-server-mysql-operator:main # containerSecurityContext: # privileged: true storages: # azure-blob: # type: azure # azure: # container: CONTAINER-NAME # prefix: PREFIX-NAME # endpointUrl: https://accountName.blob.core.windows.net # credentialsSecret: SECRET-NAME s3-us-west: type: s3 verifyTLS: true # nodeSelector: # storage: tape # backupWorker: 'True' # resources: # requests: # memory: 1G # cpu: 600m # affinity: # nodeAffinity: # requiredDuringSchedulingIgnoredDuringExecution: # nodeSelectorTerms: # - matchExpressions: # - key: backupWorker # operator: In # values: # - 'True' # topologySpreadConstraints: # - labelSelector: # matchLabels: # app.kubernetes.io/name: percona-server # maxSkew: 1 # topologyKey: kubernetes.io/hostname # whenUnsatisfiable: DoNotSchedule # tolerations: # - key: "backupWorker" # operator: "Equal" # value: "True" # effect: "NoSchedule" # annotations: # testName: scheduled-backup # labels: # backupWorker: 'True' # schedulerName: 'default-scheduler' # priorityClassName: 'high-priority' # containerSecurityContext: # privileged: true # podSecurityContext: # fsGroup: 1001 # supplementalGroups: [1001, 1002, 1003] # runtimeClassName: image-rc s3: bucket: S3-BACKUP-BUCKET-NAME-HERE credentialsSecret: cluster1-s3-credentials region: us-west-2 # prefix: "" toolkit: image: perconalab/percona-server-mysql-operator:main-toolkit imagePullPolicy: Always # resources: # requests: # memory: 150M # cpu: 100m # limits: # memory: 256M # cpu: 400m