Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vitess-operator not managing/creating clusters in other namespaces #236

Open
kai-laufer opened this issue Nov 10, 2021 · 6 comments · May be fixed by #666
Open

vitess-operator not managing/creating clusters in other namespaces #236

kai-laufer opened this issue Nov 10, 2021 · 6 comments · May be fixed by #666
Assignees
Milestone

Comments

@kai-laufer
Copy link

kai-laufer commented Nov 10, 2021

Hey,

I have the following problem:
I want to run the vitess-operator in the namespace "operators-vitess-operator" which works.
What doesn't work is to use the 101_initial_cluster.yaml and to deploy the cluster in the namespace "operators-vitess-example".
I can only deploy clusters in the namespace of the operator.

Here is the operator.yaml:

# Version: v2.5.0
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.3.0
  creationTimestamp: null
  name: etcdlockservers.planetscale.com
spec:
  group: planetscale.com
  names:
    kind: EtcdLockserver
    listKind: EtcdLockserverList
    plural: etcdlockservers
    shortNames:
    - etcdls
    singular: etcdlockserver
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      properties:
        apiVersion:
          type: string
        kind:
          type: string
        metadata:
          type: object
        spec:
          properties:
            advertisePeerURLs:
              items:
                type: string
              maxItems: 3
              minItems: 3
              type: array
            affinity:
              type: object
              x-kubernetes-preserve-unknown-fields: true
            annotations:
              additionalProperties:
                type: string
              type: object
            clientService:
              properties:
                annotations:
                  additionalProperties:
                    type: string
                  type: object
                clusterIP:
                  type: string
              type: object
            createClientService:
              type: boolean
            createPDB:
              type: boolean
            createPeerService:
              type: boolean
            dataVolumeClaimTemplate:
              properties:
                accessModes:
                  items:
                    type: string
                  type: array
                resources:
                  properties:
                    limits:
                      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
                      type: object
                    requests:
                      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
                      type: object
                  type: object
                selector:
                  properties:
                    matchExpressions:
                      items:
                        properties:
                          key:
                            type: string
                          operator:
                            type: string
                          values:
                            items:
                              type: string
                            type: array
                        required:
                        - key
                        - operator
                        type: object
                      type: array
                    matchLabels:
                      additionalProperties:
                        type: string
                      type: object
                  type: object
                storageClassName:
                  type: string
                volumeMode:
                  type: string
                volumeName:
                  type: string
              type: object
            extraEnv:
              items:
                properties:
                  name:
                    type: string
                  value:
                    type: string
                  valueFrom:
                    properties:
                      configMapKeyRef:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                          optional:
                            type: boolean
                        required:
                        - key
                        type: object
                      fieldRef:
                        properties:
                          apiVersion:
                            type: string
                          fieldPath:
                            type: string
                        required:
                        - fieldPath
                        type: object
                      resourceFieldRef:
                        properties:
                          containerName:
                            type: string
                          divisor:
                            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
                          resource:
                            type: string
                        required:
                        - resource
                        type: object
                      secretKeyRef:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                          optional:
                            type: boolean
                        required:
                        - key
                        type: object
                    type: object
                required:
                - name
                type: object
              type: array
            extraFlags:
              additionalProperties:
                type: string
              type: object
            extraLabels:
              additionalProperties:
                type: string
              type: object
            extraVolumeMounts:
              items:
                properties:
                  mountPath:
                    type: string
                  mountPropagation:
                    type: string
                  name:
                    type: string
                  readOnly:
                    type: boolean
                  subPath:
                    type: string
                  subPathExpr:
                    type: string
                required:
                - mountPath
                - name
                type: object
              type: array
            extraVolumes:
              items:
                required:
                - name
                type: object
                x-kubernetes-preserve-unknown-fields: true
              type: array
            image:
              type: string
            imagePullPolicy:
              type: string
            imagePullSecrets:
              items:
                properties:
                  name:
                    type: string
                type: object
              type: array
            initContainers:
              items:
                required:
                - name
                type: object
                x-kubernetes-preserve-unknown-fields: true
              type: array
            localMemberIndex:
              format: int32
              maximum: 3
              minimum: 1
              type: integer
            peerService:
              properties:
                annotations:
                  additionalProperties:
                    type: string
                  type: object
                clusterIP:
                  type: string
              type: object
            resources:
              properties:
                limits:
                  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
                  type: object
                requests:
                  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
                  type: object
              type: object
            sidecarContainers:
              items:
                required:
                - name
                type: object
                x-kubernetes-preserve-unknown-fields: true
              type: array
            tolerations:
              items:
                type: object
                x-kubernetes-preserve-unknown-fields: true
              type: array
            zone:
              type: string
          type: object
        status:
          properties:
            available:
              type: string
            clientServiceName:
              type: string
            observedGeneration:
              format: int64
              type: integer
          type: object
      type: object
  version: v2
  versions:
  - name: v2
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.3.0
  creationTimestamp: null
  name: vitessbackups.planetscale.com
spec:
  group: planetscale.com
  names:
    kind: VitessBackup
    listKind: VitessBackupList
    plural: vitessbackups
    shortNames:
    - vtb
    singular: vitessbackup
  scope: Namespaced
  validation:
    openAPIV3Schema:
      properties:
        apiVersion:
          type: string
        kind:
          type: string
        metadata:
          type: object
        spec:
          type: object
        status:
          properties:
            complete:
              type: boolean
            engine:
              type: string
            finishedTime:
              format: date-time
              type: string
            position:
              type: string
            startTime:
              format: date-time
              type: string
            storageDirectory:
              type: string
            storageName:
              type: string
          type: object
      type: object
  version: v2
  versions:
  - name: v2
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.3.0
  creationTimestamp: null
  name: vitessbackupstorages.planetscale.com
spec:
  group: planetscale.com
  names:
    kind: VitessBackupStorage
    listKind: VitessBackupStorageList
    plural: vitessbackupstorages
    shortNames:
    - vtbs
    singular: vitessbackupstorage
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      properties:
        apiVersion:
          type: string
        kind:
          type: string
        metadata:
          type: object
        spec:
          properties:
            location:
              properties:
                annotations:
                  additionalProperties:
                    type: string
                  type: object
                azblob:
                  properties:
                    account:
                      minLength: 1
                      type: string
                    authSecret:
                      properties:
                        key:
                          type: string
                        name:
                          type: string
                        volumeName:
                          type: string
                      required:
                      - key
                      type: object
                    container:
                      minLength: 1
                      type: string
                    keyPrefix:
                      maxLength: 256
                      pattern: ^[^\r\n]*$
                      type: string
                  required:
                  - account
                  - authSecret
                  - container
                  type: object
                ceph:
                  properties:
                    authSecret:
                      properties:
                        key:
                          type: string
                        name:
                          type: string
                        volumeName:
                          type: string
                      required:
                      - key
                      type: object
                  required:
                  - authSecret
                  type: object
                gcs:
                  properties:
                    authSecret:
                      properties:
                        key:
                          type: string
                        name:
                          type: string
                        volumeName:
                          type: string
                      required:
                      - key
                      type: object
                    bucket:
                      minLength: 1
                      type: string
                    keyPrefix:
                      maxLength: 256
                      pattern: ^[^\r\n]*$
                      type: string
                  required:
                  - bucket
                  type: object
                name:
                  maxLength: 63
                  pattern: ^[A-Za-z0-9]([A-Za-z0-9-_.]*[A-Za-z0-9])?$
                  type: string
                s3:
                  properties:
                    authSecret:
                      properties:
                        key:
                          type: string
                        name:
                          type: string
                        volumeName:
                          type: string
                      required:
                      - key
                      type: object
                    bucket:
                      minLength: 1
                      type: string
                    endpoint:
                      type: string
                    keyPrefix:
                      maxLength: 256
                      pattern: ^[^\r\n]*$
                      type: string
                    region:
                      minLength: 1
                      type: string
                  required:
                  - bucket
                  - region
                  type: object
                volume:
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                volumeSubPath:
                  type: string
              type: object
            subcontroller:
              properties:
                serviceAccountName:
                  type: string
              type: object
          required:
          - location
          type: object
        status:
          properties:
            observedGeneration:
              format: int64
              type: integer
            totalBackupCount:
              format: int32
              type: integer
          type: object
      type: object
  version: v2
  versions:
  - name: v2
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.3.0
  creationTimestamp: null
  name: vitesscells.planetscale.com
