278 lines
9.5 KiB
YAML
278 lines
9.5 KiB
YAML
# Default values for mysql-operator.
|
|
# This is a YAML-formatted file.
|
|
# Declare variables to be passed into your templates.
|
|
replicaCount: 1
|
|
|
|
image:
|
|
repository: docker.io/bitpoke/mysql-operator
|
|
pullPolicy: IfNotPresent
|
|
# Overrides the image tag whose default is the chart appVersion.
|
|
tag: ""
|
|
|
|
sidecar57:
|
|
image:
|
|
repository: docker.io/bitpoke/mysql-operator-sidecar-5.7
|
|
# Overrides the image tag whose default is the chart appVersion.
|
|
tag: ""
|
|
|
|
sidecar80:
|
|
image:
|
|
repository: docker.io/bitpoke/mysql-operator-sidecar-8.0
|
|
# Overrides the image tag whose default is the chart appVersion.
|
|
tag: ""
|
|
|
|
metricsExporter:
|
|
image:
|
|
repository: docker.io/prom/mysqld-exporter
|
|
tag: "v0.13.0"
|
|
|
|
imagePullSecrets: []
|
|
nameOverride: ""
|
|
fullnameOverride: ""
|
|
|
|
extraEnv: []
|
|
|
|
extraArgs: []
|
|
|
|
rbac:
|
|
create: true
|
|
|
|
serviceAccount:
|
|
# Specifies whether a service account should be created
|
|
create: true
|
|
# Annotations to add to the service account
|
|
annotations: {}
|
|
# The name of the service account to use.
|
|
# If not set and create is true, a name is generated using the fullname template
|
|
name: ""
|
|
|
|
podAnnotations: {}
|
|
|
|
podSecurityContext:
|
|
runAsNonRoot: true
|
|
# 65532 is the UID for nonroot user from distroless image
|
|
runAsUser: 65532
|
|
runAsGroup: 65532
|
|
fsGroup: 65532
|
|
|
|
securityContext: {}
|
|
# capabilities:
|
|
# drop:
|
|
# - ALL
|
|
# readOnlyRootFilesystem: true
|
|
# runAsNonRoot: true
|
|
# runAsUser: 1000
|
|
|
|
podDisruptionBudget:
|
|
enabled: true
|
|
maxUnavailable: 1
|
|
|
|
resources: {}
|
|
# We usually recommend not to specify default resources and to leave this as a conscious
|
|
# choice for the user. This also increases chances charts run on environments with little
|
|
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
|
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
|
# limits:
|
|
# cpu: 100m
|
|
# memory: 128Mi
|
|
# requests:
|
|
# cpu: 100m
|
|
# memory: 128Mi
|
|
|
|
nodeSelector:
|
|
"kubernetes.io/arch": "amd64"
|
|
|
|
tolerations: []
|
|
|
|
affinity: {}
|
|
|
|
# Insert a pre-stop lifecycle hook and trigger a failover. NOTE: Use this when your cluster network
|
|
# policy allows to connect across namespaces and the mysql node is able to connecto to operator pod
|
|
gracefulShutdown:
|
|
enabled: true
|
|
|
|
# in which namespace to watch for resource, leave empty to watch in all namespaces
|
|
watchNamespace:
|
|
|
|
# Install a ServiceMonitor for monitoring the operator
|
|
serviceMonitor:
|
|
# enabled should be set to true to enable prometheus-operator discovery of this service
|
|
enabled: false
|
|
# the Service port.name where prometheus metrics are exposed
|
|
servicePortName: prometheus
|
|
# the Service port.port where metrics are exposed
|
|
servicePort: 9125
|
|
# interval is the interval at which metrics should be scraped
|
|
# interval: 30s
|
|
# scrapeTimeout is the timeout after which the scrape is ended
|
|
# scrapeTimeout: 10s
|
|
# additionalLabels is the set of additional labels to add to the ServiceMonitor
|
|
additionalLabels: {}
|
|
jobLabel: ""
|
|
targetLabels: []
|
|
podTargetLabels: []
|
|
metricRelabelings: []
|
|
|
|
# The operator will install a ServiceMonitor if you have prometheus-operator installed.
|
|
mysqlClustersGlobalServiceMonitor:
|
|
enabled: false
|
|
## Additional labels for the serviceMonitor. Useful if you have multiple prometheus operators running to select only specific ServiceMonitors
|
|
# additionalLabels:
|
|
# prometheus: prom-internal
|
|
interval: 10s
|
|
scrapeTimeout: 3s
|
|
# jobLabel:
|
|
# targetLabels:
|
|
# podTargetLabels:
|
|
# metricRelabelings:
|
|
servicePortName: prometheus
|
|
namespaceSelector:
|
|
any: true
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/managed-by: mysql.presslabs.org
|
|
app.kubernetes.io/name: mysql
|
|
|
|
orchestrator:
|
|
image:
|
|
repository: docker.io/bitpoke/mysql-operator-orchestrator
|
|
pullPolicy: IfNotPresent
|
|
# Overrides the image tag whose default is the chart appVersion.
|
|
tag: ""
|
|
|
|
securityContext: {}
|
|
# capabilities:
|
|
# drop:
|
|
# - ALL
|
|
# readOnlyRootFilesystem: true
|
|
# runAsNonRoot: true
|
|
# runAsUser: 1000
|
|
|
|
# secretName: # specify an existing secret to use for orchestrator topology credentials
|
|
|
|
# if a secret is not specified one will be created for orchestrator user and password used to manage MySQL clusters
|
|
topologyUser: orchestrator
|
|
topologyPassword: # this is empty and will be random generated if not specified
|
|
|
|
resources: {}
|
|
# For example
|
|
# limits:
|
|
# cpu: 100m
|
|
# memory: 128Mi
|
|
# requests:
|
|
# cpu: 100m
|
|
# memory: 128Mi
|
|
|
|
service:
|
|
type: ClusterIP
|
|
port: 80
|
|
# nodePort: 3000
|
|
|
|
ingress:
|
|
enabled: false
|
|
className: ""
|
|
annotations: {}
|
|
# kubernetes.io/ingress.class: nginx
|
|
# kubernetes.io/tls-acme: "true"
|
|
hosts:
|
|
- host: chart-example.local
|
|
paths:
|
|
- path: /
|
|
pathType: ImplementationSpecific
|
|
tls: []
|
|
# - secretName: chart-example-tls
|
|
# hosts:
|
|
# - chart-example.local
|
|
|
|
|
|
persistence:
|
|
enabled: true
|
|
## If defined, storageClassName: <storageClass>
|
|
## If set to "-", storageClassName: "", which disables dynamic provisioning
|
|
## If undefined (the default) or set to null, no storageClassName spec is
|
|
## set, choosing the default provisioner. (gp2 on AWS, standard on
|
|
## GKE, AWS & OpenStack)
|
|
##
|
|
storageClass: "longhorn"
|
|
# annotations: {}
|
|
# selector:
|
|
# matchLabels: {}
|
|
accessMode: "ReadWriteOnce"
|
|
size: 5Gi
|
|
# inject an init container which properly sets the ownership for the orchestrator's data volume
|
|
# this is needed when the PV provisioner does not properly sets permissions for fsGroup
|
|
# when enabling this, you MUST change the securityContext.runAsNonRoot to false
|
|
fsGroupWorkaroundEnabled: false
|
|
|
|
# key value map of orchestrator conf directives.
|
|
# see: https://github.com/github/orchestrator/blob/master/conf/orchestrator-sample.conf.json
|
|
# the following keys are manages and thus cannot be overwritten:
|
|
# - ListenAddress :3000
|
|
# - MySQLTopologyCredentialsConfigFile /orchestrator/conf/orc-topology.cnf
|
|
# - BackendDB sqlite
|
|
# - SQLite3DataFile /var/lib/orchestrator/orc.db
|
|
# - RaftEnabled true
|
|
# - RaftDataDir /var/lib/orchestrator
|
|
# - RaftBind $HOSTNAME
|
|
# - RaftNodes The statefullset members
|
|
config:
|
|
Debug: false
|
|
# the operator is handling the registries, do not auto discover
|
|
DiscoverByShowSlaveHosts: false
|
|
# forget missing instances automatically
|
|
UnseenInstanceForgetHours: 1
|
|
|
|
InstancePollSeconds: 5
|
|
HostnameResolveMethod: "none"
|
|
MySQLHostnameResolveMethod: "@@report_host"
|
|
RemoveTextFromHostnameDisplay: ":3306"
|
|
DetectClusterAliasQuery: "SELECT CONCAT(SUBSTRING(@@hostname, 1, LENGTH(@@hostname) - 1 - LENGTH(SUBSTRING_INDEX(@@hostname,'-',-2))),'.',SUBSTRING_INDEX(@@report_host,'.',-1))"
|
|
DetectInstanceAliasQuery: "SELECT @@hostname"
|
|
SlaveLagQuery: "SELECT TIMESTAMPDIFF(SECOND,ts,UTC_TIMESTAMP()) as drift FROM sys_operator.heartbeat ORDER BY drift ASC LIMIT 1"
|
|
|
|
# Automated recovery (this is opt-in, so we need to set these)
|
|
# Prevent recovery flip-flop, by disabling auto-recovery for 5 minutes per
|
|
# cluster
|
|
RecoveryPeriodBlockSeconds: 300
|
|
# Do not ignore any host for auto-recovery
|
|
RecoveryIgnoreHostnameFilters: []
|
|
# Recover both, masters and intermediate masters
|
|
RecoverMasterClusterFilters: ['.*']
|
|
RecoverIntermediateMasterClusterFilters: ['.*']
|
|
# `reset slave all` and `set read_only=0` on promoted master
|
|
ApplyMySQLPromotionAfterMasterFailover: true
|
|
# https://github.com/github/orchestrator/blob/master/docs/configuration-recovery.md#promotion-actions
|
|
# Safety! do not disable unless you know what you are doing
|
|
FailMasterPromotionIfSQLThreadNotUpToDate: true
|
|
DetachLostReplicasAfterMasterFailover: true
|
|
# set downtime on the failed master
|
|
MasterFailoverLostInstancesDowntimeMinutes: 10
|
|
|
|
# orchestrator hooks called in the following order
|
|
# for more information about template: https://github.com/github/orchestrator/blob/master/go/logic/topology_recovery.go#L256
|
|
ProcessesShellCommand: "sh"
|
|
|
|
OnFailureDetectionProcesses:
|
|
- "/usr/local/bin/orc-helper event -w '{failureClusterAlias}' 'OrcFailureDetection' 'Failure: {failureType}, failed host: {failedHost}, lost replcas: {lostReplicas}' || true"
|
|
- "/usr/local/bin/orc-helper failover-in-progress '{failureClusterAlias}' '{failureDescription}' || true"
|
|
|
|
PreGracefulTakeoverProcesses:
|
|
- "/usr/local/bin/orc-helper failover-in-progress '{failureClusterAlias}' '{failureDescription}' || true"
|
|
|
|
PreFailoverProcesses:
|
|
# as backup in case the first request fails
|
|
- "/usr/local/bin/orc-helper failover-in-progress '{failureClusterAlias}' '{failureDescription}' || true"
|
|
# PostFailoverProcesses:
|
|
# - "/usr/local/bin/orchestrator-helper event '{failureClusterAlias}' 'Orc{command}' 'Failure type: {failureType}, failed hosts: {failedHost}, slaves: {countSlaves}' || true"
|
|
|
|
PostUnsuccessfulFailoverProcesses:
|
|
- "/usr/local/bin/orc-helper event -w '{failureClusterAlias}' 'OrcPostUnsuccessfulFailover' 'Failure: {failureType}, failed host: {failedHost} with {countSlaves} slaves' || true"
|
|
|
|
PostMasterFailoverProcesses:
|
|
- "/usr/local/bin/orc-helper event '{failureClusterAlias}' 'OrcPostMasterFailover' 'Failure type: {failureType}, new master: {successorHost}, slaves: {slaveHosts}' || true"
|
|
|
|
PostIntermediateMasterFailoverProcesses:
|
|
- "/usr/local/bin/orc-helper event '{failureClusterAlias}' 'OrcPostIntermediateMasterFailover' 'Failure type: {failureType}, failed hosts: {failedHost}, slaves: {countSlaves}' || true"
|
|
|
|
# PostGracefulTakeoverProcesses:
|