delete bitpoke mysql because it's bad
This commit is contained in:
@@ -1,21 +0,0 @@
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
@@ -1,5 +0,0 @@
|
||||
apiVersion: v1
|
||||
appVersion: "1.0"
|
||||
description: A Helm chart for easy deployment of a MySQL cluster with MySQL operator.
|
||||
name: mysql-cluster
|
||||
version: 0.3.1
|
||||
@@ -1,59 +0,0 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "mysql-cluster.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "mysql-cluster.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "mysql-cluster.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "mysql-cluster.dbConnectURL" -}}
|
||||
mysql://
|
||||
{{- if .Values.appUser -}}
|
||||
{{ urlquery .Values.appUser -}}
|
||||
{{- if .Values.appPassword -}}
|
||||
:{{ urlquery .Values.appPassword }}
|
||||
{{- end -}}
|
||||
@
|
||||
{{- end -}}
|
||||
{{- include "mysql-cluster.clusterName" . -}}-mysql-master:3306
|
||||
{{- if .Values.appDatabase -}}
|
||||
/{{- .Values.appDatabase -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "mysql-cluster.clusterName" -}}
|
||||
{{- printf "%s-db" (include "mysql-cluster.fullname" .) | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "mysql-cluster.secretName" -}}
|
||||
{{- printf "%s-db" (include "mysql-cluster.fullname" .) | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "mysql-cluster.backupSecretName" -}}
|
||||
{{- printf "%s-db-backup" (include "mysql-cluster.fullname" .) | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
@@ -1,23 +0,0 @@
|
||||
{{- if .Values.backupCredentials }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ template "mysql-cluster.backupSecretName" . }}
|
||||
labels:
|
||||
app: {{ template "mysql-cluster.name" . }}
|
||||
chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{- if .Values.backupSecretLabels }}
|
||||
{{- toYaml .Values.backupSecretLabels | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.backupSecretAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.backupSecretAnnotations }}
|
||||
{{- end }}
|
||||
type: Opaque
|
||||
data:
|
||||
{{- range $key, $value := .Values.backupCredentials }}
|
||||
{{ $key | upper }}: {{ $value | b64enc | quote }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
@@ -1,78 +0,0 @@
|
||||
apiVersion: mysql.presslabs.org/v1alpha1
|
||||
kind: MysqlCluster
|
||||
metadata:
|
||||
name: {{ include "mysql-cluster.clusterName" . }}
|
||||
labels:
|
||||
app: {{ template "mysql-cluster.name" . }}
|
||||
chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicas }}
|
||||
|
||||
{{- if .Values.customSecretName }}
|
||||
secretName: {{ .Values.customSecretName }}
|
||||
{{- else }}
|
||||
secretName: {{ include "mysql-cluster.secretName" . }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.image }}
|
||||
image: {{ .Values.image }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.mysqlVersion }}
|
||||
mysqlVersion: {{ .Values.mysqlVersion | quote }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.initBucketURL }}
|
||||
initBucketURL: {{ .Values.initBucketURL }}
|
||||
{{- end }}
|
||||
{{- if .Values.initBucketSecretName }}
|
||||
initBucketSecretName: {{ .Values.initBucketSecretName }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.backupSecretName }}
|
||||
backupSecretName: {{ .Values.backupSecretName }}
|
||||
{{- else if .Values.backupCredentials }}
|
||||
backupSecretName: {{ include "mysql-cluster.backupSecretName" . }}
|
||||
{{- else if .Values.backupSchedule }}
|
||||
{{ required "One of .mysql.backupSecretName and .mysql.backupCredentials should be specified" "" }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.serverIDOffset }}
|
||||
serverIDOffset: {{ .Values.serverIDOffset }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.backupSchedule }}
|
||||
backupSchedule: "{{ .Values.backupSchedule }}"
|
||||
backupRemoteDeletePolicy: {{ .Values.backupRemoteDeletePolicy }}
|
||||
backupURL: {{ required ".mysql.backupURL is missing" .Values.backupURL }}
|
||||
{{- end }}
|
||||
{{- if .Values.backupScheduleJobsHistoryLimit }}
|
||||
backupScheduleJobsHistoryLimit: {{ .Values.backupScheduleJobsHistoryLimit }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.mysqlConf }}
|
||||
mysqlConf:
|
||||
{{- toYaml .Values.mysqlConf | nindent 4 }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.podSpec }}
|
||||
podSpec:
|
||||
{{- toYaml .Values.podSpec | nindent 4 }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.volumeSpec }}
|
||||
volumeSpec:
|
||||
{{- toYaml .Values.volumeSpec | nindent 4 }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.initFileExtraSQL }}
|
||||
initFileExtraSQL:
|
||||
{{- toYaml .Values.initFileExtraSQL | nindent 6 }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.queryLimits }}
|
||||
queryLimits:
|
||||
{{ toYaml .Values.queryLimits | indent 4 }}
|
||||
{{- end }}
|
||||
@@ -1,9 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: mysql-minio-secret
|
||||
namespace: mysql-cluster
|
||||
type: Opaque
|
||||
data:
|
||||
AWS_ACCESS_KEY_ID: cmp0UEZScDUyRGdtV2I0a2RzeWlGS2p0Qk14WVNhb3c=
|
||||
AWS_SECRET_ACCESS_KEY: a2FiU0s4UlhjT05qTzhJN0dOZkowM1dNdWVKN2ZrNno=
|
||||
@@ -1,25 +0,0 @@
|
||||
{{- if not .Values.customSecretName }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ include "mysql-cluster.secretName" . }}
|
||||
labels:
|
||||
app: {{ template "mysql-cluster.name" . }}
|
||||
chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{- if .Values.appSecretLabels }}
|
||||
{{- toYaml .Values.appSecretLabels | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.appSecretAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.appSecretAnnotations }}
|
||||
{{- end }}
|
||||
type: Opaque
|
||||
data:
|
||||
ROOT_PASSWORD: {{ required ".rootPassword is missing" .Values.rootPassword | b64enc | quote }}
|
||||
USER: {{ .Values.appUser | b64enc | quote }}
|
||||
PASSWORD: {{ .Values.appPassword | b64enc | quote }}
|
||||
DATABASE: {{ .Values.appDatabase | b64enc | quote }}
|
||||
DB_CONNECT_URL: {{ include "mysql-cluster.dbConnectURL" . | b64enc | quote }}
|
||||
{{- end }}
|
||||
@@ -1,78 +0,0 @@
|
||||
# Default values for mysql-cluster.
|
||||
# This is a YAML-formatted file.
|
||||
# Declare variables to be passed into your templates.
|
||||
|
||||
## The cluster number of nodes
|
||||
replicas: 3
|
||||
|
||||
## For setting custom docker image or specifying mysql version
|
||||
## the image field has priority over mysqlVersion.
|
||||
# image: percona:5.7
|
||||
# mysqlVersion: "5.7"
|
||||
|
||||
## MySQL connect credentials, those credentials will be provisioned in the cluster
|
||||
rootPassword: "4JBaDbEN70GDI2dgVTzYvPngguVmAaLG"
|
||||
appUser: "app"
|
||||
appPassword: "eSJYUglRfXtAkyEKDCYARTzc971DSp8N"
|
||||
appDatabase: "appdb"
|
||||
# appSecretLabels: {}
|
||||
# appSecretAnnotations: {}
|
||||
|
||||
podSpec:
|
||||
nodeSelector:
|
||||
kubernetes.io/arch: amd64
|
||||
mysqlConf:
|
||||
volumeSpec:
|
||||
|
||||
serverIDOffset:
|
||||
|
||||
initBucketURL: "s3://mysql-ha"
|
||||
initBucketSecretName: "mysql-minio-secret"
|
||||
|
||||
backupSchedule:
|
||||
backupScheduleJobsHistoryLimit:
|
||||
backupURL:
|
||||
backupSecretName:
|
||||
backupRemoteDeletePolicy:
|
||||
# backupSecretLabels: {}
|
||||
# backupSecretAnnotations: {}
|
||||
backupCredentials:
|
||||
# use s3 https://rclone.org/s3/
|
||||
S3_PROVIDER: Minio # like: AWS, Minio, Ceph, and so on
|
||||
S3_ENDPOINT: https://s3.minio.panic.haus/mysql-ha
|
||||
AWS_ACCESS_KEY_ID: rjtPFRp52DgmWb4kdsyiFKjtBMxYSaow
|
||||
AWS_SECRET_ACCESS_KEY: kabSK8RXcONjO8I7GNfJ03WMueJ7fk6z
|
||||
AWS_REGION: cluster-panic-haus
|
||||
AWS_ACL: private
|
||||
# AWS_STORAGE_CLASS: ?
|
||||
# AWS_SESSION_TOKEN: ?
|
||||
|
||||
# use google cloud storage https://rclone.org/googlecloudstorage/
|
||||
# GCS_SERVICE_ACCOUNT_JSON_KEY: ?
|
||||
# GCS_PROJECT_ID: ?
|
||||
# GCS_OBJECT_ACL: ?
|
||||
# GCS_BUCKET_ACL: ?
|
||||
# GCS_LOCATION: ?
|
||||
# GCS_STORAGE_CLASS: MULTI_REGIONAL
|
||||
|
||||
# use http https://rclone.org/http/
|
||||
# HTTP_URL: ?
|
||||
|
||||
# use google drive https://rclone.org/drive/
|
||||
# GDRIVE_CLIENT_ID: ?
|
||||
# GDRIVE_ROOT_FOLDER_ID: ?
|
||||
# GDRIVE_IMPERSONATOR: ?
|
||||
|
||||
# use azure https://rclone.org/azureblob/
|
||||
# AZUREBLOB_ACCOUNT: ?
|
||||
# AZUREBLOB_KEY: ?
|
||||
|
||||
## For enabling and configuring pt-kill: https://www.percona.com/doc/percona-toolkit/LATEST/pt-kill.html
|
||||
#queryLimits:
|
||||
# maxIdleTime: ... # pt-kill --idle-time
|
||||
# maxQueryTime: ... # pt-kill --busy-time
|
||||
# kill: oldest|all|all-but-oldest # pt-kill --victims
|
||||
# killMode: query|connection # pt-kill --kill-query or pt-kill --kill
|
||||
# ignoreDb: [] # pt-kill --ignore-db ...
|
||||
# ignoreCommand: [] # pt-kill --ignore-command ...
|
||||
# ignoreUser: [] # pt-kill --ignore-user
|
||||
@@ -1,21 +0,0 @@
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
@@ -1,50 +0,0 @@
|
||||
annotations:
|
||||
artifacthub.io/crds: |
|
||||
- kind: MySQLCluster
|
||||
version: v1alpha1
|
||||
name: mysqlclusters.mysql.presslabs.org
|
||||
displayName: MySQLCluster
|
||||
description: Represents a MySQL cluster managed by Bitpoke's Operator for MySQL.
|
||||
artifacthub.io/crdsExamples: |
|
||||
- apiVersion: v1alpha1
|
||||
kind: MysqlCluster
|
||||
metadata:
|
||||
name: my-cluster
|
||||
spec:
|
||||
replicas: 3
|
||||
secretName: my-secret
|
||||
mysqlConf:
|
||||
innodb-buffer-size: 128M
|
||||
targetSLO:
|
||||
maxSlaveLatency: 10s
|
||||
artifacthub.io/images: |
|
||||
- name: mysql-operator
|
||||
image: docker.io/bitpoke/mysql-operator:v0.6.3
|
||||
whitelisted: true
|
||||
- name: orchestrator
|
||||
image: docker.io/bitpoke/mysql-operator-orchestrator:v0.6.3
|
||||
whitelisted: true
|
||||
- name: mysql-5.7-sidecar
|
||||
image: docker.io/bitpoke/mysql-operator-sidecar-5.7:v0.6.3
|
||||
whitelisted: true
|
||||
- name: mysql-8.0-sidecar
|
||||
image: docker.io/bitpoke/mysql-operator-sidecar-8.0:v0.6.3
|
||||
whitelisted: true
|
||||
artifacthub.io/license: Apache-2.0
|
||||
artifacthub.io/operator: "true"
|
||||
artifacthub.io/operatorCapabilities: full lifecycle
|
||||
apiVersion: v2
|
||||
appVersion: v0.6.3
|
||||
description: A helm chart for Bitpoke Operator for MySQL
|
||||
home: https://www.bitpoke.io/mysql-operator/
|
||||
keywords:
|
||||
- mysql
|
||||
- percona
|
||||
- orchestrator
|
||||
- bitpoke
|
||||
- database
|
||||
kubeVersion: '>= 1.19.0-0'
|
||||
name: mysql-operator
|
||||
sources:
|
||||
- https://github.com/bitpoke/mysql-operator.git
|
||||
version: 0.6.3
|
||||
@@ -1,58 +0,0 @@
|
||||
# Bitpoke MySQL Operator
|
||||
|
||||
This is the helm chart for [mysql-operator](https://github.com/bitpoke/mysql-operator).
|
||||
|
||||
## TL;DR
|
||||
|
||||
```sh
|
||||
## For Helm v3
|
||||
helm repo add bitpoke https://helm-charts.bitpoke.io
|
||||
helm install mysql-operator bitpoke/mysql-operator
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The following table contains the configuration parameters for mysql-operator and default values.
|
||||
|
||||
| Parameter | Description | Default value |
|
||||
| --- | --- | --- |
|
||||
| `replicaCount` | Replicas for controller | `1` |
|
||||
| `image.repository` | Docker repository for MySQL operator controller | `docker.io/bitpoke/mysql-operator` |
|
||||
| `image.tag` | Docker image tag for MySQL operator controller | `latest` |
|
||||
| `image.pullPolicy` | Docker image pull policy for MySQL operator controller | `IfNotPresent` |
|
||||
| `sidecar57.image.repository` | Docker repository for sidecar image for MySQL 5.7 | `docker.io/bitpoke/mysql-operator-sidecar-5.7` |
|
||||
| `sidecar57.image.tag` | Docker image tag for sidecar image for MySQL 5.7 | `latest` |
|
||||
| `sidecar80.image.repository` | Docker repository for sidecar image for MySQL 8.0 | `docker.io/bitpoke/mysql-operator-sidecar-8.0` |
|
||||
| `sidecar80.image.tag` | Docker image tag for sidecar image for MySQL 8.0 | `latest` |
|
||||
| `metricsExporter.image.repository` | Docker repository for MySQL metrics exporter | `docker.io/prom/mysqld-exporter` |
|
||||
| `metricsExporter.image.tag` | Docker image tag for MySQL metrics exporter | `v0.13.0` |
|
||||
| `imagePullSecrets` | Controller image pull secrets | `[]` |
|
||||
| `extraEnv` | MySQL Operator controller extra environment variables | `[]` |
|
||||
| `extraArgs` | MySQL Operator controller extra command line arguments | `[]` |
|
||||
| `resources` | MySQL Operator controller resources limits and requests | `{}` |
|
||||
| `rbac.create` | Specifies whether RBAC objects like `Role` and `RoleBinding` should be created | `true` |
|
||||
| `serviceAccount.create` | Specifies whether a service account should be created | `true` |
|
||||
| `serviceAccount.annotations` | Annotations to add to the service account | `{}` |
|
||||
| `serviceAccount.name` | The name of the service account to use. If not set and create is true, a name is generated using the fullname template. | `empty` |
|
||||
| `podAnnotations` | Extra pod annotations | `{}` |
|
||||
| `podSecurityContext` | The pod security context. `65532` is the UID/GID for the nonroot user in the official images | `{runAsNonRoot: true, runAsUser: 65532, runAsGroup: 65532, fsGroup: 65532}` |
|
||||
| `securityContext` | Security context for the MySQL Operator container | `{}` |
|
||||
| `podDisruptionBudget.enabled` | Specifies whether a PodDisruptionBudget for the MySQL operator StatefulSet should be created. <br /> _NOTE_ it only takes effect if `replicaCount` is greated than 1. | `true` |
|
||||
| `podDisruptionBudget.minAvailable` | ref: <https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget> | `empty` |
|
||||
| `podDisruptionBudget.maxUnavailable` | ref: <https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget> | `1` |
|
||||
| `nodeSelector` | MySQL Operator pod nodeSelector | `{}` |
|
||||
| `tolerations` | MySQL Operator pod tolerations | `[]` |
|
||||
| `affinity` | MySQL Operator pod affinity | `{}` |
|
||||
| `gracefulShutdown.enabled` | Insert a pre-stop lifecycle hook and trigger a failover when a MySQL pod is stopped | `true` |
|
||||
| `watchNamespace` | The namespace where the operator to watch for resources. Leave empty to watch all namespaces. | `empty` |
|
||||
| `orchestrator.image.repository` | Docker repository for [orchestrator](https://github.com/openark/orchestrator) | `docker.io/bitpoke/mysql-operator-orchestrator` |
|
||||
| `orchestrator.image.tag` | Docker image tag for [orchestrator](https://github.com/openark/orchestrator) | `latest` |
|
||||
| `orchestrator.image.pullPolicy` | Docker image pull policy for [orchestrator](https://github.com/openark/orchestrator) | `IfNotPresent` |
|
||||
| `orchestrator.topologyUser` | Set a user for orchestrator to use it to connect to the MySQL cluster | `orchestrator` |
|
||||
| `orchestrator.topologyPassword` | Set a password for the orchestrator user to connect to MySQL cluster | `<random string>` |
|
||||
| `orchestrator.persistence.enabled` | Specifies whether to enable the persistence for Orchestrator pods | `true` |
|
||||
| `orchestrator.persistence.*` | Check `values.yaml` | |
|
||||
| `orchestrator.ingress.enabled` | Specifies whether to enable the ingress for Orchestrator | `false` |
|
||||
| `orchestrator.ingress.*` | Check `values.yaml` | |
|
||||
| `orchestrator.service.*` | Orchestrator `Service` definition. Check `values.yaml` | |
|
||||
| `orchestrator.persistence.fsGroupWorkaroundEnabled` | Adds a workaround for persistent volume provisioners which don't support fsGroup (eg. when deploying to kind) [#615](https://github.com/bitpoke/mysql-operator/issues/615) | `false` |
|
||||
@@ -1,88 +0,0 @@
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.7.0
|
||||
name: mysqlbackups.mysql.presslabs.org
|
||||
labels:
|
||||
app.kubernetes.io/name: mysql-operator
|
||||
spec:
|
||||
group: mysql.presslabs.org
|
||||
names:
|
||||
kind: MysqlBackup
|
||||
listKind: MysqlBackupList
|
||||
plural: mysqlbackups
|
||||
singular: mysqlbackup
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: MysqlBackup is the Schema for the mysqlbackups API
|
||||
properties:
|
||||
apiVersion:
|
||||
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||
type: string
|
||||
kind:
|
||||
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
description: MysqlBackupSpec defines the desired state of MysqlBackup
|
||||
properties:
|
||||
backupSecretName:
|
||||
description: BackupSecretName the name of secrets that contains the credentials to access the bucket. Default is used the secret specified in cluster.
|
||||
type: string
|
||||
backupURL:
|
||||
description: BackupURL represents the URL to the backup location, this can be partially specifyied. Default is used the one specified in the cluster.
|
||||
type: string
|
||||
clusterName:
|
||||
description: ClustterName represents the cluster for which to take backup
|
||||
type: string
|
||||
remoteDeletePolicy:
|
||||
description: RemoteDeletePolicy the deletion policy that specify how to treat the data from remote storage. By default it's used softDelete.
|
||||
type: string
|
||||
required:
|
||||
- clusterName
|
||||
type: object
|
||||
status:
|
||||
description: MysqlBackupStatus defines the observed state of MysqlBackup
|
||||
properties:
|
||||
completed:
|
||||
description: Completed indicates whether the backup is in a final state, no matter whether its' corresponding job failed or succeeded
|
||||
type: boolean
|
||||
conditions:
|
||||
description: Conditions represents the backup resource conditions list.
|
||||
items:
|
||||
description: BackupCondition defines condition struct for backup resource
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: LastTransitionTime
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: Message
|
||||
type: string
|
||||
reason:
|
||||
description: Reason
|
||||
type: string
|
||||
status:
|
||||
description: Status of the condition, one of (\"True\", \"False\", \"Unknown\")
|
||||
type: string
|
||||
type:
|
||||
description: type of cluster condition, values in (\"Ready\")
|
||||
type: string
|
||||
required:
|
||||
- lastTransitionTime
|
||||
- message
|
||||
- reason
|
||||
- status
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
preserveUnknownFields: false
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,113 +0,0 @@
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.7.0
|
||||
name: mysqldatabases.mysql.presslabs.org
|
||||
labels:
|
||||
app.kubernetes.io/name: mysql-operator
|
||||
spec:
|
||||
group: mysql.presslabs.org
|
||||
names:
|
||||
kind: MysqlDatabase
|
||||
listKind: MysqlDatabaseList
|
||||
plural: mysqldatabases
|
||||
singular: mysqldatabase
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- description: The database status
|
||||
jsonPath: .status.conditions[?(@.type == 'Ready')].status
|
||||
name: Ready
|
||||
type: string
|
||||
- jsonPath: .spec.clusterRef.name
|
||||
name: Cluster
|
||||
type: string
|
||||
- jsonPath: .spec.database
|
||||
name: Database
|
||||
type: string
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: Age
|
||||
type: date
|
||||
name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: MysqlDatabase is the Schema for the MySQL database API
|
||||
properties:
|
||||
apiVersion:
|
||||
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||
type: string
|
||||
kind:
|
||||
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
description: MysqlDatabaseSpec defines the desired state of MysqlDatabaseSpec
|
||||
properties:
|
||||
characterSet:
|
||||
description: CharacterSet represents the charset name used when database is created
|
||||
type: string
|
||||
clusterRef:
|
||||
description: ClusterRef represents a reference to the MySQL cluster. This field should be immutable.
|
||||
properties:
|
||||
name:
|
||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||
type: string
|
||||
namespace:
|
||||
description: Namespace the MySQL cluster namespace
|
||||
type: string
|
||||
type: object
|
||||
collation:
|
||||
description: Collation represents the collation name used as default database collation
|
||||
type: string
|
||||
database:
|
||||
description: Database represents the database name which will be created. This field should be immutable.
|
||||
type: string
|
||||
required:
|
||||
- clusterRef
|
||||
- database
|
||||
type: object
|
||||
status:
|
||||
description: MysqlDatabaseStatus defines the observed state of MysqlDatabase
|
||||
properties:
|
||||
conditions:
|
||||
description: Conditions represents the MysqlDatabase resource conditions list.
|
||||
items:
|
||||
description: MysqlDatabaseCondition defines the condition struct for a MysqlDatabase resource
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: Last time the condition transitioned from one status to another.
|
||||
format: date-time
|
||||
type: string
|
||||
lastUpdateTime:
|
||||
description: The last time this condition was updated.
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: A human readable message indicating details about the transition.
|
||||
type: string
|
||||
reason:
|
||||
description: The reason for the condition's last transition.
|
||||
type: string
|
||||
status:
|
||||
description: Status of the condition, one of True, False, Unknown.
|
||||
type: string
|
||||
type:
|
||||
description: Type of MysqlDatabase condition.
|
||||
type: string
|
||||
required:
|
||||
- lastTransitionTime
|
||||
- message
|
||||
- reason
|
||||
- status
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
||||
preserveUnknownFields: false
|
||||
@@ -1,167 +0,0 @@
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.7.0
|
||||
name: mysqlusers.mysql.presslabs.org
|
||||
labels:
|
||||
app.kubernetes.io/name: mysql-operator
|
||||
spec:
|
||||
group: mysql.presslabs.org
|
||||
names:
|
||||
kind: MysqlUser
|
||||
listKind: MysqlUserList
|
||||
plural: mysqlusers
|
||||
singular: mysqluser
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- description: The user status
|
||||
jsonPath: .status.conditions[?(@.type == 'Ready')].status
|
||||
name: Ready
|
||||
type: string
|
||||
- jsonPath: .spec.clusterRef.name
|
||||
name: Cluster
|
||||
type: string
|
||||
- jsonPath: .spec.user
|
||||
name: UserName
|
||||
type: string
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: Age
|
||||
type: date
|
||||
name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: MysqlUser is the Schema for the MySQL User API
|
||||
properties:
|
||||
apiVersion:
|
||||
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||
type: string
|
||||
kind:
|
||||
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
description: MysqlUserSpec defines the desired state of MysqlUserSpec
|
||||
properties:
|
||||
allowedHosts:
|
||||
description: AllowedHosts is the allowed host to connect from.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
clusterRef:
|
||||
description: ClusterRef represents a reference to the MySQL cluster. This field should be immutable.
|
||||
properties:
|
||||
name:
|
||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||
type: string
|
||||
namespace:
|
||||
description: Namespace the MySQL cluster namespace
|
||||
type: string
|
||||
type: object
|
||||
password:
|
||||
description: Password is the password for the user.
|
||||
properties:
|
||||
key:
|
||||
description: The key of the secret to select from. Must be a valid secret key.
|
||||
type: string
|
||||
name:
|
||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||
type: string
|
||||
optional:
|
||||
description: Specify whether the Secret or its key must be defined
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
permissions:
|
||||
description: Permissions is the list of roles that user has in the specified database.
|
||||
items:
|
||||
description: MysqlPermission defines a MySQL schema permission
|
||||
properties:
|
||||
permissions:
|
||||
description: Permissions represents the permissions granted on the schema/tables
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
schema:
|
||||
description: Schema represents the schema to which the permission applies
|
||||
type: string
|
||||
tables:
|
||||
description: Tables represents the tables inside the schema to which the permission applies
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- permissions
|
||||
- schema
|
||||
- tables
|
||||
type: object
|
||||
type: array
|
||||
resourceLimits:
|
||||
additionalProperties:
|
||||
anyOf:
|
||||
- type: integer
|
||||
- type: string
|
||||
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
||||
x-kubernetes-int-or-string: true
|
||||
description: 'ResourceLimits allow settings limit per mysql user as defined here: https://dev.mysql.com/doc/refman/5.7/en/user-resources.html'
|
||||
type: object
|
||||
user:
|
||||
description: User is the name of the user that will be created with will access the specified database. This field should be immutable.
|
||||
type: string
|
||||
required:
|
||||
- allowedHosts
|
||||
- clusterRef
|
||||
- password
|
||||
- user
|
||||
type: object
|
||||
status:
|
||||
description: MysqlUserStatus defines the observed state of MysqlUser
|
||||
properties:
|
||||
allowedHosts:
|
||||
description: AllowedHosts contains the list of hosts that the user is allowed to connect from.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
conditions:
|
||||
description: Conditions represents the MysqlUser resource conditions list.
|
||||
items:
|
||||
description: MySQLUserCondition defines the condition struct for a MysqlUser resource
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: Last time the condition transitioned from one status to another.
|
||||
format: date-time
|
||||
type: string
|
||||
lastUpdateTime:
|
||||
description: The last time this condition was updated.
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: A human readable message indicating details about the transition.
|
||||
type: string
|
||||
reason:
|
||||
description: The reason for the condition's last transition.
|
||||
type: string
|
||||
status:
|
||||
description: Status of the condition, one of True, False, Unknown.
|
||||
type: string
|
||||
type:
|
||||
description: Type of MysqlUser condition.
|
||||
type: string
|
||||
required:
|
||||
- lastTransitionTime
|
||||
- message
|
||||
- reason
|
||||
- status
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
||||
preserveUnknownFields: false
|
||||
@@ -1,19 +0,0 @@
|
||||
You can create a new cluster by issuing:
|
||||
|
||||
cat <<EOF | kubectl apply -f-
|
||||
apiVersion: mysql.presslabs.org/v1alpha1
|
||||
kind: MysqlCluster
|
||||
metadata:
|
||||
name: my-cluster
|
||||
spec:
|
||||
replicas: 1
|
||||
secretName: my-cluster-secret
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: my-cluster-secret
|
||||
type: Opaque
|
||||
data:
|
||||
ROOT_PASSWORD: $(echo -n "not-so-secure" | base64)
|
||||
EOF
|
||||
@@ -1,62 +0,0 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "mysql-operator.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "mysql-operator.fullname" -}}
|
||||
{{- if .Values.fullnameOverride }}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||
{{- if contains $name .Release.Name }}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "mysql-operator.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "mysql-operator.labels" -}}
|
||||
helm.sh/chart: {{ include "mysql-operator.chart" . }}
|
||||
{{ include "mysql-operator.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "mysql-operator.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "mysql-operator.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "mysql-operator.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
{{- default (include "mysql-operator.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else }}
|
||||
{{- default "default" .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,35 +0,0 @@
|
||||
{{- define "orchestrator.name" -}}
|
||||
{{- $name := include "mysql-operator.name" . | trunc 50 | trimSuffix "-" }}
|
||||
{{- printf "%s-orchestrator" $name }}
|
||||
{{- end }}
|
||||
|
||||
{{- define "orchestrator.fullname" -}}
|
||||
{{- $fullname := include "mysql-operator.fullname" . | trunc 59 | trimSuffix "-" }}
|
||||
{{- printf "%s-orc" $fullname }}
|
||||
{{- end }}
|
||||
|
||||
{{- define "orchestrator.raftList" -}}
|
||||
{{- $replicas := int .Values.replicaCount }}
|
||||
{{- $fullname := include "mysql-operator.fullname" . }}
|
||||
{{- $nodes := (dict) }}
|
||||
{{- range $i := until $replicas }}
|
||||
{{- $_ := set $nodes (printf "%d" $i) (printf "%s-%d-orc-svc" $fullname $i) }}
|
||||
{{- end }}
|
||||
{{- values $nodes | sortAlpha | join "," }}
|
||||
{{- end }}
|
||||
|
||||
{{- define "orchestrator.secretName" -}}
|
||||
{{- if .Values.orchestrator.secretName -}}
|
||||
{{ .Values.orchestrator.secretName }}
|
||||
{{- else -}}
|
||||
{{ include "orchestrator.fullname" . }}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
|
||||
{{- define "orchestrator.apiURL" -}}
|
||||
{{- $port := "" }}
|
||||
{{- if ne (printf "%d" .Values.orchestrator.service.port) "80" }}
|
||||
{{- $port := printf ":$d" .Values.orchestrator.service.port }}
|
||||
{{- end -}}
|
||||
http://{{ template "mysql-operator.fullname" . }}.{{ .Release.Namespace }}{{ $port }}/api
|
||||
{{- end }}
|
||||
@@ -1,142 +0,0 @@
|
||||
{{- if .Values.rbac.create }}
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: {{ include "mysql-operator.fullname" . }}
|
||||
labels:
|
||||
{{- include "mysql-operator.labels" . | nindent 4 }}
|
||||
rules:
|
||||
- apiGroups:
|
||||
- apps
|
||||
resources:
|
||||
- statefulsets
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- update
|
||||
- watch
|
||||
- apiGroups:
|
||||
- batch
|
||||
resources:
|
||||
- jobs
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- update
|
||||
- watch
|
||||
- apiGroups:
|
||||
- coordination.k8s.io
|
||||
resources:
|
||||
- leases
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- update
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- configmaps
|
||||
- events
|
||||
- jobs
|
||||
- persistentvolumeclaims
|
||||
- pods
|
||||
- secrets
|
||||
- services
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- update
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- pods/status
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- update
|
||||
- watch
|
||||
- apiGroups:
|
||||
- mysql.presslabs.org
|
||||
resources:
|
||||
- mysqlbackups
|
||||
- mysqlbackups/finalizers
|
||||
- mysqlbackups/status
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- update
|
||||
- watch
|
||||
- apiGroups:
|
||||
- mysql.presslabs.org
|
||||
resources:
|
||||
- mysqlclusters
|
||||
- mysqlclusters/finalizers
|
||||
- mysqlclusters/status
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- update
|
||||
- watch
|
||||
- apiGroups:
|
||||
- mysql.presslabs.org
|
||||
resources:
|
||||
- mysqldatabases
|
||||
- mysqldatabases/finalizers
|
||||
- mysqldatabases/status
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- update
|
||||
- watch
|
||||
- apiGroups:
|
||||
- mysql.presslabs.org
|
||||
resources:
|
||||
- mysqlusers
|
||||
- mysqlusers/status
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- update
|
||||
- watch
|
||||
- apiGroups:
|
||||
- policy
|
||||
resources:
|
||||
- poddisruptionbudgets
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
- get
|
||||
- list
|
||||
- patch
|
||||
- update
|
||||
- watch
|
||||
{{- end }}
|
||||
@@ -1,16 +0,0 @@
|
||||
{{- if .Values.rbac.create -}}
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: {{ include "mysql-operator.fullname" . }}
|
||||
labels:
|
||||
{{- include "mysql-operator.labels" . | nindent 4 }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: {{ template "mysql-operator.fullname" . }}
|
||||
subjects:
|
||||
- name: {{ template "mysql-operator.serviceAccountName" . }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
kind: ServiceAccount
|
||||
{{- end -}}
|
||||
@@ -1,47 +0,0 @@
|
||||
# This is a ServicMonitor for the MySQL Clusters.
|
||||
# To scrape the operator, we need https://github.com/bitpoke/mysql-operator/issues/151 first.
|
||||
{{- if .Values.mysqlClustersGlobalServiceMonitor.enabled }}
|
||||
{{- if .Capabilities.APIVersions.Has "monitoring.coreos.com/v1" }}
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: ServiceMonitor
|
||||
metadata:
|
||||
name: {{ template "mysql-operator.fullname" . }}-clusters
|
||||
labels:
|
||||
{{- include "mysql-operator.labels" . | nindent 4 }}
|
||||
{{- if .Values.mysqlClustersGlobalServiceMonitor.additionalLabels }}
|
||||
{{ toYaml .Values.mysqlClustersGlobalServiceMonitor.additionalLabels | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.mysqlClustersGlobalServiceMonitor.namespaceSelector }}
|
||||
namespaceSelector:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with .Values.mysqlClustersGlobalServiceMonitor.selector }}
|
||||
selector:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with .Values.mysqlClustersGlobalServiceMonitor.jobLabel }}
|
||||
jobLabel: {{ . | quote}}
|
||||
{{- end }}
|
||||
{{- with .Values.mysqlClustersGlobalServiceMonitor.targetLabels }}
|
||||
targetLabels:
|
||||
{{ toYaml . | trim | indent 4 -}}
|
||||
{{- end }}
|
||||
{{- with .Values.serviceMonitor.podTargetLabels }}
|
||||
podTargetLabels:
|
||||
{{ toYaml . | trim | indent 4 -}}
|
||||
{{- end }}
|
||||
endpoints:
|
||||
- path: /metrics
|
||||
port: {{ .Values.mysqlClustersGlobalServiceMonitor.servicePortName }}
|
||||
{{- if .Values.mysqlClustersGlobalServiceMonitor.interval }}
|
||||
interval: {{ .Values.mysqlClustersGlobalServiceMonitor.interval }}
|
||||
{{- end }}
|
||||
{{- if .Values.mysqlClustersGlobalServiceMonitor.scrapeTimeout }}
|
||||
scrapeTimeout: {{ .Values.mysqlClustersGlobalServiceMonitor.scrapeTimeout }}
|
||||
{{- end }}
|
||||
{{- if .Values.mysqlClustersGlobalServiceMonitor.metricRelabelings }}
|
||||
metricRelabelings: {{ toYaml .Values.mysqlClustersGlobalServiceMonitor.metricRelabelings | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,29 +0,0 @@
|
||||
{{- $replicas := int .Values.replicaCount }}
|
||||
{{- $raftNodes := include "orchestrator.raftList" . | splitList "," }}
|
||||
{{- $conf := .Values.orchestrator.config }}
|
||||
{{- $_ := set $conf "ListenAddress" ":3000" }}
|
||||
{{- $_ := set $conf "MySQLTopologyCredentialsConfigFile" "/etc/orchestrator/orc-topology.cnf" }}
|
||||
{{- $_ := set $conf "BackendDB" "sqlite" }}
|
||||
{{- $_ := set $conf "SQLite3DataFile" "/var/lib/orchestrator/orc.db" }}
|
||||
{{- $_ := set $conf "RaftEnabled" true }}
|
||||
{{- $_ := set $conf "RaftDataDir" "/var/lib/orchestrator" }}
|
||||
{{- $_ := set $conf "RaftAdvertise" "{{ .Env.HOSTNAME }}-orc-svc" }}
|
||||
{{- $_ := set $conf "RaftBind" "{{ .Env.HOSTNAME }}"}}
|
||||
{{- $_ := set $conf "HTTPAdvertise" "http://{{ .Env.HOSTNAME }}-orc-svc:80" }}
|
||||
{{- if eq 1 $replicas -}}
|
||||
{{- $_ := set $conf "RaftNodes" (list) }}
|
||||
{{- else -}}
|
||||
{{- $_ := set $conf "RaftNodes" $raftNodes }}
|
||||
{{- end -}}
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ template "orchestrator.fullname" . }}
|
||||
labels:
|
||||
{{- include "mysql-operator.labels" . | nindent 4 }}
|
||||
data:
|
||||
orchestrator.conf.json: {{ toPrettyJson $conf | quote }}
|
||||
orc-topology.cnf: |
|
||||
[client]
|
||||
user = {{ printf "{{ .Env.ORC_TOPOLOGY_USER }}" }}
|
||||
password = {{ printf "{{ .Env.ORC_TOPOLOGY_PASSWORD }}" }}
|
||||
@@ -1,61 +0,0 @@
|
||||
{{- if .Values.orchestrator.ingress.enabled -}}
|
||||
{{- $fullName := include "mysql-operator.fullname" . -}}
|
||||
{{- $svcPort := .Values.orchestrator.service.port -}}
|
||||
{{- if and .Values.orchestrator.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
||||
{{- if not (hasKey .Values.orchestrator.ingress.annotations "kubernetes.io/ingress.class") }}
|
||||
{{- $_ := set .Values.orchestrator.ingress.annotations "kubernetes.io/ingress.class" .Values.orchestrator.ingress.className}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
apiVersion: networking.k8s.io/v1
|
||||
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
apiVersion: networking.k8s.io/v1beta1
|
||||
{{- else -}}
|
||||
apiVersion: extensions/v1beta1
|
||||
{{- end }}
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ $fullName }}
|
||||
labels:
|
||||
{{- include "mysql-operator.labels" . | nindent 4 }}
|
||||
{{- with .Values.orchestrator.ingress.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if and .Values.orchestrator.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
|
||||
ingressClassName: {{ .Values.orchestrator.ingress.className }}
|
||||
{{- end }}
|
||||
{{- if .Values.orchestrator.ingress.tls }}
|
||||
tls:
|
||||
{{- range .Values.orchestrator.ingress.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
secretName: {{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range .Values.orchestrator.ingress.hosts }}
|
||||
- host: {{ .host | quote }}
|
||||
http:
|
||||
paths:
|
||||
{{- range .paths }}
|
||||
- path: {{ .path }}
|
||||
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
|
||||
pathType: {{ .pathType }}
|
||||
{{- end }}
|
||||
backend:
|
||||
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||
service:
|
||||
name: {{ $fullName }}
|
||||
port:
|
||||
number: {{ $svcPort }}
|
||||
{{- else }}
|
||||
serviceName: {{ $fullName }}
|
||||
servicePort: {{ $svcPort }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,25 +0,0 @@
|
||||
{{- $replicas := int .Values.replicaCount -}}
|
||||
{{- $labels := (include "mysql-operator.labels" .) -}}
|
||||
{{- $fullName := (include "mysql-operator.fullname" .) -}}
|
||||
{{- range $i := until $replicas -}}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ printf "%s-%d-orc-svc" $fullName $i }}
|
||||
labels:
|
||||
app.kubernetes.io/component: orchestrator-raft
|
||||
{{- $labels | nindent 4}}
|
||||
spec:
|
||||
type: ClusterIP
|
||||
publishNotReadyAddresses: true
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
targetPort: 3000
|
||||
- name: raft
|
||||
port: 10008
|
||||
targetPort: 10008
|
||||
selector:
|
||||
statefulset.kubernetes.io/pod-name: {{ printf "%s-%d" $fullName $i }}
|
||||
---
|
||||
{{end}}
|
||||
@@ -1,15 +0,0 @@
|
||||
{{- if not .Values.orchestrator.secretName }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ template "orchestrator.fullname" . }}
|
||||
labels:
|
||||
{{- include "mysql-operator.labels" . | nindent 4 }}
|
||||
data:
|
||||
TOPOLOGY_USER: {{ printf "%s" .Values.orchestrator.topologyUser | b64enc | quote }}
|
||||
{{- if .Values.orchestrator.topologyPassword }}
|
||||
TOPOLOGY_PASSWORD: {{ printf "%s" .Values.orchestrator.topologyPassword | b64enc | quote }}
|
||||
{{- else }}
|
||||
TOPOLOGY_PASSWORD: {{ randAlphaNum 10 | b64enc | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,18 +0,0 @@
|
||||
{{- if and .Values.podDisruptionBudget.enabled (gt (int64 .Values.replicaCount) 1) }}
|
||||
apiVersion: policy/v1
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: {{ include "mysql-operator.fullname" . }}
|
||||
labels:
|
||||
{{- include "mysql-operator.labels" . | nindent 4 }}
|
||||
spec:
|
||||
{{- if .Values.podDisruptionBudget.minAvailable }}
|
||||
minAvailable: {{ .Values.podDisruptionBudget.minAvailable }}
|
||||
{{- end }}
|
||||
{{- if .Values.podDisruptionBudget.maxUnavailable }}
|
||||
maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "mysql-operator.selectorLabels" . | nindent 6 }}
|
||||
{{- end }}
|
||||
@@ -1,23 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "mysql-operator.fullname" . }}
|
||||
labels:
|
||||
{{- include "mysql-operator.labels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: operator
|
||||
spec:
|
||||
type: {{ .Values.orchestrator.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.orchestrator.service.port }}
|
||||
name: http
|
||||
protocol: TCP
|
||||
targetPort: http
|
||||
{{- if .Values.orchestrator.service.nodePort }}
|
||||
nodePort: {{ .Values.orchestrator.service.nodePort }}
|
||||
{{- end }}
|
||||
- port: {{ .Values.serviceMonitor.servicePort }}
|
||||
name: {{ .Values.serviceMonitor.servicePortName }}
|
||||
protocol: TCP
|
||||
targetPort: prometheus
|
||||
selector:
|
||||
{{- include "mysql-operator.selectorLabels" . | nindent 4 }}
|
||||
@@ -1,12 +0,0 @@
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ include "mysql-operator.serviceAccountName" . }}
|
||||
labels:
|
||||
{{- include "mysql-operator.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,43 +0,0 @@
|
||||
# This is a ServicMonitor for the MySQL operator itself.
|
||||
# To scrape the operator, we need https://github.com/bitpoke/mysql-operator/issues/151 first.
|
||||
{{- if .Values.serviceMonitor.enabled }}
|
||||
{{- if .Capabilities.APIVersions.Has "monitoring.coreos.com/v1" }}
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: ServiceMonitor
|
||||
metadata:
|
||||
name: {{ template "mysql-operator.fullname" . }}
|
||||
labels:
|
||||
{{- include "mysql-operator.labels" . | nindent 4 }}
|
||||
{{- if .Values.serviceMonitor.additionalLabels }}
|
||||
{{ toYaml .Values.serviceMonitor.additionalLabels | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "mysql-operator.selectorLabels" . | nindent 6 }}
|
||||
app.kubernetes.io/component: operator
|
||||
{{- with .Values.serviceMonitor.jobLabel }}
|
||||
jobLabel: {{ . | quote}}
|
||||
{{- end }}
|
||||
{{- with .Values.serviceMonitor.targetLabels }}
|
||||
targetLabels:
|
||||
{{ toYaml . | trim | indent 4 -}}
|
||||
{{- end }}
|
||||
{{- with .Values.serviceMonitor.podTargetLabels }}
|
||||
podTargetLabels:
|
||||
{{ toYaml . | trim | indent 4 -}}
|
||||
{{- end }}
|
||||
endpoints:
|
||||
- path: /metrics
|
||||
port: {{ .Values.serviceMonitor.servicePortName }}
|
||||
{{- if .Values.serviceMonitor.interval }}
|
||||
interval: {{ .Values.serviceMonitor.interval }}
|
||||
{{- end }}
|
||||
{{- if .Values.serviceMonitor.scrapeTimeout }}
|
||||
scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }}
|
||||
{{- end }}
|
||||
{{- if .Values.serviceMonitor.metricRelabelings }}
|
||||
metricRelabelings: {{ toYaml .Values.serviceMonitor.metricRelabelings | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,195 +0,0 @@
|
||||
{{- $appVersion := .Chart.AppVersion -}}
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: {{ include "mysql-operator.fullname" . }}
|
||||
labels:
|
||||
{{- include "mysql-operator.labels" . | nindent 4 }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
serviceName: {{ include "orchestrator.fullname" . }}
|
||||
podManagementPolicy: Parallel
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "mysql-operator.selectorLabels" . | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
{{- with .Values.podAnnotations }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
checksum/orchestrator-config: {{ include (print $.Template.BasePath "/orchestrator-config.yaml") . | sha256sum }}
|
||||
checksum/orchestrator-secret: {{ include (print $.Template.BasePath "/orchestrator-secret.yaml") . | sha256sum }}
|
||||
labels:
|
||||
{{- include "mysql-operator.selectorLabels" . | nindent 8 }}
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ include "mysql-operator.serviceAccountName" . }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||
containers:
|
||||
- name: operator
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default $appVersion }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
name: prometheus
|
||||
protocol: TCP
|
||||
env:
|
||||
- name: ORC_TOPOLOGY_USER
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ include "orchestrator.secretName" . }}
|
||||
key: TOPOLOGY_USER
|
||||
- name: ORC_TOPOLOGY_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ include "orchestrator.secretName" . }}
|
||||
key: TOPOLOGY_PASSWORD
|
||||
{{- if .Values.extraEnv }}
|
||||
{{- toYaml .Values.extraEnv | nindent 12 }}
|
||||
{{- end }}
|
||||
args:
|
||||
- --leader-election-namespace={{ .Release.Namespace }}
|
||||
- --orchestrator-uri={{ include "orchestrator.apiURL" . }}
|
||||
{{- with .Values.sidecar57 }}
|
||||
- --sidecar-image={{ .image.repository }}:{{ .image.tag | default $appVersion }}
|
||||
{{- end -}}
|
||||
{{- with .Values.sidecar80 }}
|
||||
- --sidecar-mysql8-image={{ .image.repository }}:{{ .image.tag | default $appVersion }}
|
||||
{{- end -}}
|
||||
{{- with .Values.metricsExporter }}
|
||||
- --metrics-exporter-image={{ .image.repository }}:{{ .image.tag }}
|
||||
{{- end -}}
|
||||
{{- if .Values.watchNamespace }}
|
||||
- --namespace={{ .Values.watchNamespace }}
|
||||
{{- end }}
|
||||
{{- if .Values.gracefulShutdown.enabled }}
|
||||
- --failover-before-shutdown=true
|
||||
{{- else }}
|
||||
- --failover-before-shutdown=false
|
||||
{{- end }}
|
||||
{{- range $arg := .Values.extraArgs }}
|
||||
- {{ $arg }}
|
||||
{{- end }}
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: 8081
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /readyz
|
||||
port: 8081
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
- name: orchestrator
|
||||
securityContext:
|
||||
{{- toYaml .Values.orchestrator.securityContext | nindent 12 }}
|
||||
image: {{ .Values.orchestrator.image.repository }}:{{ .Values.orchestrator.image.tag | default .Chart.AppVersion }}
|
||||
imagePullPolicy: {{ .Values.orchestrator.image.pullPolicy }}
|
||||
ports:
|
||||
- containerPort: 3000
|
||||
name: http
|
||||
protocol: TCP
|
||||
- containerPort: 10008
|
||||
name: raft
|
||||
protocol: TCP
|
||||
env:
|
||||
- name: POD_IP
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: status.podIP
|
||||
{{- if .Values.orchestrator.extraEnv }}
|
||||
{{- toYaml .Values.orchestrator.extraEnv | nindent 12 }}
|
||||
{{- end }}
|
||||
envFrom:
|
||||
- prefix: ORC_
|
||||
secretRef:
|
||||
name: {{ include "orchestrator.secretName" . }}
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /var/lib/orchestrator
|
||||
- name: config
|
||||
mountPath: /usr/local/share/orchestrator/templates
|
||||
livenessProbe:
|
||||
timeoutSeconds: 10
|
||||
initialDelaySeconds: 200
|
||||
httpGet:
|
||||
path: /api/lb-check
|
||||
port: 3000
|
||||
# https://github.com/github/orchestrator/blob/master/docs/raft.md#proxy-healthy-raft-nodes
|
||||
readinessProbe:
|
||||
timeoutSeconds: 10
|
||||
httpGet:
|
||||
path: /api/raft-health
|
||||
port: 3000
|
||||
resources:
|
||||
{{- toYaml .Values.orchestrator.resources | nindent 12 }}
|
||||
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: {{ template "orchestrator.fullname" . }}
|
||||
{{- if not .Values.orchestrator.persistence.enabled }}
|
||||
- name: data
|
||||
emptyDir: {}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.orchestrator.persistence.fsGroupWorkaroundEnabled }}
|
||||
initContainers:
|
||||
- name: init-mount
|
||||
securityContext:
|
||||
runAsUser: 0
|
||||
image: busybox:1.34.0
|
||||
command: ['sh', '-c', "chown -R {{ .Values.podSecurityContext.fsGroup | default "0" }}:{{ .Values.podSecurityContext.fsGroup | default "0" }} /var/lib/orchestrator"]
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /var/lib/orchestrator
|
||||
{{- end }}
|
||||
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.orchestrator.persistence.enabled }}
|
||||
volumeClaimTemplates:
|
||||
- metadata:
|
||||
name: data
|
||||
{{- with .Values.orchestrator.persistence.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
accessModes: [ {{ .Values.orchestrator.persistence.accessMode }} ]
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.orchestrator.persistence.size }}
|
||||
{{- if .Values.orchestrator.persistence.selector }}
|
||||
{{- with .Values.orchestrator.persistence.selector.matchLabels }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.orchestrator.persistence.storageClass }}
|
||||
{{- if (eq "-" .Values.orchestrator.persistence.storageClass) }}
|
||||
storageClassName: ""
|
||||
{{- else }}
|
||||
storageClassName: "{{ .Values.orchestrator.persistence.storageClass }}"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,277 +0,0 @@
|
||||
# Default values for mysql-operator.
|
||||
# This is a YAML-formatted file.
|
||||
# Declare variables to be passed into your templates.
|
||||
replicaCount: 3
|
||||
|
||||
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:
|
||||
Reference in New Issue
Block a user