spec:
  group: planetscale.com
  names:
    kind: VitessCell
    listKind: VitessCellList
    plural: vitesscells
    shortNames:
    - vtc
    singular: vitesscell
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      properties:
        apiVersion:
          type: string
        kind:
          type: string
        metadata:
          type: object
        spec:
          properties:
            allCells:
              items:
                type: string
              type: array
            extraVitessFlags:
              additionalProperties:
                type: string
              type: object
            gateway:
              properties:
                affinity:
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                annotations:
                  additionalProperties:
                    type: string
                  type: object
                authentication:
                  properties:
                    static:
                      properties:
                        secret:
                          properties:
                            key:
                              type: string
                            name:
                              type: string
                            volumeName:
                              type: string
                          required:
                          - key
                          type: object
                      type: object
                  type: object
                extraEnv:
                  items:
                    properties:
                      name:
                        type: string
                      value:
                        type: string
                      valueFrom:
                        properties:
                          configMapKeyRef:
                            properties:
                              key:
                                type: string
                              name:
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                          fieldRef:
                            properties:
                              apiVersion:
                                type: string
                              fieldPath:
                                type: string
                            required:
                            - fieldPath
                            type: object
                          resourceFieldRef:
                            properties:
                              containerName:
                                type: string
                              divisor:
                                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
                              resource:
                                type: string
                            required:
                            - resource
                            type: object
                          secretKeyRef:
                            properties:
                              key:
                                type: string
                              name:
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                        type: object
                    required:
                    - name
                    type: object
                  type: array
                extraFlags:
                  additionalProperties:
                    type: string
                  type: object
                extraLabels:
                  additionalProperties:
                    type: string
                  type: object
                extraVolumeMounts:
                  items:
                    properties:
                      mountPath:
                        type: string
                      mountPropagation:
                        type: string
                      name:
                        type: string
                      readOnly:
                        type: boolean
                      subPath:
                        type: string
                      subPathExpr:
                        type: string
                    required:
                    - mountPath
                    - name
                    type: object
                  type: array
                extraVolumes:
                  items:
                    required:
                    - name
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
                initContainers:
                  items:
                    required:
                    - name
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
                replicas:
                  format: int32
                  minimum: 0
                  type: integer
                resources:
                  properties:
                    limits:
                      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
                      type: object
                    requests:
                      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
                      type: object
                  type: object
                secureTransport:
                  properties:
                    required:
                      type: boolean
                    tls:
                      properties:
                        certSecret:
                          properties:
                            key:
                              type: string
                            name:
                              type: string
                            volumeName:
                              type: string
                          required:
                          - key
                          type: object
                        clientCACertSecret:
                          properties:
                            key:
                              type: string
                            name:
                              type: string
                            volumeName:
                              type: string
                          required:
                          - key
                          type: object
                        keySecret:
                          properties:
                            key:
                              type: string
                            name:
                              type: string
                            volumeName:
                              type: string
                          required:
                          - key
                          type: object
                      type: object
                  type: object
                service:
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      type: object
                    clusterIP:
                      type: string
                  type: object
                sidecarContainers:
                  items:
                    required:
                    - name
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
                tolerations:
                  items:
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
                topologySpreadConstraints:
                  items:
                    required:
                    - maxSkew
                    - topologyKey
                    - whenUnsatisfiable
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
              type: object
            globalLockserver:
              properties:
                address:
                  type: string
                implementation:
                  type: string
                rootPath:
                  type: string
              required:
              - address
              - implementation
              - rootPath
              type: object
            imagePullPolicies:
              properties:
                mysqld:
                  type: string
                mysqldExporter:
                  type: string
                vtbackup:
                  type: string
                vtctld:
                  type: string
                vtgate:
                  type: string
                vtorc:
                  type: string
                vttablet:
                  type: string
              type: object
            imagePullSecrets:
              items:
                properties:
                  name:
                    type: string
                type: object
              type: array
            images:
              properties:
                vtgate:
                  type: string
              type: object
            lockserver:
              properties:
                etcd:
                  properties:
                    advertisePeerURLs:
                      items:
                        type: string
                      maxItems: 3
                      minItems: 3
                      type: array
                    affinity:
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    annotations:
                      additionalProperties:
                        type: string
                      type: object
                    clientService:
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          type: object
                        clusterIP:
                          type: string
                      type: object
                    createClientService:
                      type: boolean
                    createPDB:
                      type: boolean
                    createPeerService:
                      type: boolean
                    dataVolumeClaimTemplate:
                      properties:
                        accessModes:
                          items:
                            type: string
                          type: array
                        resources:
                          properties:
                            limits:
                              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
                              type: object
                            requests:
                              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
                              type: object
                          type: object
                        selector:
                          properties:
                            matchExpressions:
                              items:
                                properties:
                                  key:
                                    type: string
                                  operator:
                                    type: string
                                  values:
                                    items:
                                      type: string
                                    type: array
                                required:
                                - key
                                - operator
                                type: object
                              type: array
                            matchLabels:
                              additionalProperties:
                                type: string
                              type: object
                          type: object
                        storageClassName:
                          type: string
                        volumeMode:
                          type: string
                        volumeName:
                          type: string
                      type: object
                    extraEnv:
                      items:
                        properties:
                          name:
                            type: string
                          value:
                            type: string
                          valueFrom:
                            properties:
                              configMapKeyRef:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                  optional:
                                    type: boolean
                                required:
                                - key
                                type: object
                              fieldRef:
                                properties:
                                  apiVersion:
                                    type: string
                                  fieldPath:
                                    type: string
                                required:
                                - fieldPath
                                type: object
                              resourceFieldRef:
                                properties:
                                  containerName:
                                    type: string
                                  divisor:
                                    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
                                  resource:
                                    type: string
                                required:
                                - resource
                                type: object
                              secretKeyRef:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                  optional:
                                    type: boolean
                                required:
                                - key
                                type: object
                            type: object
                        required:
                        - name
                        type: object
                      type: array
                    extraFlags:
                      additionalProperties:
                        type: string
                      type: object
                    extraLabels:
                      additionalProperties:
                        type: string
                      type: object
                    extraVolumeMounts:
                      items:
                        properties:
                          mountPath:
                            type: string
                          mountPropagation:
                            type: string
                          name:
                            type: string
                          readOnly:
                            type: boolean
                          subPath:
                            type: string
                          subPathExpr:
                            type: string
                        required:
                        - mountPath
                        - name
                        type: object
                      type: array
                    extraVolumes:
                      items:
                        required:
                        - name
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      type: array
                    image:
                      type: string
                    imagePullPolicy:
                      type: string
                    imagePullSecrets:
                      items:
                        properties:
                          name:
                            type: string
                        type: object
                      type: array
                    initContainers:
                      items:
                        required:
                        - name
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      type: array
                    localMemberIndex:
                      format: int32
                      maximum: 3
                      minimum: 1
                      type: integer
                    peerService:
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          type: object
                        clusterIP:
                          type: string
                      type: object
                    resources:
                      properties:
                        limits:
                          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
                          type: object
                        requests:
                          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
                          type: object
                      type: object
                    sidecarContainers:
                      items:
                        required:
                        - name
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      type: array
                    tolerations:
                      items:
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      type: array
                  type: object
                external:
                  properties:
                    address:
                      type: string
                    implementation:
                      type: string
                    rootPath:
                      type: string
                  required:
                  - address
                  - implementation
                  - rootPath
                  type: object
              type: object
            name:
              maxLength: 63
              minLength: 1
              pattern: ^[A-Za-z0-9]([_.A-Za-z0-9]*[A-Za-z0-9])?$
              type: string
            topologyReconciliation:
              properties:
                pruneCells:
                  type: boolean
                pruneKeyspaces:
                  type: boolean
                pruneShardCells:
                  type: boolean
                pruneShards:
                  type: boolean
                pruneSrvKeyspaces:
                  type: boolean
                pruneTablets:
                  type: boolean
                registerCells:
                  type: boolean
                registerCellsAliases:
                  type: boolean
              type: object
            zone:
              type: string
          required:
          - allCells
          - globalLockserver
          - name
          type: object
        status:
          properties:
            gateway:
              properties:
                available:
                  type: string
                serviceName:
                  type: string
              type: object
            idle:
              type: string
            keyspaces:
              additionalProperties:
                type: object
              type: object
            lockserver:
              properties:
                etcd:
                  properties:
                    available:
                      type: string
                    clientServiceName:
                      type: string
                    observedGeneration:
                      format: int64
                      type: integer
                  type: object
              type: object
            observedGeneration:
              format: int64
              type: integer
          type: object
      type: object
  version: v2
  versions:
  - name: v2
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.3.0
  creationTimestamp: null
  name: vitessclusters.planetscale.com
