apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: minecraftclusters.shulkermc.io
spec:
  group: shulkermc.io
  names:
    categories: []
    kind: MinecraftCluster
    plural: minecraftclusters
    shortNames: []
    singular: minecraftcluster
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: Auto-generated derived type for MinecraftClusterSpec via `CustomResource`
        properties:
          spec:
            properties:
              externalServers:
                description: List of servers that should be registered on the proxies that are not managed by Shulker
                items:
                  properties:
                    address:
                      description: Address of the server, may contain a port after a colon
                      type: string
                    name:
                      description: Name of the server, as the proxies will register it. Allowed names only are lowercased, dash-separated alphanumerical string
                      pattern: ^[a-z0-9\-]+$
                      type: string
                    tags:
                      description: Tags associated to the server
                      items:
                        type: string
                      type: array
                  required:
                  - address
                  - name
                  type: object
                nullable: true
                type: array
              networkAdmins:
                description: List of player UUIDs that are automatically promoted as network administrators, which are granted all the permissions by default on all the proxies and servers
                items:
                  type: string
                nullable: true
                type: array
              redis:
                description: Redis configuration to use as a synchronization backend for the different Shulker components
                nullable: true
                properties:
                  provided:
                    description: Configuration needed to connect to a provided Redis instance. If type is not `Provide`d, this field is ignored
                    nullable: true
                    properties:
                      credentialsSecretName:
                        description: Kubernetes Secret containing the credentials to use. It must contains a `username` and `password` keys
                        nullable: true
                        type: string
                      host:
                        description: Host of the Redis instance
                        type: string
                      port:
                        default: 6379
                        description: Port of the Redis instance
                        format: uint16
                        minimum: 0.0
                        type: integer
                    required:
                    - host
                    type: object
                  type:
                    description: Type of Redis deployment to use. Shulker can provided a single-node managed Redis to use for development purposes. Production workload should use a dedicated Redis cluster. Defaults to ManagedSingleNode
                    enum:
                    - ManagedSingleNode
                    - Provided
                    type: string
                required:
                - type
                type: object
            type: object
          status:
            description: The status object of `MinecraftCluster`
            nullable: true
            type: object
        required:
        - spec
        title: MinecraftCluster
        type: object
    served: true
    storage: true
    subresources:
      status: {}
