deploy/deploy-crds.yaml (1,330 lines of code) (raw):
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: innodbclusters.mysql.oracle.com
spec:
group: mysql.oracle.com
versions:
- name: v2
served: true
storage: true
schema:
openAPIV3Schema:
type: object
required: ["spec"]
properties:
metadata:
type: object
properties:
name:
type: string
maxLength: 40
spec:
type: object
required: ["secretName"]
properties:
secretName:
type: string
description: "Name of a generic type Secret containing root/default account password"
tlsCASecretName:
type: string
description: "Name of a generic type Secret containing CA (ca.pem) and optional CRL (crl.pem) for SSL"
tlsSecretName:
type: string
description: "Name of a TLS type Secret containing Server certificate and private key for SSL"
tlsUseSelfSigned:
type: boolean
default: false
description: "Enables use of self-signed TLS certificates, reducing or disabling TLS based security verifications"
version:
type: string
pattern: '^\d+\.\d+\.\d+(-.+)?'
description: "MySQL Server version"
edition:
type: string
pattern: "^(community|enterprise)$"
description: "MySQL Server Edition (community or enterprise)"
imageRepository:
type: string
description: "Repository where images are pulled from; defaults to container-registry.oracle.com/mysql"
imagePullPolicy:
type: string
description: "Defaults to Always, but set to IfNotPresent in deploy-operator.yaml when deploying Operator"
imagePullSecrets:
type: array
items:
type: object
properties:
name:
type: string
serviceAccountName:
type: string
baseServerId:
type: integer
minimum: 0
maximum: 4294967195
default: 1000
description: "Base value for MySQL server_id for instances in the cluster"
datadirVolumeClaimTemplate:
type: object
x-kubernetes-preserve-unknown-fields: true
description: "Template for a PersistentVolumeClaim, to be used as datadir"
datadirPermissions:
type: object
properties:
setRightsUsingInitContainer:
type: boolean
default: true
description: "Whether to use an init container to set at start the DataDir permissions "
fsGroupChangePolicy:
type: string
description: "Optional fsGroupChangePolicy value to be set in the pod security context. Some possible values are OnRootMismatch and Always. For more information check the official Kubernetes documentation"
default: ""
mycnf:
type: string
description: "Custom configuration additions for my.cnf"
instances:
type: integer
minimum: 1
maximum: 9
default: 1
description: "Number of MySQL replica instances for the cluster"
podSpec:
type: object
x-kubernetes-preserve-unknown-fields: true
podAnnotations:
type: object
x-kubernetes-preserve-unknown-fields: true
podLabels:
type: object
x-kubernetes-preserve-unknown-fields: true
keyring:
type: object
description: "Keyring specification"
properties:
file:
type: object
description: "Keyring 'File' specification"
required: ["storage"]
properties:
fileName:
type: string
default: "mysql_keyring"
description: "Path to the keyring file name inside the storage volume (will be prefixed by mount path)"
readOnly:
type: boolean
default: false
description: "Whether to open the keyring file in read-only mode"
storage:
type: object
description : "Specification of the volume to be mounted where the keyring file resides"
x-kubernetes-preserve-unknown-fields: true
encryptedFile:
type: object
description: "Keyring 'Encrypted File' specification"
required: ["storage", "password"]
properties:
fileName:
type: string
default: "mysql_keyring"
description: "Path to the keyring file name inside the storage volume (will be prefixed by mount path)"
readOnly:
type: boolean
default: false
description: "Whether to open the keyring file in read-only mode"
password:
type: string
description: "Name of a secret that contains password for the keyring in the key 'keyring_password'"
storage:
type: object
description : "Specification of the volume to be mounted where the keyring file resides"
x-kubernetes-preserve-unknown-fields: true
oci:
type: object
description: "Keyring 'OCI' specification"
required: ["user", "keySecret", "keyFingerprint", "tenancy"]
properties:
user:
type: string
description: "User identifier in the form of ocid1.user.oc1..."
pattern: '^ocid1\.user\.'
keySecret:
type: string
description: "A secret that contains the private key under the field 'privatekey'"
keyFingerprint:
type: string
description: "Private key fingerprint"
pattern: '([0-9a-f]{2}:){15}[0-9a-f]{2}$'
tenancy:
type: string
description: "Tenancy identifier in the form ocid1.tenancy.oc1..."
pattern: '^ocid1\.tenancy\.'
compartment:
type: string
description: "Compartment identifier in the form ocid1.compartment.oc1..."
pattern: '^ocid1\.compartment\.'
virtualVault:
type: string
description: "Vault identifier in the form ocid1.vault.oc1..."
pattern: '^ocid1\.vault\.'
masterKey:
type: string
description: "Master key identified in the form ocid1.key.oc1..."
pattern: '^ocid1\.key\.'
endpoints:
type: object
description: ""
properties:
encryption:
type: string
description: "Encryption endpoint URI like {identifier}-crypto.kms.{region}.oraclecloud.com"
management:
type: string
description: "Management endpoint URI like {identifier}-management.kms.{region}.oraclecloud.com"
vaults:
type: string
description: "Vaults endpoint URI like vaults.{region}.oci.oraclecloud.com"
secrets:
type: string
description: "Secrets endpoint URI like secrets.vaults.{region}.oci.oraclecloud.com"
caCertificate:
type: string
description: "Secret that contains ca.crt field with CA certificate bundle file that the keyring_oci plugin uses for Oracle Cloud Infrastructure certificate verification"
initDB:
type: object
properties:
clone:
type: object
required: ["donorUrl", "secretKeyRef"]
properties:
donorUrl:
type: string
description: "URL of the cluster to clone from"
rootUser:
type: string
default: "root"
description: "User name used for cloning"
secretKeyRef:
type: object
required: ["name"]
properties:
name:
type: string
description: "Secret name with key 'rootPassword' storing the password for the user specified in rootUser"
dump:
type: object
required: ["storage"]
properties:
name:
type: string
description: "Name of the dump. Not used by the operator, but a descriptive hint for the cluster administrator"
path:
type: string
description: "Path to the dump in the PVC. Use when specifying persistentVolumeClaim. Omit for ociObjectStorage, S3, or azure."
options:
type: object
description: "A dictionary of key-value pairs passed directly to MySQL Shell's loadDump()"
x-kubernetes-preserve-unknown-fields: true
storage:
type: object
properties:
ociObjectStorage:
type: object
required: ["bucketName", "prefix", "credentials"]
properties:
bucketName:
type: string
description: "Name of the OCI bucket where the dump is stored"
prefix:
type: string
description: "Path in the bucket where the dump files are stored"
credentials:
type: string
description: "Name of a Secret with data for accessing the bucket"
s3:
type: object
required: ["bucketName", "prefix", "config"]
properties:
bucketName:
type: string
description: "Name of the S3 bucket where the dump is stored"
prefix:
type: string
description: "Path in the bucket where the dump files are stored"
config:
type: string
description: "Name of a Secret with S3 configuration and credentials"
profile:
type: string
default: ""
description: "Profile being used in configuration files"
endpoint:
type: string
description: "Override endpoint URL"
azure:
type: object
required: ["containerName", "prefix", "config"]
properties:
containerName:
type: string
description: "Name of the Azure BLOB Storage container where the dump is stored"
prefix:
type: string
description: "Path in the container where the dump files are stored"
config:
type: string
description: "Name of a Secret with Azure BLOB Storage configuration and credentials"
persistentVolumeClaim:
type: object
description : "Specification of the PVC to be used. Used 'as is' in the cloning pod."
x-kubernetes-preserve-unknown-fields: true
x-kubernetes-preserve-unknown-fields: true
meb:
type: object
required: ["storage", "fullBackup"]
properties:
storage:
type: object
#oneOf:
#- required: ["ociObjectStorage", "s3"]
properties:
ociObjectStorage:
type: object
description: "Restore from OCI ObjectStorage using an PAR"
required: ["credentials"]
properties:
credentials:
type: string
description: "Secret Containing PAR Base URL under key parBaseUrl"
s3:
description: "S3 style storage"
type: object
required: ['region', 'bucket', 'objectKeyPrefix', 'credentials']
properties:
region:
type: string
description: "S3 Region"
bucket:
type: string
description: "S3 Bucket Name"
objectKeyPrefix:
type: string
description: "S3 Object Key Prefix, this will be extended with the name of the actual backup"
credentials:
type: string
description: "Name of a Secret holding iaccessKeyId and secretAccessKey properties"
host:
type: string
description: "Override hostname for S3-compatible backends"
fullBackup:
type: string
description: "Name of the full backup to restore"
incrementalBackups:
type: array
description: "Incremental backups to apply on top of the fullBackup"
items:
type: string
pitr:
type: object
description: "Point-in-time recovery using a backup file on top of fullBackup and optional incrementalBackups"
required: ["backupFile"]
properties:
backupFile:
type: string
description: "Backup containing binary log to apply"
binlogName:
type: string
description: "Basename of binlogs to use for PITR. Often this is the server_name of the backup source"
end:
type: object
description: "End condition for not applying the full log"
#oneOf: ['afterGtids', 'beforeGtids']
properties:
afterGtids:
type: string
description: "GTID set describing last transactions to apply, see SQL_AFTER_GTIDS in CHANGE REPLICATION SOURCE statement documentation"
beforeGtids:
type: string
description: "GTID set describing last transactions to apply, see SQL_BEFORE_GTID in CHANGE REPLICATION SOURCE statement documentation"
extraOptions:
description: "Additonal Command Line Options being passed to MySQL Enterprise Backup"
type: array
items:
type: string
x-kubernetes-preserve-unknown-fields: true
router:
type: object
description: "MySQL Router specification"
properties:
instances:
type: integer
minimum: 0
default: 1
description: "Number of MySQL Router instances to deploy"
tlsSecretName:
type: string
description: "Name of a TLS type Secret containing MySQL Router certificate and private key used for SSL"
version:
type: string
pattern: '^\d+\.\d+\.\d+(-.+)?'
description: "Override MySQL Router version"
podSpec:
type: object
x-kubernetes-preserve-unknown-fields: true
podAnnotations:
type: object
x-kubernetes-preserve-unknown-fields: true
podLabels:
type: object
x-kubernetes-preserve-unknown-fields: true
bootstrapOptions:
description: "Command line options passed to MySQL Router while bootstrapping"
type: array
items:
type: string
options:
description: "Command line options passed to MySQL Router while running"
type: array
items:
type: string
routingOptions:
description: "Set routing options for the cluster"
type: object
properties:
# naming pattern follows Shell's naming documented at
# https://dev.mysql.com/doc/mysql-shell/8.1/en/innodb-clusterset-router-setroutingoption.html
# ClusterSet-related options and tags currently not supported
invalidated_cluster_policy:
type: string
enum: ["drop_all", "accept_ro"]
stats_updates_frequency:
type: integer
default: 0
minimum: 0
read_only_targets:
type: string
enum: ["all", "read_replicas", "secondaries"]
instanceService:
type: object
description: "Configuration of the Service used by the InnoDB Cluster GR members internally"
properties:
annotations:
type: object
description: "Custom annotations for the Service"
x-kubernetes-preserve-unknown-fields: true
labels:
type: object
description: "Custom labels for the Service"
x-kubernetes-preserve-unknown-fields: true
service:
type: object
description: "Configuration of the Service used by applications connecting to the InnoDB Cluster"
properties:
type:
type: string
enum: ["ClusterIP", "NodePort", "LoadBalancer"]
default: "ClusterIP"
annotations:
type: object
description: "Custom annotations for the Service"
x-kubernetes-preserve-unknown-fields: true
labels:
type: object
description: "Custom labels for the Service"
x-kubernetes-preserve-unknown-fields: true
defaultPort:
type: string
description: "Target for the Service's default (3306) port. If mysql-rw traffic will go to the primary and allow read and write operations, with mysql-ro traffic goes to the replica and allows only read operations, with mysql-rw-split the router's read-write-splitting will be targeted"
enum: ["mysql-rw", "mysql-ro", "mysql-rw-split"]
default: "mysql-rw"
metrics:
type: object
description: "Configuration of a Prometheus-style metrics provider"
required: ["enable", "image"]
properties:
enable:
type: boolean
default: false
description: "Toggle to enable or disable the metrics sidecar"
image:
type: string
description: "Name of an image to be used for the metrics sidecar, if provided metrics will be enabled"
options:
type: array
description: "Options passed to the metrics provider as command line arguments"
items:
type: string
webConfig:
type: string
description: "Name of a ConfigMap with a web.config file, if this option is provided a command line option --web.config.file is added"
tlsSecret:
type: string
description: "Name of a Secret with TLS certificate, key and CA, which will be mounted at /tls into the container an can be used from webConfig"
monitor:
type: boolean
description: "Create a ServiceMonitor for Prometheus Operator"
default: false
monitorSpec:
type: object
x-kubernetes-preserve-unknown-fields: true
description: "Custom configuration for the ServiceMonitor object"
default: {}
# These are only supported for development purpose:
#dbUser:
# type: object
# description: "MySQL user accoutn to be used for collecting metrics"
# properties:
# name:
# type: string
# description: "The account name, host part will always be localhost"
# default: mysqlmetrics
# grants:
# type: array
# description: "GRANTs given to the account"
# default: [ 'PROCESS', 'REPLICATION CLIENT', 'SELECT' ]
# items:
# type: string
# maxConnections:
# type: integer
# default: 3
# description: "Maximum number of connections"
backupProfiles:
type: array
description: "Backup profile specifications for the cluster, which can be referenced from backup schedules and one-off backup jobs"
items:
type: object
required: ["name"]
properties:
name:
type: string
description: "Embedded backup profile, referenced as backupProfileName elsewhere"
podAnnotations:
type: object
x-kubernetes-preserve-unknown-fields: true
podLabels:
type: object
x-kubernetes-preserve-unknown-fields: true
dumpInstance:
type: object
properties:
dumpOptions:
type: object
description: "A dictionary of key-value pairs passed directly to MySQL Shell's DumpInstance()"
x-kubernetes-preserve-unknown-fields: true
storage:
type: object
properties:
ociObjectStorage:
type: object
required: ["bucketName", "credentials"]
properties:
bucketName:
type: string
description: "Name of the OCI bucket where backup is stored"
prefix:
type: string
description: "Path in bucket where backup is stored"
credentials:
type: string
description: "Name of a Secret with data for accessing the bucket"
s3:
type: object
required: ["bucketName", "config"]
properties:
bucketName:
type: string
description: "Name of the S3 bucket where the dump is stored"
prefix:
type: string
description: "Path in the bucket where the dump files are stored"
config:
type: string
description: "Name of a Secret with S3 configuration and credentials"
profile:
type: string
default: ""
description: "Profile being used in configuration files"
endpoint:
type: string
description: "Override endpoint URL"
azure:
type: object
required: ["containerName", "config"]
properties:
containerName:
type: string
description: "Name of the Azure BLOB Storage container where the dump is stored"
prefix:
type: string
description: "Path in the container where the dump files are stored"
config:
type: string
description: "Name of a Secret with Azure BLOB Storage configuration and credentials"
persistentVolumeClaim:
type: object
description : "Specification of the PVC to be used. Used 'as is' in pod executing the backup."
x-kubernetes-preserve-unknown-fields: true
x-kubernetes-preserve-unknown-fields: true
meb:
type: object
description: "MySQL Enterprise Backup"
required: ["storage"]
properties:
storage:
type: object
description: "Configuration of storage for MySQL Enterprise Backup"
properties:
s3:
description: "S3 style storage"
type: object
required: ['region', 'bucket', 'objectKeyPrefix', 'credentials']
properties:
region:
type: string
description: "S3 Region"
bucket:
type: string
description: "S3 Bucket Name"
objectKeyPrefix:
type: string
description: "S3 Object Key Prefix, this will be extended with the name of the actual backup"
credentials:
type: string
description: "Name of a Secret holding iaccessKeyId and secretAccessKey properties"
host:
type: string
description: "Override hostname for S3-compatible backends"
oci:
type: object
description: "Store MySQL Enterprise Backup on OCI Object Storage"
required: ['bucketName', 'prefix', 'namespace', 'credentials']
properties:
bucketName:
type: string
description: "Name of the OCI bucket where backup is stored"
prefix:
type: string
description: "Path in bucket where backup is stored"
namespace:
type: string
description: "OCI Namespace of Object Store"
credentials:
type: string
description: "Name of a Secret with data for accessing the bucket"
extraOptions:
description: "Additonal Command Line Options being passed to MySQL Enterprise Backup"
type: array
items:
type: string
snapshot:
type: object
properties:
storage:
type: object
properties:
ociObjectStorage:
type: object
required: ["bucketName", "credentials"]
properties:
bucketName:
type: string
description: "Bucket name where backup is stored"
prefix:
type: string
description: "Path in bucket where backup is stored"
credentials:
type: string
description: "Name of a Secret with data for accessing the bucket"
s3:
type: object
required: ["bucketName", "config"]
properties:
bucketName:
type: string
description: "Name of the S3 bucket where the dump is stored"
prefix:
type: string
description: "Path in the bucket where the dump files are stored"
config:
type: string
description: "Name of a Secret with S3 configuration and credentials"
profile:
type: string
default: ""
description: "Profile being used in configuration files"
endpoint:
type: string
description: "Override endpoint URL"
azure:
type: object
required: ["containerName", "config"]
properties:
containerName:
type: string
description: "Name of the Azure BLOB Storage container where the dump is stored"
prefix:
type: string
description: "Path in the container where the dump files are stored"
config:
type: string
description: "Name of a Secret with Azure BLOB Storage configuration and credentials"
persistentVolumeClaim:
type: object
description : "Specification of the PVC to be used. Used 'as is' in pod executing the backup."
x-kubernetes-preserve-unknown-fields: true
x-kubernetes-preserve-unknown-fields: true
x-kubernetes-preserve-unknown-fields: true
backupSchedules:
type: array
description: "Schedules for periodically executed backups"
items:
type: object
required: ["name", "schedule"]
x-kubernetes-preserve-unknown-fields: true
properties:
name:
type: string
description: "Name of the backup schedule"
schedule:
type: string
description: "The schedule of the job, syntax as a cron expression"
backupProfileName:
type: string
description: "Name of the backupProfile to be used"
backupProfile:
type: object
description: "backupProfile specification if backupProfileName is not specified"
x-kubernetes-preserve-unknown-fields: true
properties:
podAnnotations:
type: object
x-kubernetes-preserve-unknown-fields: true
podLabels:
type: object
x-kubernetes-preserve-unknown-fields: true
dumpInstance:
type: object
properties:
dumpOptions:
type: object
description: "A dictionary of key-value pairs passed directly to MySQL Shell's DumpInstance()"
x-kubernetes-preserve-unknown-fields: true
storage:
type: object
properties:
ociObjectStorage:
type: object
required: ["bucketName", "credentials"]
properties:
bucketName:
type: string
description: "Name of the OCI Bucket where backup is stored"
prefix:
type: string
description: "Path in bucket where backup is stored"
credentials:
type: string
description: "Name of a Secret with data for accessing the bucket"
s3:
type: object
required: ["bucketName", "config"]
properties:
bucketName:
type: string
description: "Name of the S3 bucket where the dump is stored"
prefix:
type: string
description: "Path in the bucket where the dump files are stored"
config:
type: string
description: "Name of a Secret with S3 configuration and credentials"
profile:
type: string
default: ""
description: "Profile being used in configuration files"
endpoint:
type: string
description: "Override endpoint URL"
azure:
type: object
required: ["containerName", "config"]
properties:
containerName:
type: string
description: "Name of the Azure BLOB Storage container where the dump is stored"
prefix:
type: string
description: "Path in the container where the dump files are stored"
config:
type: string
description: "Name of a Secret with Azure BLOB Storage configuration and credentials"
persistentVolumeClaim:
type: object
description : "Specification of the PVC to be used. Used 'as is' in pod executing the backup."
x-kubernetes-preserve-unknown-fields: true
x-kubernetes-preserve-unknown-fields: true
meb:
type: object
description: "MySQL Enterprise Backup"
required: ["storage"]
properties:
storage:
type: object
description: "Configuration of storage for MySQL Enterprise Backup"
properties:
s3:
description: "S3 style storage"
type: object
required: ['region', 'bucket', 'objectKeyPrefix', 'credentials']
properties:
region:
type: string
description: "S3 Region"
bucket:
type: string
description: "S3 Bucket Name"
objectKeyPrefix:
type: string
description: "S3 Object Key Prefix, this will be extended with the name of the actual backup"
credentials:
type: string
description: "Name of a Secret holding iaccessKeyId and secretAccessKey properties"
host:
type: string
description: "Override hostname for S3-compatible backends"
oci:
type: object
description: "Store MySQL Enterprise Backup on OCI Object Storage"
required: ['bucketName', 'prefix', 'namespace', 'credentials']
properties:
bucketName:
type: string
description: "Name of the OCI bucket where backup is stored"
prefix:
type: string
description: "Path in bucket where backup is stored"
namespace:
type: string
description: "OCI Namespace of Object Store"
credentials:
type: string
description: "Name of a Secret with data for accessing the bucket"
extraOptions:
description: "Additonal Command Line Options being passed to MySQL Enterprise Backup"
type: array
items:
type: string
deleteBackupData:
type: boolean
default: false
description: "Whether to delete the backup data in case the MySQLBackup object created by the job is deleted"
enabled:
type: boolean
default: true
description: "Whether the schedule is enabled or not"
timeZone:
type: string
description: "Timezone for the backup schedule, example: 'America/New_York'"
logs:
type: object
properties:
general:
type: object
properties:
enabled:
type: boolean
default: false
description: "Whether general logging should be enabled"
collect:
type: boolean
default: false
description: "Whether general logging data should be collected. Implies that the logging should be enabled."
error:
type: object
properties:
collect:
type: boolean
default: false
description: "Whether error logging data should be collected. Implies that the logging should be enabled. If enabled the error log will be switched to JSON format output"
verbosity:
type: integer
default: 3
minimum: 1
maximum: 3
description: "Log error verbosity. For details, see the MySQL Server --log-error-verbosity documentation."
slowQuery:
type: object
properties:
enabled:
type: boolean
default: false
description: "Whether slow query logging should be enabled"
longQueryTime:
type: number
minimum: 0
default: 10
description: "Long query time threshold"
collect:
type: boolean
default: false
description: "Whether slow query logging data should be collected. Implies that the logging should be enabled."
collector:
type: object
oneOf:
- required: ["image", "fluentd"]
properties:
image:
type: string
description: "Name of an image, including registry and repository, to be used for the log collector sidecar. If provided it needs to be an image for the configured collector type."
containerName:
type: string
default: "logcollector"
description: "Name of the collector container sidecar"
env:
type: array
items:
type: object
description: "Environment variables to be passed to the image. Definition will be directly copied like podSpec fields are"
x-kubernetes-preserve-unknown-fields: true
fluentd:
type: object
description: "Properties of the fluentd log collector"
oneOf:
- required: ["sinks"]
properties:
generalLog:
type: object
properties:
tag:
type: string
default: ""
description: "Tag for the general log records"
options:
type: object
description: "fluentd specific options for the general log"
x-kubernetes-preserve-unknown-fields: true
errorLog:
type: object
properties:
tag:
type: string
default: ""
description: "Tag for the error log records"
options:
type: object
description: "fluentd specific options for the error log"
x-kubernetes-preserve-unknown-fields: true
slowQueryLog:
type: object
properties:
tag:
type: string
default: ""
description: "Tag for the slow log records"
options:
type: object
description: "fluentd specific options for the slow log"
x-kubernetes-preserve-unknown-fields: true
recordAugmentation:
type: object
properties:
enabled:
type: boolean
default: false
description: "Whether to enable record augmentation with additional data"
labels:
type: array
items:
type: object
required: ["fieldName", "labelName"]
properties:
fieldName:
type: string
description: "Name of the field added to the log record with value from labelName"
labelName:
type: string
description: "Name of the pod label that holds the value to be stored under fieldName in the log record"
annotations:
type: array
items:
type: object
required: ["fieldName", "annotationName"]
properties:
fieldName:
type: string
description: "Name of the field added to the log record with value from annotationName"
annotationName:
type: string
description: "Name of the pod label that holds the value to be stored under fieldName in the log record"
staticFields:
type: array
items:
type: object
required: ["fieldName", "fieldValue"]
properties:
fieldName:
type: string
description: "Name of the field added to the log record with value from fieldValue"
fieldValue:
type: string
description: "Value for the static field with name taken from fieldName"
podFields:
type: array
items:
type: object
required: ["fieldName", "fieldPath"]
properties:
fieldName:
type: string
description: "Name of the field added to the log record with value taken from a field with path stored in fieldPath"
fieldPath:
type: string
description: "Value for the field fieldName. The path should be of the same syntax as the one used for mounting environment variables from field reference - valueFrom.fieldRef.fieldPath . The field will be mounted in the pod as a environment variable, prefixed with a prefix and used then added to the log record. Examples for fieldRef are : spec.nodeName, metadata.namespace, status.podIP, etc."
resourceFields:
type: array
items:
type: object
required: ["fieldName", "containerName", "resource"]
properties:
fieldName:
type: string
description: "Name of the field added to the log record with value taken from a field with path stored in fieldPath"
containerName:
type: string
resource:
type: string
description: "See https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/#use-container-fields-as-values-for-environment-variables"
additionalFilterConfiguration:
type: string
description: "Raw configuration of additional Fluentd filters to be added to the configuration file"
sinks:
type: array
items:
type: object
required: ["name", "rawConfig"]
x-kubernetes-preserve-unknown-fields: true
properties:
name:
type: string
description: "Name of the sink. Used only for documentation purposes"
rawConfig:
type: "string"
description: "Raw configuration of the sink"
readReplicas:
type: array
items:
type: object
required: ["name", "baseServerId"]
properties:
name:
type: string
version:
type: string
pattern: '^\d+\.\d+\.\d+(-.+)?'
description: "MySQL Server version"
baseServerId:
type: integer
minimum: 0
maximum: 4294967195
default: 0
description: "Base value for MySQL server_id for instances of the readReplica, if 0 it will be assigned automatically"
datadirVolumeClaimTemplate:
type: object
x-kubernetes-preserve-unknown-fields: true
description: "Template for a PersistentVolumeClaim, to be used as datadir"
mycnf:
type: string
description: "Custom configuration additions for my.cnf"
instances:
type: integer
minimum: 1
maximum: 999
default: 1
description: "Number of MySQL instances for the set of read replica"
podSpec:
type: object
x-kubernetes-preserve-unknown-fields: true
podAnnotations:
type: object
x-kubernetes-preserve-unknown-fields: true
podLabels:
type: object
x-kubernetes-preserve-unknown-fields: true
serviceFqdnTemplate:
type: string
description: "Template for a FQDN resolving to the cluster's headless instance Service and individual Pods"
#default: "{service}.{namespace}.svc.{domain}" - We can't set the default as that would override the environment value from the operator
status:
type: object
x-kubernetes-preserve-unknown-fields: true
subresources:
status: {}
additionalPrinterColumns:
- name: Status
type: string
description: Status of the InnoDB Cluster
jsonPath: .status.cluster.status
- name: Online
type: integer
description: Number of ONLINE InnoDB Cluster instances
jsonPath: .status.cluster.onlineInstances
- name: Instances
type: integer
description: Number of InnoDB Cluster instances configured
jsonPath: .spec.instances
- name: Routers
type: integer
description: Number of Router instances configured for the InnoDB Cluster
jsonPath: .spec.router.instances
- name: Type
type: string
description: Type of the cluster in a ClusterSet (PRIMARY, REPLICA, UNKNOWN)
jsonPath: .status.cluster.type
- name: Age
type: date
jsonPath: .metadata.creationTimestamp
scope: Namespaced
names:
kind: InnoDBCluster
listKind: InnoDBClusterList
singular: innodbcluster
plural: innodbclusters
shortNames:
- ic
- ics
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: mysqlbackups.mysql.oracle.com
spec:
group: mysql.oracle.com
scope: Namespaced
names:
kind: MySQLBackup
listKind: MySQLBackupList
singular: mysqlbackup
plural: mysqlbackups
shortNames:
- mbk
versions:
- name: v2
served: true
storage: true
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
required: ["clusterName"]
properties:
clusterName:
type: string
backupProfileName:
type: string
backupProfile:
type: object
description: "backupProfile specification if backupProfileName is not specified"
x-kubernetes-preserve-unknown-fields: true
properties:
podAnnotations:
type: object
x-kubernetes-preserve-unknown-fields: true
podLabels:
type: object
x-kubernetes-preserve-unknown-fields: true
dumpInstance:
type: object
properties:
dumpOptions:
type: object
description: "A dictionary of key-value pairs passed directly to MySQL Shell's DumpInstance()"
x-kubernetes-preserve-unknown-fields: true
storage:
type: object
properties:
ociObjectStorage:
type: object
required: ["bucketName", "credentials"]
properties:
bucketName:
type: string
description: "Name of the OCI bucket where backup is stored"
prefix:
type: string
description: "Path in bucket where backup is stored"
credentials:
type: string
description: "Name of a Secret with data for accessing the bucket"
s3:
type: object
required: ["bucketName", "config"]
properties:
bucketName:
type: string
description: "Name of the S3 bucket where the dump is stored"
prefix:
type: string
description: "Path in the bucket where the dump files are stored"
config:
type: string
description: "Name of a Secret with S3 configuration and credentials"
profile:
type: string
default: ""
description: "Profile being used in configuration files"
endpoint:
type: string
description: "Override endpoint URL"
azure:
type: object
required: ["containerName", "config"]
properties:
containerName:
type: string
description: "Name of the Azure BLOB Storage container where the dump is stored"
prefix:
type: string
description: "Path in the container where the dump files are stored"
config:
type: string
description: "Name of a Secret with Azure BLOB Storage configuration and credentials"
persistentVolumeClaim:
type: object
description : "Specification of the PVC to be used. Used 'as is' in pod executing the backup."
x-kubernetes-preserve-unknown-fields: true
x-kubernetes-preserve-unknown-fields: true
meb:
type: object
description: "MySQL Enterprise Backup"
required: ["storage"]
properties:
storage:
type: object
description: "Configuration of storage for MySQL Enterprise Backup"
properties:
s3:
description: "S3 style storage"
type: object
required: ['region', 'bucket', 'objectKeyPrefix', 'credentials']
properties:
region:
type: string
description: "S3 Region"
bucket:
type: string
description: "S3 Bucket Name"
objectKeyPrefix:
type: string
description: "S3 Object Key Prefix, this will be extended with the name of the actual backup"
credentials:
type: string
description: "Name of a Secret holding iaccessKeyId and secretAccessKey properties"
host:
type: string
description: "Override hostname for S3-compatible backends"
oci:
type: object
description: "Store MySQL Enterprise Backup on OCI Object Storage"
required: ['bucketName', 'prefix', 'namespace', 'credentials']
properties:
bucketName:
type: string
description: "Name of the OCI bucket where backup is stored"
prefix:
type: string
description: "Path in bucket where backup is stored"
namespace:
type: string
description: "OCI Namespace of Object Store"
credentials:
type: string
description: "Name of a Secret with data for accessing the bucket"
extraOptions:
description: "Additonal Command Line Options being passed to MySQL Enterprise Backup"
type: array
items:
type: string
incremental:
type: boolean
default: false
description: "MySQL Enterprise Backup only: Request taking an incremental backup"
incrementalBase:
type: string
description: "MySQL Enterprise Backup only: Base for incremental backup, either last_backup or last_full_backup"
enum: ["last_backup", "last_full_backup"]
default: "last_backup"
addTimestampToBackupDirectory:
type: boolean
default: true
deleteBackupData:
type: boolean
default: false
status:
type: object
properties:
status:
type: string
startTime:
type: string
completionTime:
type: string
elapsedTime:
type: string
output:
type: string
method:
type: string
source:
type: string
bucket:
type: string
ociTenancy:
type: string
container:
type: string
spaceAvailable:
type: string
size:
type: string
message:
type: string
subresources:
status: {}
additionalPrinterColumns:
- name: Cluster
type: string
description: Name of the target cluster
jsonPath: .spec.clusterName
- name: Status
type: string
description: Status of the Backup
jsonPath: .status.status
- name: Output
type: string
description: Name of the produced file/directory
jsonPath: .status.output
- name: Age
type: date
jsonPath: .metadata.creationTimestamp
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: clusterkopfpeerings.zalando.org
spec:
scope: Cluster
group: zalando.org
names:
kind: ClusterKopfPeering
plural: clusterkopfpeerings
singular: clusterkopfpeering
versions:
- name: v1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
properties:
status:
type: object
x-kubernetes-preserve-unknown-fields: true
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: kopfpeerings.zalando.org
spec:
scope: Namespaced
group: zalando.org
names:
kind: KopfPeering
plural: kopfpeerings
singular: kopfpeering
versions:
- name: v1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
properties:
status:
type: object
x-kubernetes-preserve-unknown-fields: true