spec:
  group: planetscale.com
  names:
    kind: VitessCluster
    listKind: VitessClusterList
    plural: vitessclusters
    shortNames:
    - vt
    singular: vitesscluster
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      properties:
        apiVersion:
          type: string
        kind:
          type: string
        metadata:
          type: object
        spec:
          properties:
            backup:
              properties:
                engine:
                  enum:
                  - builtin
                  - xtrabackup
                  type: string
                locations:
                  items:
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        type: object
                      azblob:
                        properties:
                          account:
                            minLength: 1
                            type: string
                          authSecret:
                            properties:
                              key:
                                type: string
                              name:
                                type: string
                              volumeName:
                                type: string
                            required:
                            - key
                            type: object
                          container:
                            minLength: 1
                            type: string
                          keyPrefix:
                            maxLength: 256
                            pattern: ^[^\r\n]*$
                            type: string
                        required:
                        - account
                        - authSecret
                        - container
                        type: object
                      ceph:
                        properties:
                          authSecret:
                            properties:
                              key:
                                type: string
                              name:
                                type: string
                              volumeName:
                                type: string
                            required:
                            - key
                            type: object
                        required:
                        - authSecret
                        type: object
                      gcs:
                        properties:
                          authSecret:
                            properties:
                              key:
                                type: string
                              name:
                                type: string
                              volumeName:
                                type: string
                            required:
                            - key
                            type: object
                          bucket:
                            minLength: 1
                            type: string
                          keyPrefix:
                            maxLength: 256
                            pattern: ^[^\r\n]*$
                            type: string
                        required:
                        - bucket
                        type: object
                      name:
                        maxLength: 63
                        pattern: ^[A-Za-z0-9]([A-Za-z0-9-_.]*[A-Za-z0-9])?$
                        type: string
                      s3:
                        properties:
                          authSecret:
                            properties:
                              key:
                                type: string
                              name:
                                type: string
                              volumeName:
                                type: string
                            required:
                            - key
                            type: object
                          bucket:
                            minLength: 1
                            type: string
                          endpoint:
                            type: string
                          keyPrefix:
                            maxLength: 256
                            pattern: ^[^\r\n]*$
                            type: string
                          region:
                            minLength: 1
                            type: string
                        required:
                        - bucket
                        - region
                        type: object
                      volume:
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      volumeSubPath:
                        type: string
                    type: object
                  minItems: 1
                  type: array
                subcontroller:
                  properties:
                    serviceAccountName:
                      type: string
                  type: object
              required:
              - locations
              type: object
            cells:
              items:
                properties:
                  gateway:
                    properties:
                      affinity:
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      annotations:
                        additionalProperties:
                          type: string
                        type: object
                      authentication:
                        properties:
                          static:
                            properties:
                              secret:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                  volumeName:
                                    type: string
                                required:
                                - key
                                type: object
                            type: object
                        type: object
                      extraEnv:
                        items:
                          properties:
                            name:
                              type: string
                            value:
                              type: string
                            valueFrom:
                              properties:
                                configMapKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                fieldRef:
                                  properties:
                                    apiVersion:
                                      type: string
                                    fieldPath:
                                      type: string
                                  required:
                                  - fieldPath
                                  type: object
                                resourceFieldRef:
                                  properties:
                                    containerName:
                                      type: string
                                    divisor:
                                      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
                                    resource:
                                      type: string
                                  required:
                                  - resource
                                  type: object
                                secretKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                      extraFlags:
                        additionalProperties:
                          type: string
                        type: object
                      extraLabels:
                        additionalProperties:
                          type: string
                        type: object
                      extraVolumeMounts:
                        items:
                          properties:
                            mountPath:
                              type: string
                            mountPropagation:
                              type: string
                            name:
                              type: string
                            readOnly:
                              type: boolean
                            subPath:
                              type: string
                            subPathExpr:
                              type: string
                          required:
                          - mountPath
                          - name
                          type: object
                        type: array
                      extraVolumes:
                        items:
                          required:
                          - name
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        type: array
                      initContainers:
                        items:
                          required:
                          - name
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        type: array
                      replicas:
                        format: int32
                        minimum: 0
                        type: integer
                      resources:
                        properties:
                          limits:
                            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
                            type: object
                          requests:
                            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
                            type: object
                        type: object
                      secureTransport:
                        properties:
                          required:
                            type: boolean
                          tls:
                            properties:
                              certSecret:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                  volumeName:
                                    type: string
                                required:
                                - key
                                type: object
                              clientCACertSecret:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                  volumeName:
                                    type: string
                                required:
                                - key
                                type: object
                              keySecret:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                  volumeName:
                                    type: string
                                required:
                                - key
                                type: object
                            type: object
                        type: object
                      service:
                        properties:
                          annotations:
                            additionalProperties:
                              type: string
                            type: object
                          clusterIP:
                            type: string
                        type: object
                      sidecarContainers:
                        items:
                          required:
                          - name
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        type: array
                      tolerations:
                        items:
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        type: array
                      topologySpreadConstraints:
                        items:
                          required:
                          - maxSkew
                          - topologyKey
                          - whenUnsatisfiable
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        type: array
                    type: object
                  lockserver:
                    properties:
                      etcd:
                        properties:
                          advertisePeerURLs:
                            items:
                              type: string
                            maxItems: 3
                            minItems: 3
                            type: array
                          affinity:
                            type: object
                            x-kubernetes-preserve-unknown-fields: true
                          annotations:
                            additionalProperties:
                              type: string
                            type: object
                          clientService:
                            properties:
                              annotations:
                                additionalProperties:
                                  type: string
                                type: object
                              clusterIP:
                                type: string
                            type: object
                          createClientService:
                            type: boolean
                          createPDB:
                            type: boolean
                          createPeerService:
                            type: boolean
                          dataVolumeClaimTemplate:
                            properties:
                              accessModes:
                                items:
                                  type: string
                                type: array
                              resources:
                                properties:
                                  limits:
                                    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
                                    type: object
                                  requests:
                                    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
                                    type: object
                                type: object
                              selector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                              storageClassName:
                                type: string
                              volumeMode:
                                type: string
                              volumeName:
                                type: string
                            type: object
                          extraEnv:
                            items:
                              properties:
                                name:
                                  type: string
                                value:
                                  type: string
                                valueFrom:
                                  properties:
                                    configMapKeyRef:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                    fieldRef:
                                      properties:
                                        apiVersion:
                                          type: string
                                        fieldPath:
                                          type: string
                                      required:
                                      - fieldPath
                                      type: object
                                    resourceFieldRef:
                                      properties:
                                        containerName:
                                          type: string
                                        divisor:
                                          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
                                        resource:
                                          type: string
                                      required:
                                      - resource
                                      type: object
                                    secretKeyRef:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                  type: object
                              required:
                              - name
                              type: object
                            type: array
                          extraFlags:
                            additionalProperties:
                              type: string
                            type: object
                          extraLabels:
                            additionalProperties:
                              type: string
                            type: object
                          extraVolumeMounts:
                            items:
                              properties:
                                mountPath:
                                  type: string
                                mountPropagation:
                                  type: string
                                name:
                                  type: string
                                readOnly:
                                  type: boolean
                                subPath:
                                  type: string
                                subPathExpr:
                                  type: string
                              required:
                              - mountPath
                              - name
                              type: object
                            type: array
                          extraVolumes:
                            items:
                              required:
                              - name
                              type: object
                              x-kubernetes-preserve-unknown-fields: true
                            type: array
                          image:
                            type: string
                          imagePullPolicy:
                            type: string
                          imagePullSecrets:
                            items:
                              properties:
                                name:
                                  type: string
                              type: object
                            type: array
                          initContainers:
                            items:
                              required:
                              - name
                              type: object
                              x-kubernetes-preserve-unknown-fields: true
                            type: array
                          localMemberIndex:
                            format: int32
                            maximum: 3
                            minimum: 1
                            type: integer
                          peerService:
                            properties:
                              annotations:
                                additionalProperties:
                                  type: string
                                type: object
                              clusterIP:
                                type: string
                            type: object
                          resources:
                            properties:
                              limits:
                                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
                                type: object
                              requests:
                                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
                                type: object
                            type: object
                          sidecarContainers:
                            items:
                              required:
                              - name
                              type: object
                              x-kubernetes-preserve-unknown-fields: true
                            type: array
                          tolerations:
                            items:
                              type: object
                              x-kubernetes-preserve-unknown-fields: true
                            type: array
                        type: object
                      external:
                        properties:
                          address:
                            type: string
                          implementation:
                            type: string
                          rootPath:
                            type: string
                        required:
                        - address
                        - implementation
                        - rootPath
                        type: object
                    type: object
                  name:
                    maxLength: 63
                    minLength: 1
                    pattern: ^[A-Za-z0-9]([_.A-Za-z0-9]*[A-Za-z0-9])?$
                    type: string
                  zone:
                    type: string
                required:
                - name
                type: object
              type: array
            extraVitessFlags:
              additionalProperties:
                type: string
              type: object
            gatewayService:
              properties:
                annotations:
                  additionalProperties:
                    type: string
                  type: object
                clusterIP:
                  type: string
              type: object
            globalLockserver:
              properties:
                etcd:
                  properties:
                    advertisePeerURLs:
                      items:
                        type: string
                      maxItems: 3
                      minItems: 3
                      type: array
                    affinity:
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    annotations:
                      additionalProperties:
                        type: string
                      type: object
                    clientService:
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          type: object
                        clusterIP:
                          type: string
                      type: object
                    createClientService:
                      type: boolean
                    createPDB:
                      type: boolean
                    createPeerService:
                      type: boolean
                    dataVolumeClaimTemplate:
                      properties:
                        accessModes:
                          items:
                            type: string
                          type: array
                        resources:
                          properties:
                            limits:
                              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
                              type: object
                            requests:
                              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
                              type: object
                          type: object
                        selector:
                          properties:
                            matchExpressions:
                              items:
                                properties:
                                  key:
                                    type: string
                                  operator:
                                    type: string
                                  values:
                                    items:
                                      type: string
                                    type: array
                                required:
                                - key
                                - operator
                                type: object
                              type: array
                            matchLabels:
                              additionalProperties:
                                type: string
                              type: object
                          type: object
                        storageClassName:
                          type: string
                        volumeMode:
                          type: string
                        volumeName:
                          type: string
                      type: object
                    extraEnv:
                      items:
                        properties:
                          name:
                            type: string
                          value:
                            type: string
                          valueFrom:
                            properties:
                              configMapKeyRef:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                  optional:
                                    type: boolean
                                required:
                                - key
                                type: object
                              fieldRef:
                                properties:
                                  apiVersion:
                                    type: string
                                  fieldPath:
                                    type: string
                                required:
                                - fieldPath
                                type: object
                              resourceFieldRef:
                                properties:
                                  containerName:
                                    type: string
                                  divisor:
                                    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
                                  resource:
                                    type: string
                                required:
                                - resource
                                type: object
                              secretKeyRef:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                  optional:
                                    type: boolean
                                required:
                                - key
                                type: object
                            type: object
                        required:
                        - name
                        type: object
                      type: array
                    extraFlags:
                      additionalProperties:
                        type: string
                      type: object
                    extraLabels:
                      additionalProperties:
                        type: string
                      type: object
                    extraVolumeMounts:
                      items:
                        properties:
                          mountPath:
                            type: string
                          mountPropagation:
                            type: string
                          name:
                            type: string
                          readOnly:
                            type: boolean
                          subPath:
                            type: string
                          subPathExpr:
                            type: string
                        required:
                        - mountPath
                        - name
                        type: object
                      type: array
                    extraVolumes:
                      items:
                        required:
                        - name
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      type: array
                    image:
                      type: string
                    imagePullPolicy:
                      type: string
                    imagePullSecrets:
                      items:
                        properties:
                          name:
                            type: string
                        type: object
                      type: array
                    initContainers:
                      items:
                        required:
                        - name
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      type: array
                    localMemberIndex:
                      format: int32
                      maximum: 3
                      minimum: 1
                      type: integer
                    peerService:
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          type: object
                        clusterIP:
                          type: string
                      type: object
                    resources:
                      properties:
                        limits:
                          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
                          type: object
                        requests:
                          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
                          type: object
                      type: object
                    sidecarContainers:
                      items:
                        required:
                        - name
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      type: array
                    tolerations:
                      items:
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      type: array
                  type: object
                external:
                  properties:
                    address:
                      type: string
                    implementation:
                      type: string
                    rootPath:
                      type: string
                  required:
                  - address
                  - implementation
                  - rootPath
                  type: object
              type: object
            imagePullPolicies:
              properties:
                mysqld:
                  type: string
                mysqldExporter:
                  type: string
                vtbackup:
                  type: string
                vtctld:
                  type: string
                vtgate:
                  type: string
                vtorc:
                  type: string
                vttablet:
                  type: string
              type: object
            imagePullSecrets:
              items:
                properties:
                  name:
                    type: string
                type: object
              type: array
            images:
              properties:
                mysqld:
                  properties:
                    mariadb103Compatible:
                      type: string
                    mariadbCompatible:
                      type: string
                    mysql56Compatible:
                      type: string
                    mysql80Compatible:
                      type: string
                  type: object
                mysqldExporter:
                  type: string
                vtbackup:
                  type: string
                vtctld:
                  type: string
                vtgate:
                  type: string
                vtorc:
                  type: string
                vttablet:
                  type: string
              type: object
            keyspaces:
              items:
                properties:
                  annotations:
                    additionalProperties:
                      type: string
                    type: object
                  databaseName:
                    type: string
                  name:
                    maxLength: 63
                    minLength: 1
                    pattern: ^[A-Za-z0-9]([A-Za-z0-9-_.]*[A-Za-z0-9])?$
                    type: string
                  partitionings:
                    items:
                      properties:
                        custom:
                          properties:
                            shards:
                              items:
                                properties:
                                  annotations:
                                    additionalProperties:
                                      type: string
                                    type: object
                                  databaseInitScriptSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        type: string
                                      volumeName:
                                        type: string
                                    required:
                                    - key
                                    type: object
                                  keyRange:
                                    properties:
                                      end:
                                        pattern: ^([0-9a-f][0-9a-f])*$
                                        type: string
                                      start:
                                        pattern: ^([0-9a-f][0-9a-f])*$
                                        type: string
                                    type: object
                                  replication:
                                    properties:
                                      enforceSemiSync:
                                        type: boolean
                                      initializeBackup:
                                        type: boolean
                                      initializeMaster:
                                        type: boolean
                                      recoverRestartedMaster:
                                        type: boolean
                                    type: object
                                  tabletPools:
                                    items:
                                      properties:
                                        affinity:
                                          type: object
                                          x-kubernetes-preserve-unknown-fields: true
                                        annotations:
                                          additionalProperties:
                                            type: string
                                          type: object
                                        backupLocationName:
                                          type: string
                                        cell:
                                          maxLength: 63
                                          minLength: 1
                                          pattern: ^[A-Za-z0-9]([_.A-Za-z0-9]*[A-Za-z0-9])?$
                                          type: string
                                        dataVolumeClaimTemplate:
                                          properties:
                                            accessModes:
                                              items:
                                                type: string
                                              type: array
                                            resources:
                                              properties:
                                                limits:
                                                  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
                                                  type: object
                                                requests:
                                                  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
                                                  type: object
                                              type: object
                                            selector:
                                              properties:
                                                matchExpressions:
                                                  items:
                                                    properties:
                                                      key:
                                                        type: string
                                                      operator:
                                                        type: string
                                                      values:
                                                        items:
                                                          type: string
                                                        type: array
                                                    required:
                                                    - key
                                                    - operator
                                                    type: object
                                                  type: array
                                                matchLabels:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                            storageClassName:
                                              type: string
                                            volumeMode:
                                              type: string
                                            volumeName:
                                              type: string
                                          type: object
                                        externalDatastore:
                                          properties:
                                            credentialsSecret:
                                              properties:
                                                key:
                                                  type: string
                                                name:
                                                  type: string
                                                volumeName:
                                                  type: string
                                              required:
                                              - key
                                              type: object
                                            database:
                                              type: string
                                            host:
                                              type: string
                                            port:
                                              format: int32
                                              maximum: 65535
                                              minimum: 1
                                              type: integer
                                            serverCACertSecret:
                                              properties:
                                                key:
                                                  type: string
                                                name:
                                                  type: string
                                                volumeName:
                                                  type: string
                                              required:
                                              - key
                                              type: object
                                            user:
                                              type: string
                                          required:
                                          - credentialsSecret
                                          - database
                                          - host
                                          - port
                                          - user
                                          type: object
                                        extraEnv:
                                          items:
                                            properties:
                                              name:
                                                type: string
                                              value:
                                                type: string
                                              valueFrom:
                                                properties:
                                                  configMapKeyRef:
                                                    properties:
                                                      key:
                                                        type: string
                                                      name:
                                                        type: string
                                                      optional:
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                  fieldRef:
                                                    properties:
                                                      apiVersion:
                                                        type: string
                                                      fieldPath:
                                                        type: string
                                                    required:
                                                    - fieldPath
                                                    type: object
                                                  resourceFieldRef:
                                                    properties:
                                                      containerName:
                                                        type: string
                                                      divisor:
                                                        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
                                                      resource:
                                                        type: string
                                                    required:
                                                    - resource
                                                    type: object
                                                  secretKeyRef:
                                                    properties:
                                                      key:
                                                        type: string
                                                      name:
                                                        type: string
                                                      optional:
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                type: object
                                            required:
                                            - name
                                            type: object
                                          type: array
                                        extraLabels:
                                          additionalProperties:
                                            type: string
                                          type: object
                                        extraVolumeMounts:
                                          items:
                                            properties:
                                              mountPath:
                                                type: string
                                              mountPropagation:
                                                type: string
                                              name:
                                                type: string
                                              readOnly:
                                                type: boolean
                                              subPath:
                                                type: string
                                              subPathExpr:
                                                type: string
                                            required:
                                            - mountPath
                                            - name
                                            type: object
                                          type: array
                                        extraVolumes:
                                          items:
                                            required:
                                            - name
                                            type: object
                                            x-kubernetes-preserve-unknown-fields: true
                                          type: array
                                        initContainers:
                                          items:
                                            required:
                                            - name
                                            type: object
                                            x-kubernetes-preserve-unknown-fields: true
                                          type: array
                                        mysqld:
                                          properties:
                                            configOverrides:
                                              type: string
                                            resources:
                                              properties:
                                                limits:
                                                  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
                                                  type: object
                                                requests:
                                                  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
                                                  type: object
                                              type: object
                                          required:
                                          - resources
                                          type: object
                                        replicas:
                                          format: int32
                                          minimum: 0
                                          type: integer
                                        sidecarContainers:
                                          items:
                                            required:
                                            - name
                                            type: object
                                            x-kubernetes-preserve-unknown-fields: true
                                          type: array
                                        tolerations:
                                          items:
                                            type: object
                                            x-kubernetes-preserve-unknown-fields: true
                                          type: array
                                        topologySpreadConstraints:
                                          items:
                                            required:
                                            - maxSkew
                                            - topologyKey
                                            - whenUnsatisfiable
                                            type: object
                                            x-kubernetes-preserve-unknown-fields: true
                                          type: array
                                        type:
                                          enum:
                                          - replica
                                          - rdonly
                                          - externalmaster
                                          - externalreplica
                                          - externalrdonly
                                          type: string
                                        vttablet:
                                          properties:
                                            extraFlags:
                                              additionalProperties:
                                                type: string
                                              type: object
                                            lifecycle:
                                              type: object
                                              x-kubernetes-preserve-unknown-fields: true
                                            resources:
                                              properties:
                                                limits:
                                                  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
                                                  type: object
                                                requests:
                                                  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
                                                  type: object
                                              type: object
                                          required:
                                          - resources
                                          type: object
                                      required:
                                      - cell
                                      - replicas
                                      - type
                                      - vttablet
                                      type: object
                                    type: array
                                    x-kubernetes-list-map-keys:
                                    - type
                                    - cell
                                    x-kubernetes-list-type: map
                                required:
                                - databaseInitScriptSecret
                                - keyRange
                                type: object
                              type: array
                          required:
                          - shards
                          type: object
                        equal:
                          properties:
                            parts:
                              format: int32
                              minimum: 1
                              type: integer
                            shardTemplate:
                              properties:
                                annotations:
                                  additionalProperties:
                                    type: string
                                  type: object
                                databaseInitScriptSecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      type: string
                                    volumeName:
                                      type: string
                                  required:
                                  - key
                                  type: object
                                replication:
                                  properties:
                                    enforceSemiSync:
                                      type: boolean
                                    initializeBackup:
                                      type: boolean
                                    initializeMaster:
                                      type: boolean
                                    recoverRestartedMaster:
                                      type: boolean
                                  type: object
                                tabletPools:
                                  items:
                                    properties:
                                      affinity:
                                        type: object
                                        x-kubernetes-preserve-unknown-fields: true
                                      annotations:
                                        additionalProperties:
                                          type: string
                                        type: object
                                      backupLocationName:
                                        type: string
                                      cell:
                                        maxLength: 63
                                        minLength: 1
                                        pattern: ^[A-Za-z0-9]([_.A-Za-z0-9]*[A-Za-z0-9])?$
                                        type: string
                                      dataVolumeClaimTemplate:
                                        properties:
                                          accessModes:
                                            items:
                                              type: string
                                            type: array
                                          resources:
                                            properties:
                                              limits:
                                                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
                                                type: object
                                              requests:
                                                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
                                                type: object
                                            type: object
                                          selector:
                                            properties:
                                              matchExpressions:
                                                items:
                                                  properties:
                                                    key:
                                                      type: string
                                                    operator:
                                                      type: string
                                                    values:
                                                      items:
                                                        type: string
                                                      type: array
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                              matchLabels:
                                                additionalProperties:
                                                  type: string
                                                type: object
                                            type: object
                                          storageClassName:
                                            type: string
                                          volumeMode:
                                            type: string
                                          volumeName:
                                            type: string
                                        type: object
                                      externalDatastore:
                                        properties:
                                          credentialsSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                type: string
                                              volumeName:
                                                type: string
                                            required:
                                            - key
                                            type: object
                                          database:
                                            type: string
                                          host:
                                            type: string
                                          port:
                                            format: int32
                                            maximum: 65535
                                            minimum: 1
                                            type: integer
                                          serverCACertSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                type: string
                                              volumeName:
                                                type: string
                                            required:
                                            - key
                                            type: object
                                          user:
                                            type: string
                                        required:
                                        - credentialsSecret
                                        - database
                                        - host
                                        - port
                                        - user
                                        type: object
                                      extraEnv:
                                        items:
                                          properties:
                                            name:
                                              type: string
                                            value:
                                              type: string
                                            valueFrom:
                                              properties:
                                                configMapKeyRef:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                fieldRef:
                                                  properties:
                                                    apiVersion:
                                                      type: string
                                                    fieldPath:
                                                      type: string
                                                  required:
                                                  - fieldPath
                                                  type: object
                                                resourceFieldRef:
                                                  properties:
                                                    containerName:
                                                      type: string
                                                    divisor:
                                                      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
                                                    resource:
                                                      type: string
                                                  required:
                                                  - resource
                                                  type: object
                                                secretKeyRef:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                              type: object
                                          required:
                                          - name
                                          type: object
                                        type: array
                                      extraLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                      extraVolumeMounts:
                                        items:
                                          properties:
                                            mountPath:
                                              type: string
                                            mountPropagation:
                                              type: string
                                            name:
                                              type: string
                                            readOnly:
                                              type: boolean
                                            subPath:
                                              type: string
                                            subPathExpr:
                                              type: string
                                          required:
                                          - mountPath
                                          - name
                                          type: object
                                        type: array
                                      extraVolumes:
                                        items:
                                          required:
                                          - name
                                          type: object
                                          x-kubernetes-preserve-unknown-fields: true
                                        type: array
                                      initContainers:
                                        items:
                                          required:
                                          - name
                                          type: object
                                          x-kubernetes-preserve-unknown-fields: true
                                        type: array
                                      mysqld:
                                        properties:
                                          configOverrides:
                                            type: string
                                          resources:
                                            properties:
                                              limits:
                                                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
                                                type: object
                                              requests:
                                                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
                                                type: object
                                            type: object
                                        required:
                                        - resources
                                        type: object
                                      replicas:
                                        format: int32
                                        minimum: 0
                                        type: integer
                                      sidecarContainers:
                                        items:
                                          required:
                                          - name
                                          type: object
                                          x-kubernetes-preserve-unknown-fields: true
                                        type: array
                                      tolerations:
                                        items:
                                          type: object
                                          x-kubernetes-preserve-unknown-fields: true
                                        type: array
                                      topologySpreadConstraints:
                                        items:
                                          required:
                                          - maxSkew
                                          - topologyKey
                                          - whenUnsatisfiable
                                          type: object
                                          x-kubernetes-preserve-unknown-fields: true
                                        type: array
                                      type:
                                        enum:
                                        - replica
                                        - rdonly
                                        - externalmaster
                                        - externalreplica
                                        - externalrdonly
                                        type: string
                                      vttablet:
                                        properties:
                                          extraFlags:
                                            additionalProperties:
                                              type: string
                                            type: object
                                          lifecycle:
                                            type: object
                                            x-kubernetes-preserve-unknown-fields: true
                                          resources:
                                            properties:
                                              limits:
                                                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
                                                type: object
                                              requests:
                                                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
                                                type: object
                                            type: object
                                        required:
                                        - resources
                                        type: object
                                    required:
                                    - cell
                                    - replicas
                                    - type
                                    - vttablet
                                    type: object
                                  type: array
                                  x-kubernetes-list-map-keys:
                                  - type
                                  - cell
                                  x-kubernetes-list-type: map
                              required:
                              - databaseInitScriptSecret
                              type: object
                          required:
                          - parts
                          type: object
                      type: object
                    maxItems: 2
                    minItems: 1
                    type: array
                  turndownPolicy:
                    enum:
                    - RequireIdle
                    - Immediate
                    type: string
                  vitessOrchestrator:
                    properties:
                      affinity:
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      annotations:
                        additionalProperties:
                          type: string
                        type: object
                      configSecret:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                          volumeName:
                            type: string
                        required:
                        - key
                        type: object
                      extraEnv:
                        items:
                          properties:
                            name:
                              type: string
                            value:
                              type: string
                            valueFrom:
                              properties:
                                configMapKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                fieldRef:
                                  properties:
                                    apiVersion:
                                      type: string
                                    fieldPath:
                                      type: string
                                  required:
                                  - fieldPath
                                  type: object
                                resourceFieldRef:
                                  properties:
                                    containerName:
                                      type: string
                                    divisor:
                                      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
                                    resource:
                                      type: string
                                  required:
                                  - resource
                                  type: object
                                secretKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                      extraFlags:
                        additionalProperties:
                          type: string
                        type: object
                      extraLabels:
                        additionalProperties:
                          type: string
                        type: object
                      extraVolumeMounts:
                        items:
                          properties:
                            mountPath:
                              type: string
                            mountPropagation:
                              type: string
                            name:
                              type: string
                            readOnly:
                              type: boolean
                            subPath:
                              type: string
                            subPathExpr:
                              type: string
                          required:
                          - mountPath
                          - name
                          type: object
                        type: array
                      extraVolumes:
                        items:
                          required:
                          - name
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        type: array
                      initContainers:
                        items:
                          required:
                          - name
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        type: array
                      resources:
                        properties:
                          limits:
                            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
                            type: object
                          requests:
                            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
                            type: object
                        type: object
                      service:
                        properties:
                          annotations:
                            additionalProperties:
                              type: string
                            type: object
                          clusterIP:
                            type: string
                        type: object
                      sidecarContainers:
                        items:
                          required:
                          - name
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        type: array
                      tolerations:
                        items:
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        type: array
                    required:
                    - configSecret
                    type: object
                required:
                - name
                - partitionings
                type: object
              type: array
            tabletService:
              properties:
                annotations:
                  additionalProperties:
                    type: string
                  type: object
                clusterIP:
                  type: string
              type: object
            topologyReconciliation:
              properties:
                pruneCells:
                  type: boolean
                pruneKeyspaces:
                  type: boolean
                pruneShardCells:
                  type: boolean
                pruneShards:
                  type: boolean
                pruneSrvKeyspaces:
                  type: boolean
                pruneTablets:
                  type: boolean
                registerCells:
                  type: boolean
                registerCellsAliases:
                  type: boolean
              type: object
            updateStrategy:
              properties:
                external:
                  properties:
                    allowResourceChanges:
                      items:
                        type: string
                      type: array
                  type: object
                type:
                  enum:
                  - External
                  - Immediate
                  type: string
              type: object
            vitessDashboard:
              properties:
                affinity:
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                annotations:
                  additionalProperties:
                    type: string
                  type: object
                cells:
                  items:
                    type: string
                  type: array
                extraEnv:
                  items:
                    properties:
                      name:
                        type: string
                      value:
                        type: string
                      valueFrom:
                        properties:
                          configMapKeyRef:
                            properties:
                              key:
                                type: string
                              name:
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                          fieldRef:
                            properties:
                              apiVersion:
                                type: string
                              fieldPath:
                                type: string
                            required:
                            - fieldPath
                            type: object
                          resourceFieldRef:
                            properties:
                              containerName:
                                type: string
                              divisor:
                                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
                              resource:
                                type: string
                            required:
                            - resource
                            type: object
                          secretKeyRef:
                            properties:
                              key:
                                type: string
                              name:
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                        type: object
                    required:
                    - name
                    type: object
                  type: array
                extraFlags:
                  additionalProperties:
                    type: string
                  type: object
                extraLabels:
                  additionalProperties:
                    type: string
                  type: object
                extraVolumeMounts:
                  items:
                    properties:
                      mountPath:
                        type: string
                      mountPropagation:
                        type: string
                      name:
                        type: string
                      readOnly:
                        type: boolean
                      subPath:
                        type: string
                      subPathExpr:
                        type: string
                    required:
                    - mountPath
                    - name
                    type: object
                  type: array
                extraVolumes:
                  items:
                    required:
                    - name
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
                initContainers:
                  items:
                    required:
                    - name
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
                replicas:
                  format: int32
                  type: integer
                resources:
                  properties:
                    limits:
                      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
                      type: object
                    requests:
                      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
                      type: object
                  type: object
                service:
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      type: object
                    clusterIP:
                      type: string
                  type: object
                sidecarContainers:
                  items:
                    required:
                    - name
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
                tolerations:
                  items:
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
              type: object
          required:
          - cells
          type: object
        status:
          properties:
            cells:
              additionalProperties:
                properties:
                  gatewayAvailable:
                    type: string
                  pendingChanges:
                    type: string
                type: object
              type: object
            gatewayServiceName:
              type: string
            globalLockserver:
              properties:
                etcd:
                  properties:
                    available:
                      type: string
                    clientServiceName:
                      type: string
                    observedGeneration:
                      format: int64
                      type: integer
                  type: object
              type: object
            keyspaces:
              additionalProperties:
                properties:
                  cells:
                    items:
                      type: string
                    type: array
                  desiredShards:
                    format: int32
                    type: integer
                  desiredTablets:
                    format: int32
                    type: integer
                  pendingChanges:
                    type: string
                  readyShards:
                    format: int32
                    type: integer
                  readyTablets:
                    format: int32
                    type: integer
                  shards:
                    format: int32
                    type: integer
                  tablets:
                    format: int32
                    type: integer
                  updatedShards:
                    format: int32
                    type: integer
                  updatedTablets:
                    format: int32
                    type: integer
                type: object
              type: object
            observedGeneration:
              format: int64
              type: integer
            orphanedCells:
              additionalProperties:
                properties:
                  message:
                    type: string
                  reason:
                    type: string
                required:
                - message
                - reason
                type: object
              type: object
            orphanedKeyspaces:
              additionalProperties:
                properties:
                  message:
                    type: string
                  reason:
                    type: string
                required:
                - message
                - reason
                type: object
              type: object
            vitessDashboard:
              properties:
                available:
                  type: string
                serviceName:
                  type: string
              type: object
          type: object
      type: object
  version: v2
  versions:
  - name: v2
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.3.0
  creationTimestamp: null
  name: vitesskeyspaces.planetscale.com
spec:
  group: planetscale.com
  names:
    kind: VitessKeyspace
    listKind: VitessKeyspaceList
    plural: vitesskeyspaces
    shortNames:
    - vtk
    singular: vitesskeyspace
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      properties:
        apiVersion:
          type: string
        kind:
          type: string
        metadata:
          type: object
        spec:
          properties:
            annotations:
              additionalProperties:
                type: string
              type: object
            backupEngine:
              type: string
            backupLocations:
              items:
                properties:
                  annotations:
                    additionalProperties:
                      type: string
                    type: object
                  azblob:
                    properties:
                      account:
                        minLength: 1
                        type: string
                      authSecret:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                          volumeName:
                            type: string
                        required:
                        - key
                        type: object
                      container:
                        minLength: 1
                        type: string
                      keyPrefix:
                        maxLength: 256
                        pattern: ^[^\r\n]*$
                        type: string
                    required:
                    - account
                    - authSecret
                    - container
                    type: object
                  ceph:
                    properties:
                      authSecret:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                          volumeName:
                            type: string
                        required:
                        - key
                        type: object
                    required:
                    - authSecret
                    type: object
                  gcs:
                    properties:
                      authSecret:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                          volumeName:
                            type: string
                        required:
                        - key
                        type: object
                      bucket:
                        minLength: 1
                        type: string
                      keyPrefix:
                        maxLength: 256
                        pattern: ^[^\r\n]*$
                        type: string
                    required:
                    - bucket
                    type: object
                  name:
                    maxLength: 63
                    pattern: ^[A-Za-z0-9]([A-Za-z0-9-_.]*[A-Za-z0-9])?$
                    type: string
                  s3:
                    properties:
                      authSecret:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                          volumeName:
                            type: string
                        required:
                        - key
                        type: object
                      bucket:
                        minLength: 1
                        type: string
                      endpoint:
                        type: string
                      keyPrefix:
                        maxLength: 256
                        pattern: ^[^\r\n]*$
                        type: string
                      region:
                        minLength: 1
                        type: string
                    required:
                    - bucket
                    - region
                    type: object
                  volume:
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  volumeSubPath:
                    type: string
                type: object
              type: array
            databaseName:
              type: string
            extraVitessFlags:
              additionalProperties:
                type: string
              type: object
            globalLockserver:
              properties:
                address:
                  type: string
                implementation:
                  type: string
                rootPath:
                  type: string
              required:
              - address
              - implementation
              - rootPath
              type: object
            imagePullPolicies:
              properties:
                mysqld:
                  type: string
                mysqldExporter:
                  type: string
                vtbackup:
                  type: string
                vtctld:
                  type: string
                vtgate:
                  type: string
                vtorc:
                  type: string
                vttablet:
                  type: string
              type: object
            imagePullSecrets:
              items:
                properties:
                  name:
                    type: string
                type: object
              type: array
            images:
              properties:
                mysqld:
                  properties:
                    mariadb103Compatible:
                      type: string
                    mariadbCompatible:
                      type: string
                    mysql56Compatible:
                      type: string
                    mysql80Compatible:
                      type: string
                  type: object
                mysqldExporter:
                  type: string
                vtbackup:
                  type: string
                vtorc:
                  type: string
                vttablet:
                  type: string
              type: object
            name:
              maxLength: 63
              minLength: 1
              pattern: ^[A-Za-z0-9]([A-Za-z0-9-_.]*[A-Za-z0-9])?$
              type: string
            partitionings:
              items:
                properties:
                  custom:
                    properties:
                      shards:
                        items:
                          properties:
                            annotations:
                              additionalProperties:
                                type: string
                              type: object
                            databaseInitScriptSecret:
                              properties:
                                key:
                                  type: string
                                name:
                                  type: string
                                volumeName:
                                  type: string
                              required:
                              - key
                              type: object
                            keyRange:
                              properties:
                                end:
                                  pattern: ^([0-9a-f][0-9a-f])*$
                                  type: string
                                start:
                                  pattern: ^([0-9a-f][0-9a-f])*$
                                  type: string
                              type: object
                            replication:
                              properties:
                                enforceSemiSync:
                                  type: boolean
                                initializeBackup:
                                  type: boolean
                                initializeMaster:
                                  type: boolean
                                recoverRestartedMaster:
                                  type: boolean
                              type: object
                            tabletPools:
                              items:
                                properties:
                                  affinity:
                                    type: object
                                    x-kubernetes-preserve-unknown-fields: true
                                  annotations:
                                    additionalProperties:
                                      type: string
                                    type: object
                                  backupLocationName:
                                    type: string
                                  cell:
                                    maxLength: 63
                                    minLength: 1
                                    pattern: ^[A-Za-z0-9]([_.A-Za-z0-9]*[A-Za-z0-9])?$
                                    type: string
                                  dataVolumeClaimTemplate:
                                    properties:
                                      accessModes:
                                        items:
                                          type: string
                                        type: array
                                      resources:
                                        properties:
                                          limits:
                                            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
                                            type: object
                                          requests:
                                            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
                                            type: object
                                        type: object
                                      selector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                              required:
                                              - key
                                              - operator
                                              type: object
                                            type: array
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                      storageClassName:
                                        type: string
                                      volumeMode:
                                        type: string
                                      volumeName:
                                        type: string
                                    type: object
                                  externalDatastore:
                                    properties:
                                      credentialsSecret:
                                        properties:
                                          key:
                                            type: string
                                          name:
                                            type: string
                                          volumeName:
                                            type: string
                                        required:
                                        - key
                                        type: object
                                      database:
                                        type: string
                                      host:
                                        type: string
                                      port:
                                        format: int32
                                        maximum: 65535
                                        minimum: 1
                                        type: integer
                                      serverCACertSecret:
                                        properties:
                                          key:
                                            type: string
                                          name:
                                            type: string
                                          volumeName:
                                            type: string
                                        required:
                                        - key
                                        type: object
                                      user:
                                        type: string
                                    required:
                                    - credentialsSecret
                                    - database
                                    - host
                                    - port
                                    - user
                                    type: object
                                  extraEnv:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                        valueFrom:
                                          properties:
                                            configMapKeyRef:
                                              properties:
                                                key:
                                                  type: string
                                                name:
                                                  type: string
                                                optional:
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                            fieldRef:
                                              properties:
                                                apiVersion:
                                                  type: string
                                                fieldPath:
                                                  type: string
                                              required:
                                              - fieldPath
                                              type: object
                                            resourceFieldRef:
                                              properties:
                                                containerName:
                                                  type: string
                                                divisor:
                                                  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
                                                resource:
                                                  type: string
                                              required:
                                              - resource
                                              type: object
                                            secretKeyRef:
                                              properties:
                                                key:
                                                  type: string
                                                name:
                                                  type: string
                                                optional:
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                          type: object
                                      required:
                                      - name
                                      type: object
                                    type: array
                                  extraLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                  extraVolumeMounts:
                                    items:
                                      properties:
                                        mountPath:
                                          type: string
                                        mountPropagation:
                                          type: string
                                        name:
                                          type: string
                                        readOnly:
                                          type: boolean
                                        subPath:
                                          type: string
                                        subPathExpr:
                                          type: string
                                      required:
                                      - mountPath
                                      - name
                                      type: object
                                    type: array
                                  extraVolumes:
                                    items:
                                      required:
                                      - name
                                      type: object
                                      x-kubernetes-preserve-unknown-fields: true
                                    type: array
                                  initContainers:
                                    items:
                                      required:
                                      - name
                                      type: object
                                      x-kubernetes-preserve-unknown-fields: true
                                    type: array
                                  mysqld:
                                    properties:
                                      configOverrides:
                                        type: string
                                      resources:
                                        properties:
                                          limits:
                                            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
                                            type: object
                                          requests:
                                            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
                                            type: object
                                        type: object
                                    required:
                                    - resources
                                    type: object
                                  replicas:
                                    format: int32
                                    minimum: 0
                                    type: integer
                                  sidecarContainers:
                                    items:
                                      required:
                                      - name
                                      type: object
                                      x-kubernetes-preserve-unknown-fields: true
                                    type: array
                                  tolerations:
                                    items:
                                      type: object
                                      x-kubernetes-preserve-unknown-fields: true
                                    type: array
                                  topologySpreadConstraints:
                                    items:
                                      required:
                                      - maxSkew
                                      - topologyKey
                                      - whenUnsatisfiable
                                      type: object
                                      x-kubernetes-preserve-unknown-fields: true
                                    type: array
                                  type:
                                    enum:
                                    - replica
                                    - rdonly
                                    - externalmaster
                                    - externalreplica
                                    - externalrdonly
                                    type: string
                                  vttablet:
                                    properties:
                                      extraFlags:
                                        additionalProperties:
                                          type: string
                                        type: object
                                      lifecycle:
                                        type: object
                                        x-kubernetes-preserve-unknown-fields: true
                                      resources:
                                        properties:
                                          limits:
                                            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
                                            type: object
                                          requests:
                                            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
                                            type: object
                                        type: object
                                    required:
                                    - resources
                                    type: object
                                required:
                                - cell
                                - replicas
                                - type
                                - vttablet
                                type: object
                              type: array
                              x-kubernetes-list-map-keys:
                              - type
                              - cell
                              x-kubernetes-list-type: map
                          required:
                          - databaseInitScriptSecret
                          - keyRange
                          type: object
                        type: array
                    required:
                    - shards
                    type: object
                  equal:
                    properties:
                      parts:
                        format: int32
                        minimum: 1
                        type: integer
                      shardTemplate:
                        properties:
                          annotations:
                            additionalProperties:
                              type: string
                            type: object
                          databaseInitScriptSecret:
                            properties:
                              key:
                                type: string
                              name:
                                type: string
                              volumeName:
                                type: string
                            required:
                            - key
                            type: object
                          replication:
                            properties:
                              enforceSemiSync:
                                type: boolean
                              initializeBackup:
                                type: boolean
                              initializeMaster:
                                type: boolean
                              recoverRestartedMaster:
                                type: boolean
                            type: object
                          tabletPools:
                            items:
                              properties:
                                affinity:
                                  type: object
                                  x-kubernetes-preserve-unknown-fields: true
                                annotations:
                                  additionalProperties:
                                    type: string
                                  type: object
                                backupLocationName:
                                  type: string
                                cell:
                                  maxLength: 63
                                  minLength: 1
                                  pattern: ^[A-Za-z0-9]([_.A-Za-z0-9]*[A-Za-z0-9])?$
                                  type: string
                                dataVolumeClaimTemplate:
                                  properties:
                                    accessModes:
                                      items:
                                        type: string
                                      type: array
                                    resources:
                                      properties:
                                        limits:
                                          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
                                          type: object
                                        requests:
                                          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
                                          type: object
                                      type: object
                                    selector:
                                      properties:
                                        matchExpressions:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              operator:
                                                type: string
                                              values:
                                                items:
                                                  type: string
                                                type: array
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          type: object
                                      type: object
                                    storageClassName:
                                      type: string
                                    volumeMode:
                                      type: string
                                    volumeName:
                                      type: string
                                  type: object
                                externalDatastore:
                                  properties:
                                    credentialsSecret:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          type: string
                                        volumeName:
                                          type: string
                                      required:
                                      - key
                                      type: object
                                    database:
                                      type: string
                                    host:
                                      type: string
                                    port:
                                      format: int32
                                      maximum: 65535
                                      minimum: 1
                                      type: integer
                                    serverCACertSecret:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          type: string
                                        volumeName:
                                          type: string
                                      required:
                                      - key
                                      type: object
                                    user:
                                      type: string
                                  required:
                                  - credentialsSecret
                                  - database
                                  - host
                                  - port
                                  - user
                                  type: object
                                extraEnv:
                                  items:
                                    properties:
                                      name:
                                        type: string
                                      value:
                                        type: string
                                      valueFrom:
                                        properties:
                                          configMapKeyRef:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                          fieldRef:
                                            properties:
                                              apiVersion:
                                                type: string
                                              fieldPath:
                                                type: string
                                            required:
                                            - fieldPath
                                            type: object
                                          resourceFieldRef:
                                            properties:
                                              containerName:
                                                type: string
                                              divisor:
                                                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
                                              resource:
                                                type: string
                                            required:
                                            - resource
                                            type: object
                                          secretKeyRef:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                        type: object
                                    required:
                                    - name
                                    type: object
                                  type: array
                                extraLabels:
                                  additionalProperties:
                                    type: string
                                  type: object
                                extraVolumeMounts:
                                  items:
                                    properties:
                                      mountPath:
                                        type: string
                                      mountPropagation:
                                        type: string
                                      name:
                                        type: string
                                      readOnly:
                                        type: boolean
                                      subPath:
                                        type: string
                                      subPathExpr:
                                        type: string
                                    required:
                                    - mountPath
                                    - name
                                    type: object
                                  type: array
                                extraVolumes:
                                  items:
                                    required:
                                    - name
                                    type: object
                                    x-kubernetes-preserve-unknown-fields: true
                                  type: array
                                initContainers:
                                  items:
                                    required:
                                    - name
                                    type: object
                                    x-kubernetes-preserve-unknown-fields: true
                                  type: array
                                mysqld:
                                  properties:
                                    configOverrides:
                                      type: string
                                    resources:
                                      properties:
                                        limits:
                                          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
                                          type: object
                                        requests:
                                          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
                                          type: object
                                      type: object
                                  required:
                                  - resources
                                  type: object
                                replicas:
                                  format: int32
                                  minimum: 0
                                  type: integer
                                sidecarContainers:
                                  items:
                                    required:
                                    - name
                                    type: object
                                    x-kubernetes-preserve-unknown-fields: true
                                  type: array
                                tolerations:
                                  items:
                                    type: object
                                    x-kubernetes-preserve-unknown-fields: true
                                  type: array
                                topologySpreadConstraints:
                                  items:
                                    required:
                                    - maxSkew
                                    - topologyKey
                                    - whenUnsatisfiable
                                    type: object
                                    x-kubernetes-preserve-unknown-fields: true
                                  type: array
                                type:
                                  enum:
                                  - replica
                                  - rdonly
                                  - externalmaster
                                  - externalreplica
                                  - externalrdonly
                                  type: string
                                vttablet:
                                  properties:
                                    extraFlags:
                                      additionalProperties:
                                        type: string
                                      type: object
                                    lifecycle:
                                      type: object
                                      x-kubernetes-preserve-unknown-fields: true
                                    resources:
                                      properties:
                                        limits:
                                          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
                                          type: object
                                        requests:
                                          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
                                          type: object
                                      type: object
                                  required:
                                  - resources
                                  type: object
                              required:
                              - cell
                              - replicas
                              - type
                              - vttablet
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - type
                            - cell
                            x-kubernetes-list-type: map
                        required:
                        - databaseInitScriptSecret
                        type: object
                    required:
                    - parts
                    type: object
                type: object
              maxItems: 2
              minItems: 1
              type: array
            topologyReconciliation:
              properties:
                pruneCells:
                  type: boolean
                pruneKeyspaces:
                  type: boolean
                pruneShardCells:
                  type: boolean
                pruneShards:
                  type: boolean
                pruneSrvKeyspaces:
                  type: boolean
                pruneTablets:
                  type: boolean
                registerCells:
                  type: boolean
                registerCellsAliases:
                  type: boolean
              type: object
            turndownPolicy:
              enum:
              - RequireIdle
              - Immediate
              type: string
            updateStrategy:
              properties:
                external:
                  properties:
                    allowResourceChanges:
                      items:
                        type: string
                      type: array
                  type: object
                type:
                  enum:
                  - External
                  - Immediate
                  type: string
              type: object
            vitessOrchestrator:
              properties:
                affinity:
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                annotations:
                  additionalProperties:
                    type: string
                  type: object
                configSecret:
                  properties:
                    key:
                      type: string
                    name:
                      type: string
                    volumeName:
                      type: string
                  required:
                  - key
                  type: object
                extraEnv:
                  items:
                    properties:
                      name:
                        type: string
                      value:
                        type: string
                      valueFrom:
                        properties:
                          configMapKeyRef:
                            properties:
                              key:
                                type: string
                              name:
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                          fieldRef:
                            properties:
                              apiVersion:
                                type: string
                              fieldPath:
                                type: string
                            required:
                            - fieldPath
                            type: object
                          resourceFieldRef:
                            properties:
                              containerName:
                                type: string
                              divisor:
                                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
                              resource:
                                type: string
                            required:
                            - resource
                            type: object
                          secretKeyRef:
                            properties:
                              key:
                                type: string
                              name:
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                        type: object
                    required:
                    - name
                    type: object
                  type: array
                extraFlags:
                  additionalProperties:
                    type: string
                  type: object
                extraLabels:
                  additionalProperties:
                    type: string
                  type: object
                extraVolumeMounts:
                  items:
                    properties:
                      mountPath:
                        type: string
                      mountPropagation:
                        type: string
                      name:
                        type: string
                      readOnly:
                        type: boolean
                      subPath:
                        type: string
                      subPathExpr:
                        type: string
                    required:
                    - mountPath
                    - name
                    type: object
                  type: array
                extraVolumes:
                  items:
                    required:
                    - name
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
                initContainers:
                  items:
                    required:
                    - name
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
                resources:
                  properties:
                    limits:
                      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
                      type: object
                    requests:
                      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
                      type: object
                  type: object
                service:
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      type: object
                    clusterIP:
                      type: string
                  type: object
                sidecarContainers:
                  items:
                    required:
                    - name
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
                tolerations:
                  items:
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
              required:
              - configSecret
              type: object
            zoneMap:
              additionalProperties:
                type: string
              type: object
          required:
          - globalLockserver
          - name
          - partitionings
          - zoneMap
          type: object
        status:
          properties:
            conditions:
              items:
                properties:
                  lastTransitionTime:
                    format: date-time
                    type: string
                  message:
                    type: string
                  reason:
                    type: string
                  status:
                    enum:
                    - "True"
                    - "False"
                    - Unknown
                    type: string
                  type:
                    type: string
                required:
                - status
                - type
                type: object
              type: array
            idle:
              type: string
            observedGeneration:
              format: int64
              type: integer
            orphanedShards:
              additionalProperties:
                properties:
                  message:
                    type: string
                  reason:
                    type: string
                required:
                - message
                - reason
                type: object
              type: object
            partitionings:
              items:
                properties:
                  desiredShards:
                    format: int32
                    type: integer
                  desiredTablets:
                    format: int32
                    type: integer
                  readyShards:
                    format: int32
                    type: integer
                  readyTablets:
                    format: int32
                    type: integer
                  servingWrites:
                    type: string
                  shardNames:
                    items:
                      type: string
                    type: array
                  tablets:
                    format: int32
                    type: integer
                  updatedTablets:
                    format: int32
                    type: integer
                type: object
              type: array
            resharding:
              properties:
                copyProgress:
                  type: integer
                sourceShards:
                  items:
                    type: string
                  type: array
                state:
                  type: string
                targetShards:
                  items:
                    type: string
                  type: array
                workflow:
                  type: string
              required:
              - state
              - workflow
              type: object
            shards:
              additionalProperties:
                properties:
                  cells:
                    items:
                      type: string
                    type: array
                  desiredTablets:
                    format: int32
                    type: integer
                  hasMaster:
                    type: string
                  pendingChanges:
                    type: string
                  readyTablets:
                    format: int32
                    type: integer
                  servingWrites:
                    type: string
                  tablets:
                    format: int32
                    type: integer
                  updatedTablets:
                    format: int32
                    type: integer
                type: object
              type: object
          type: object
      type: object
  version: v2
  versions:
  - name: v2
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.3.0
  creationTimestamp: null
  name: vitessshards.planetscale.com
spec:
  group: planetscale.com
  names:
    kind: VitessShard
    listKind: VitessShardList
    plural: vitessshards
    shortNames:
    - vts
    singular: vitessshard
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      properties:
        apiVersion:
          type: string
        kind:
          type: string
        metadata:
          type: object
        spec:
          properties:
            annotations:
              additionalProperties:
                type: string
              type: object
            backupEngine:
              type: string
            backupLocations:
              items:
                properties:
                  annotations:
                    additionalProperties:
                      type: string
                    type: object
                  azblob:
                    properties:
                      account:
                        minLength: 1
                        type: string
                      authSecret:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                          volumeName:
                            type: string
                        required:
                        - key
                        type: object
                      container:
                        minLength: 1
                        type: string
                      keyPrefix:
                        maxLength: 256
                        pattern: ^[^\r\n]*$
                        type: string
                    required:
                    - account
                    - authSecret
                    - container
                    type: object
                  ceph:
                    properties:
                      authSecret:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                          volumeName:
                            type: string
                        required:
                        - key
                        type: object
                    required:
                    - authSecret
                    type: object
                  gcs:
                    properties:
                      authSecret:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                          volumeName:
                            type: string
                        required:
                        - key
                        type: object
                      bucket:
                        minLength: 1
                        type: string
                      keyPrefix:
                        maxLength: 256
                        pattern: ^[^\r\n]*$
                        type: string
                    required:
                    - bucket
                    type: object
                  name:
                    maxLength: 63
                    pattern: ^[A-Za-z0-9]([A-Za-z0-9-_.]*[A-Za-z0-9])?$
                    type: string
                  s3:
                    properties:
                      authSecret:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                          volumeName:
                            type: string
                        required:
                        - key
                        type: object
                      bucket:
                        minLength: 1
                        type: string
                      endpoint:
                        type: string
                      keyPrefix:
                        maxLength: 256
                        pattern: ^[^\r\n]*$
                        type: string
                      region:
                        minLength: 1
                        type: string
                    required:
                    - bucket
                    - region
                    type: object
                  volume:
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  volumeSubPath:
                    type: string
                type: object
              type: array
            databaseInitScriptSecret:
              properties:
                key:
                  type: string
                name:
                  type: string
                volumeName:
                  type: string
              required:
              - key
              type: object
            databaseName:
              type: string
            extraVitessFlags:
              additionalProperties:
                type: string
              type: object
            globalLockserver:
              properties:
                address:
                  type: string
                implementation:
                  type: string
                rootPath:
                  type: string
              required:
              - address
              - implementation
              - rootPath
              type: object
            imagePullPolicies:
              properties:
                mysqld:
                  type: string
                mysqldExporter:
                  type: string
                vtbackup:
                  type: string
                vtctld:
                  type: string
                vtgate:
                  type: string
                vtorc:
                  type: string
                vttablet:
                  type: string
              type: object
            imagePullSecrets:
              items:
                properties:
                  name:
                    type: string
                type: object
              type: array
            images:
              properties:
                mysqld:
                  properties:
                    mariadb103Compatible:
                      type: string
                    mariadbCompatible:
                      type: string
                    mysql56Compatible:
                      type: string
                    mysql80Compatible:
                      type: string
                  type: object
                mysqldExporter:
                  type: string
                vtbackup:
                  type: string
                vtorc:
                  type: string
                vttablet:
                  type: string
              type: object
            keyRange:
              properties:
                end:
                  pattern: ^([0-9a-f][0-9a-f])*$
                  type: string
                start:
                  pattern: ^([0-9a-f][0-9a-f])*$
                  type: string
              type: object
            name:
              type: string
            replication:
              properties:
                enforceSemiSync:
                  type: boolean
                initializeBackup:
                  type: boolean
                initializeMaster:
                  type: boolean
                recoverRestartedMaster:
                  type: boolean
              type: object
            tabletPools:
              items:
                properties:
                  affinity:
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  annotations:
                    additionalProperties:
                      type: string
                    type: object
                  backupLocationName:
                    type: string
                  cell:
                    maxLength: 63
                    minLength: 1
                    pattern: ^[A-Za-z0-9]([_.A-Za-z0-9]*[A-Za-z0-9])?$
                    type: string
                  dataVolumeClaimTemplate:
                    properties:
                      accessModes:
                        items:
                          type: string
                        type: array
                      resources:
                        properties:
                          limits:
                            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
                            type: object
                          requests:
                            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
                            type: object
                        type: object
                      selector:
                        properties:
                          matchExpressions:
                            items:
                              properties:
                                key:
                                  type: string
                                operator:
                                  type: string
                                values:
                                  items:
                                    type: string
                                  type: array
                              required:
                              - key
                              - operator
                              type: object
                            type: array
                          matchLabels:
                            additionalProperties:
                              type: string
                            type: object
                        type: object
                      storageClassName:
                        type: string
                      volumeMode:
                        type: string
                      volumeName:
                        type: string
                    type: object
                  externalDatastore:
                    properties:
                      credentialsSecret:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                          volumeName:
                            type: string
                        required:
                        - key
                        type: object
                      database:
                        type: string
                      host:
                        type: string
                      port:
                        format: int32
                        maximum: 65535
                        minimum: 1
                        type: integer
                      serverCACertSecret:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                          volumeName:
                            type: string
                        required:
                        - key
                        type: object
                      user:
                        type: string
                    required:
                    - credentialsSecret
                    - database
                    - host
                    - port
                    - user
                    type: object
                  extraEnv:
                    items:
                      properties:
                        name:
                          type: string
                        value:
                          type: string
                        valueFrom:
                          properties:
                            configMapKeyRef:
                              properties:
                                key:
                                  type: string
                                name:
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                            fieldRef:
                              properties:
                                apiVersion:
                                  type: string
                                fieldPath:
                                  type: string
                              required:
                              - fieldPath
                              type: object
                            resourceFieldRef:
                              properties:
                                containerName:
                                  type: string
                                divisor:
                                  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
                                resource:
                                  type: string
                              required:
                              - resource
                              type: object
                            secretKeyRef:
                              properties:
                                key:
                                  type: string
                                name:
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                          type: object
                      required:
                      - name
                      type: object
                    type: array
                  extraLabels:
                    additionalProperties:
                      type: string
                    type: object
                  extraVolumeMounts:
                    items:
                      properties:
                        mountPath:
                          type: string
                        mountPropagation:
                          type: string
                        name:
                          type: string
                        readOnly:
                          type: boolean
                        subPath:
                          type: string
                        subPathExpr:
                          type: string
                      required:
                      - mountPath
                      - name
                      type: object
                    type: array
                  extraVolumes:
                    items:
                      required:
                      - name
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    type: array
                  initContainers:
                    items:
                      required:
                      - name
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    type: array
                  mysqld:
                    properties:
                      configOverrides:
                        type: string
                      resources:
                        properties:
                          limits:
                            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
                            type: object
                          requests:
                            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
                            type: object
                        type: object
                    required:
                    - resources
                    type: object
                  replicas:
                    format: int32
                    minimum: 0
                    type: integer
                  sidecarContainers:
                    items:
                      required:
                      - name
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    type: array
                  tolerations:
                    items:
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    type: array
                  topologySpreadConstraints:
                    items:
                      required:
                      - maxSkew
                      - topologyKey
                      - whenUnsatisfiable
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    type: array
                  type:
                    enum:
                    - replica
                    - rdonly
                    - externalmaster
                    - externalreplica
                    - externalrdonly
                    type: string
                  vttablet:
                    properties:
                      extraFlags:
                        additionalProperties:
                          type: string
                        type: object
                      lifecycle:
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      resources:
                        properties:
                          limits:
                            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
                            type: object
                          requests:
                            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
                            type: object
                        type: object
                    required:
                    - resources
                    type: object
                required:
                - cell
                - replicas
                - type
                - vttablet
                type: object
              type: array
              x-kubernetes-list-map-keys:
              - type
              - cell
              x-kubernetes-list-type: map
            topologyReconciliation:
              properties:
                pruneCells:
                  type: boolean
                pruneKeyspaces:
                  type: boolean
                pruneShardCells:
                  type: boolean
                pruneShards:
                  type: boolean
                pruneSrvKeyspaces:
                  type: boolean
                pruneTablets:
                  type: boolean
                registerCells:
                  type: boolean
                registerCellsAliases:
                  type: boolean
              type: object
            updateStrategy:
              properties:
                external:
                  properties:
                    allowResourceChanges:
                      items:
                        type: string
                      type: array
                  type: object
                type:
                  enum:
                  - External
                  - Immediate
                  type: string
              type: object
            vitessOrchestrator:
              properties:
                affinity:
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                annotations:
                  additionalProperties:
                    type: string
                  type: object
                configSecret:
                  properties:
                    key:
                      type: string
                    name:
                      type: string
                    volumeName:
                      type: string
                  required:
                  - key
                  type: object
                extraEnv:
                  items:
                    properties:
                      name:
                        type: string
                      value:
                        type: string
                      valueFrom:
                        properties:
                          configMapKeyRef:
                            properties:
                              key:
                                type: string
                              name:
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                          fieldRef:
                            properties:
                              apiVersion:
                                type: string
                              fieldPath:
                                type: string
                            required:
                            - fieldPath
                            type: object
                          resourceFieldRef:
                            properties:
                              containerName:
                                type: string
                              divisor:
                                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
                              resource:
                                type: string
                            required:
                            - resource
                            type: object
                          secretKeyRef:
                            properties:
                              key:
                                type: string
                              name:
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                        type: object
                    required:
                    - name
                    type: object
                  type: array
                extraFlags:
                  additionalProperties:
                    type: string
                  type: object
                extraLabels:
                  additionalProperties:
                    type: string
                  type: object
                extraVolumeMounts:
                  items:
                    properties:
                      mountPath:
                        type: string
                      mountPropagation:
                        type: string
                      name:
                        type: string
                      readOnly:
                        type: boolean
                      subPath:
                        type: string
                      subPathExpr:
                        type: string
                    required:
                    - mountPath
                    - name
                    type: object
                  type: array
                extraVolumes:
                  items:
                    required:
                    - name
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
                initContainers:
                  items:
                    required:
                    - name
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
                resources:
                  properties:
                    limits:
                      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
                      type: object
                    requests:
                      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
                      type: object
                  type: object
                service:
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      type: object
                    clusterIP:
                      type: string
                  type: object
                sidecarContainers:
                  items:
                    required:
                    - name
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
                tolerations:
                  items:
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
              required:
              - configSecret
              type: object
            zoneMap:
              additionalProperties:
                type: string
              type: object
          required:
          - databaseInitScriptSecret
          - globalLockserver
          - images
          - keyRange
          - name
          - zoneMap
          type: object
        status:
          properties:
            backupLocations:
              items:
                properties:
                  completeBackups:
                    format: int32
                    type: integer
                  incompleteBackups:
                    format: int32
                    type: integer
                  latestCompleteBackupTime:
                    format: date-time
                    type: string
                  name:
                    type: string
                required:
                - completeBackups
                - incompleteBackups
                type: object
              type: array
            cells:
              items:
                type: string
              type: array
            conditions:
              additionalProperties:
                properties:
                  lastTransitionTime:
                    format: date-time
                    type: string
                  message:
                    type: string
                  reason:
                    type: string
                  status:
                    enum:
                    - "True"
                    - "False"
                    - Unknown
                    type: string
                required:
                - status
                type: object
              type: object
            hasInitialBackup:
              type: string
            hasMaster:
              type: string
            idle:
              type: string
            lowestPodGeneration:
              format: int64
              type: integer
            masterAlias:
              type: string
            observedGeneration:
              format: int64
              type: integer
            orphanedTablets:
              additionalProperties:
                properties:
                  message:
                    type: string
                  reason:
                    type: string
                required:
                - message
                - reason
                type: object
              type: object
            servingWrites:
              type: string
            tablets:
              additionalProperties:
                properties:
                  available:
                    type: string
                  dataVolumeBound:
                    type: string
                  index:
                    format: int32
                    type: integer
                  pendingChanges:
                    type: string
                  poolType:
                    type: string
                  ready:
                    type: string
                  running:
                    type: string
                  type:
                    type: string
                type: object
              type: object
            vitessOrchestrator:
              properties:
                available:
                  type: string
                serviceName:
                  type: string
              type: object
          type: object
      type: object
  version: v2
  versions:
  - name: v2
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: vitess-operator
  namespace: operators-vitess-operator
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: vitess-operator
rules:
- apiGroups:
  - ""
  resources:
  - pods
  - services
  - endpoints
  - persistentvolumeclaims
  - events
  - configmaps
  - secrets
  verbs:
  - '*'
- apiGroups:
  - ""
  resources:
  - namespaces
  verbs:
  - get
- apiGroups:
  - apps
  resources:
  - deployments
  - daemonsets
  - replicasets
  - statefulsets
  verbs:
  - '*'
- apiGroups:
  - policy
  resources:
  - poddisruptionbudgets
  verbs:
  - '*'
- apiGroups:
  - apps
  resourceNames:
  - vitess-operator
  resources:
  - deployments/finalizers
  verbs:
  - update
- apiGroups:
  - planetscale.com
  resources:
  - vitessclusters
  - vitessclusters/status
  - vitessclusters/finalizers
  - vitesscells
  - vitesscells/status
  - vitesscells/finalizers
  - vitesskeyspaces
  - vitesskeyspaces/status
  - vitesskeyspaces/finalizers
  - vitessshards
  - vitessshards/status
  - vitessshards/finalizers
  - etcdlockservers
  - etcdlockservers/status
  - etcdlockservers/finalizers
  - vitessbackups
  - vitessbackups/status
  - vitessbackups/finalizers
  - vitessbackupstorages
  - vitessbackupstorages/status
  - vitessbackupstorages/finalizers
  verbs:
  - '*'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: vitess-operator
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: vitess-operator
subjects:
- kind: ServiceAccount
  name: vitess-operator
---
apiVersion: scheduling.k8s.io/v1beta1
description: Vitess components (vttablet, vtgate, vtctld, etcd)
globalDefault: false
kind: PriorityClass
metadata:
  name: vitess
value: 1000
---
apiVersion: scheduling.k8s.io/v1beta1
description: The vitess-operator control plane.
globalDefault: false
kind: PriorityClass
metadata:
  name: vitess-operator-control-plane
value: 5000
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: vitess-operator
  namespace: operators-vitess-operator
spec:
  replicas: 1
  selector:
    matchLabels:
      app: vitess-operator
  template:
    metadata:
      labels:
        app: vitess-operator
    spec:
      containers:
      - args:
        - --logtostderr
        - -v=4
        command:
        - vitess-operator
        env:
        - name: WATCH_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: PS_OPERATOR_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: PS_OPERATOR_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: OPERATOR_NAME
          value: vitess-operator
        image: planetscale/vitess-operator:v2.5.0
        name: vitess-operator
        resources:
          limits:
            memory: 128Mi
          requests:
            cpu: 100m
            memory: 128Mi
      priorityClassName: vitess-operator-control-plane
      serviceAccountName: vitess-operator

And that's my 101_initial_cluster.yaml:

# The following example is minimalist. The security policies
# and resource specifications are not meant to be used in production.
# Please refer to the operator documentation for recommendations on
# production settings.
apiVersion: planetscale.com/v2
kind: VitessCluster
metadata:
  name: example
  namespace: operators-vitess-example
spec:
  images:
    vtctld: vitess/lite:v12.0.0
    vtgate: vitess/lite:v12.0.0
    vttablet: vitess/lite:v12.0.0
    vtbackup: vitess/lite:v12.0.0
    mysqld:
      mysql56Compatible: vitess/lite:v12.0.0
    mysqldExporter: prom/mysqld-exporter:v0.11.0
  cells:
  - name: zone1
    gateway:
      authentication:
        static:
          secret:
            name: example-cluster-config
            key: users.json
      replicas: 1
      resources:
        requests:
          cpu: 100m
          memory: 256Mi
        limits:
          memory: 256Mi
  vitessDashboard:
    cells:
    - zone1
    extraFlags:
      security_policy: read-only
    replicas: 1
    resources:
      limits:
        memory: 128Mi
      requests:
        cpu: 100m
        memory: 128Mi

  keyspaces:
  - name: commerce
    turndownPolicy: Immediate
    partitionings:
    - equal:
        parts: 1
        shardTemplate:
          databaseInitScriptSecret:
            name: example-cluster-config
            key: init_db.sql
          replication:
            enforceSemiSync: false
          tabletPools:
          - cell: zone1
            type: replica
            replicas: 2
            vttablet:
              extraFlags:
                db_charset: utf8mb4
              resources:
                limits:
                  memory: 256Mi
                requests:
                  cpu: 100m
                  memory: 256Mi
            mysqld:
              resources:
                limits:
                  memory: 256Mi
                requests:
                  cpu: 100m
                  memory: 256Mi
            dataVolumeClaimTemplate:
              accessModes: ["ReadWriteOnce"]
              resources:
                requests:
                  storage: 10Gi
  updateStrategy:
    type: Immediate
---
apiVersion: v1
kind: Secret
metadata:
  name: example-cluster-config
  namespace: operators-vitess-example
type: Opaque
stringData:
  users.json: |
    {
      "user": [{
        "UserData": "user",
        "Password": ""
      }]
    }
  init_db.sql: |
    # This file is executed immediately after mysql_install_db,
    # to initialize a fresh data directory.

    ###############################################################################
    # Equivalent of mysql_secure_installation
    ###############################################################################

    # Changes during the init db should not make it to the binlog.
    # They could potentially create errant transactions on replicas.
    SET sql_log_bin = 0;
    # Remove anonymous users.
    DELETE FROM mysql.user WHERE User = '';

    # Disable remote root access (only allow UNIX socket).
    DELETE FROM mysql.user WHERE User = 'root' AND Host != 'localhost';

    # Remove test database.
    DROP DATABASE IF EXISTS test;

    ###############################################################################
    # Vitess defaults
    ###############################################################################

    # Vitess-internal database.
    CREATE DATABASE IF NOT EXISTS _vt;
    # Note that definitions of local_metadata and shard_metadata should be the same
    # as in production which is defined in go/vt/mysqlctl/metadata_tables.go.
    CREATE TABLE IF NOT EXISTS _vt.local_metadata (
      name VARCHAR(255) NOT NULL,
      value VARCHAR(255) NOT NULL,
      db_name VARBINARY(255) NOT NULL,
      PRIMARY KEY (db_name, name)
      ) ENGINE=InnoDB;
    CREATE TABLE IF NOT EXISTS _vt.shard_metadata (
      name VARCHAR(255) NOT NULL,
      value MEDIUMBLOB NOT NULL,
      db_name VARBINARY(255) NOT NULL,
      PRIMARY KEY (db_name, name)
      ) ENGINE=InnoDB;

    # Admin user with all privileges.
    CREATE USER 'vt_dba'@'localhost';
    GRANT ALL ON *.* TO 'vt_dba'@'localhost';
    GRANT GRANT OPTION ON *.* TO 'vt_dba'@'localhost';

    # User for app traffic, with global read-write access.
    CREATE USER 'vt_app'@'localhost';
    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, FILE,
      REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES,
      LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW,
      SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER
      ON *.* TO 'vt_app'@'localhost';

    # User for app debug traffic, with global read access.
    CREATE USER 'vt_appdebug'@'localhost';
    GRANT SELECT, SHOW DATABASES, PROCESS ON *.* TO 'vt_appdebug'@'localhost';

    # User for administrative operations that need to be executed as non-SUPER.
    # Same permissions as vt_app here.
    CREATE USER 'vt_allprivs'@'localhost';
    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, FILE,
      REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES,
      LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW,
      SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER
      ON *.* TO 'vt_allprivs'@'localhost';

    # User for slave replication connections.
    # TODO: Should we set a password on this since it allows remote connections?
    CREATE USER 'vt_repl'@'%';
    GRANT REPLICATION SLAVE ON *.* TO 'vt_repl'@'%';

    # User for Vitess filtered replication (binlog player).
    # Same permissions as vt_app.
    CREATE USER 'vt_filtered'@'localhost';
    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, FILE,
      REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES,
      LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW,
      SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER
      ON *.* TO 'vt_filtered'@'localhost';

    # User for Orchestrator (https://github.com/openark/orchestrator).
    # TODO: Reenable when the password is randomly generated.
    #CREATE USER 'orc_client_user'@'%' IDENTIFIED BY 'orc_client_user_password';
    #GRANT SUPER, PROCESS, REPLICATION SLAVE, RELOAD
    #  ON *.* TO 'orc_client_user'@'%';
    #GRANT SELECT
    #  ON _vt.* TO 'orc_client_user'@'%';

    FLUSH PRIVILEGES;

    RESET SLAVE ALL;
    RESET MASTER;

If you search for "namespace:" you can see the diffs compared with the examples from the upstream.

Is it possible to manage clusters/run in other namespaces? I've found this: https://giters.com/vitessio/vitess/issues/8172

Thank you in advance!

Best regards,
Kai

@farodin91
Copy link

It looks like if you want to run in vitess different than operator you need an extra service account for vitessbackupstorage-subcontroller.

@farodin91
Copy link

{"level":"error","ts":1679307069.7949412,"msg":"Reconciler error","controller":"vitessbackupstorage-controller","object":{"name":"mgdmc-vitess-3f13cfd5","namespace":"vitess"},"namespace":"vitess","name":"vitess-3f13cfd5","reconcileID":"017bdf9f-fd82-487a-a05a-7cf9d9d68f26","error":"pods "vitess-3f13cfd5-vitessbackupstorage-subcontroller" is forbidden: error looking up service account vitess/vitess-operator: serviceaccount "vitess-operator" not found","stacktrace":"sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.13.1/pkg/internal/controller/controller.go:326\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.13.1/pkg/internal/controller/controller.go:273\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.13.1/pkg/internal/controller/controller.go:234"}

@sambonbonne
Copy link

It seems the operator takes a WATCH_NAMESPACE variable so it may be designed to run in a single namespace.

It seems we need to deploy one operator per namespace but I would expect an operator to be able to work accross multiple namespaces by default.

@frouioui frouioui added this to the v2.15 milestone Aug 28, 2024
@frouioui frouioui self-assigned this Aug 28, 2024
@frouioui frouioui added the enhancement New feature or request label Aug 28, 2024
@frouioui
Copy link
Member

Hey all, thanks for showing interest in this. I will try to pick this up either in this major release or the next one. I'll keep this issue updated.

@frouioui frouioui removed the enhancement New feature or request label Dec 2, 2024
@eslam-gomaa-careem
Copy link

any updates on the feature 👋

I seems to be an essential feature to separate the operator and the different clusters it manages in different namespaces

@frouioui frouioui linked a pull request Feb 28, 2025 that will close this issue
@frouioui
Copy link
Member

Hello everyone, please see #666 for the proposed solution.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants