
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.2.8
  creationTimestamp: null
  name: observatoria.core.observatorium.io
spec:
  group: core.observatorium.io
  names:
    kind: Observatorium
    listKind: ObservatoriumList
    plural: observatoria
    singular: observatorium
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      description: Observatorium is the Schema for the observatoria API
      properties:
        apiVersion:
          description: 'APIVersion defines the versioned schema of this representation
            of an object. Servers should convert recognized schemas to the latest
            internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
          type: string
        kind:
          description: 'Kind is a string value representing the REST resource this
            object represents. Servers may infer this from the endpoint the client
            submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
          type: string
        metadata:
          type: object
        spec:
          description: ObservatoriumSpec defines the desired state of Observatorium
          properties:
            api:
              description: API
              properties:
                image:
                  description: API image
                  type: string
                rbac:
                  description: RBAC is an RBAC configuration for the Observatorium
                    API.
                  properties:
                    roleBindings:
                      description: RoleBindings is a slice of Observatorium API role
                        bindings.
                      items:
                        description: RBACRoleBinding binds a set of roles to a set
                          of subjects.
                        properties:
                          name:
                            description: Name is the name of the role binding.
                            type: string
                          roles:
                            description: Roles is a list of roles that will be bound.
                            items:
                              type: string
                            type: array
                          subjects:
                            description: Subjects is a list of subjects who will be
                              given access to the specified roles.
                            items:
                              description: Subject represents a subject to which an
                                RBAC role can be bound.
                              properties:
                                kind:
                                  description: SubjectKind is a kind of Observatorium
                                    subject.
                                  type: string
                                name:
                                  type: string
                              required:
                              - kind
                              - name
                              type: object
                            type: array
                        required:
                        - name
                        - roles
                        - subjects
                        type: object
                      type: array
                    roles:
                      description: Roles is a slice of Observatorium API roles.
                      items:
                        description: RBACRole describes a set of permissions to interact
                          with a tenant.
                        properties:
                          name:
                            description: Name is the name of the role.
                            type: string
                          permissions:
                            description: Permissions is a list of permissions that
                              will be granted.
                            items:
                              description: Permission is an Observatorium RBAC permission.
                              type: string
                            type: array
                          resources:
                            description: Resources is a list of resources to which
                              access will be granted.
                            items:
                              type: string
                            type: array
                          tenants:
                            description: Tenants is a list of tenants whose resources
                              will be considered.
                            items:
                              type: string
                            type: array
                        required:
                        - name
                        - permissions
                        - resources
                        - tenants
                        type: object
                      type: array
                  required:
                  - roleBindings
                  - roles
                  type: object
                tenants:
                  description: Tenants is a slice of tenants for the Observatorium
                    API.
                  items:
                    description: APITenant represents a tenant in the Observatorium
                      API.
                    properties:
                      id:
                        type: string
                      mTLS:
                        description: TenantMTLS represents the mTLS configuration
                          for an Observatorium API tenant.
                        properties:
                          caKey:
                            type: string
                          configMapName:
                            type: string
                          secretName:
                            type: string
                        required:
                        - caKey
                        type: object
                      name:
                        type: string
                      oidc:
                        description: TenantOIDC represents the OIDC configuration
                          for an Observatorium API tenant.
                        properties:
                          clientID:
                            type: string
                          clientSecret:
                            type: string
                          issuerURL:
                            type: string
                          redirectURL:
                            type: string
                          usernameClaim:
                            type: string
                        required:
                        - clientID
                        - issuerURL
                        type: object
                    required:
                    - id
                    - name
                    type: object
                  type: array
                tls:
                  description: TLS configuration for the Observatorium API.
                  properties:
                    caKey:
                      type: string
                    certKey:
                      type: string
                    configMapName:
                      type: string
                    keyKey:
                      type: string
                    reloadInterval:
                      type: string
                    secretName:
                      type: string
                    serverName:
                      type: string
                  required:
                  - certKey
                  - keyKey
                  - secretName
                  type: object
                version:
                  description: Version describes the version of API to use.
                  type: string
              required:
              - rbac
              - tenants
              type: object
            apiQuery:
              description: API Query
              properties:
                image:
                  description: Thanos image
                  type: string
                version:
                  description: Version of Thanos image to be deployed.
                  type: string
              type: object
            compact:
              description: Thanos CompactSpec
              properties:
                enableDownsampling:
                  description: EnableDownsampling enables downsampling.
                  type: boolean
                image:
                  description: Thanos image
                  type: string
                retentionResolution1h:
                  description: RetentionResolutionRaw
                  type: string
                retentionResolution5m:
                  description: RetentionResolutionRaw
                  type: string
                retentionResolutionRaw:
                  description: RetentionResolutionRaw
                  type: string
                version:
                  description: Version of Thanos image to be deployed.
                  type: string
                volumeClaimTemplate:
                  description: VolumeClaimTemplate
                  properties:
                    spec:
                      description: PersistentVolumeClaimSpec describes the common
                        attributes of storage devices and allows a Source for provider-specific
                        attributes
                      properties:
                        accessModes:
                          description: 'AccessModes contains the desired access modes
                            the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
                          items:
                            type: string
                          type: array
                        dataSource:
                          description: 'This field can be used to specify either:
                            * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot
                            - Beta) * An existing PVC (PersistentVolumeClaim) * An
                            existing custom resource/object that implements data population
                            (Alpha) In order to use VolumeSnapshot object types, the
                            appropriate feature gate must be enabled (VolumeSnapshotDataSource
                            or AnyVolumeDataSource) If the provisioner or an external
                            controller can support the specified data source, it will
                            create a new volume based on the contents of the specified
                            data source. If the specified data source is not supported,
                            the volume will not be created and the failure will be
                            reported as an event. In the future, we plan to support
                            more data source types and the behavior of the provisioner
                            may change.'
                          properties:
                            apiGroup:
                              description: APIGroup is the group for the resource
                                being referenced. If APIGroup is not specified, the
                                specified Kind must be in the core API group. For
                                any other third-party types, APIGroup is required.
                              type: string
                            kind:
                              description: Kind is the type of resource being referenced
                              type: string
                            name:
                              description: Name is the name of resource being referenced
                              type: string
                          required:
                          - kind
                          - name
                          type: object
                        resources:
                          description: 'Resources represents the minimum resources
                            the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#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
                              description: 'Limits describes the maximum amount of
                                compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                              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
                              description: 'Requests describes the minimum amount
                                of compute resources required. If Requests is omitted
                                for a container, it defaults to Limits if that is
                                explicitly specified, otherwise to an implementation-defined
                                value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                              type: object
                          type: object
                        selector:
                          description: A label query over volumes to consider for
                            binding.
                          properties:
                            matchExpressions:
                              description: matchExpressions is a list of label selector
                                requirements. The requirements are ANDed.
                              items:
                                description: A label selector requirement is a selector
                                  that contains values, a key, and an operator that
                                  relates the key and values.
                                properties:
                                  key:
                                    description: key is the label key that the selector
                                      applies to.
                                    type: string
                                  operator:
                                    description: operator represents a key's relationship
                                      to a set of values. Valid operators are In,
                                      NotIn, Exists and DoesNotExist.
                                    type: string
                                  values:
                                    description: values is an array of string values.
                                      If the operator is In or NotIn, the values array
                                      must be non-empty. If the operator is Exists
                                      or DoesNotExist, the values array must be empty.
                                      This array is replaced during a strategic merge
                                      patch.
                                    items:
                                      type: string
                                    type: array
                                required:
                                - key
                                - operator
                                type: object
                              type: array
                            matchLabels:
                              additionalProperties:
                                type: string
                              description: matchLabels is a map of {key,value} pairs.
                                A single {key,value} in the matchLabels map is equivalent
                                to an element of matchExpressions, whose key field
                                is "key", the operator is "In", and the values array
                                contains only "value". The requirements are ANDed.
                              type: object
                          type: object
                        storageClassName:
                          description: 'Name of the StorageClass required by the claim.
                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                          type: string
                        volumeMode:
                          description: volumeMode defines what type of volume is required
                            by the claim. Value of Filesystem is implied when not
                            included in claim spec.
                          type: string
                        volumeName:
                          description: VolumeName is the binding reference to the
                            PersistentVolume backing this claim.
                          type: string
                      type: object
                  required:
                  - spec
                  type: object
              required:
              - retentionResolution1h
              - retentionResolution5m
              - retentionResolutionRaw
              - volumeClaimTemplate
              type: object
            hashrings:
              description: Hashrings describes a list of Hashrings
              items:
                properties:
                  hashring:
                    description: Thanos Hashring name
                    type: string
                  tenants:
                    description: Tenants describes a lists of tenants.
                    items:
                      type: string
                    type: array
                required:
                - hashring
                type: object
              type: array
            loki:
              description: Loki
              properties:
                image:
                  description: Loki image
                  type: string
                replicas:
                  additionalProperties:
                    format: int32
                    type: integer
                  description: Loki replicas per component
                  type: object
                version:
                  description: Version of Loki image to be deployed
                  type: string
                volumeClaimTemplate:
                  description: VolumeClaimTemplate
                  properties:
                    spec:
                      description: PersistentVolumeClaimSpec describes the common
                        attributes of storage devices and allows a Source for provider-specific
                        attributes
                      properties:
                        accessModes:
                          description: 'AccessModes contains the desired access modes
                            the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
                          items:
                            type: string
                          type: array
                        dataSource:
                          description: 'This field can be used to specify either:
                            * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot
                            - Beta) * An existing PVC (PersistentVolumeClaim) * An
                            existing custom resource/object that implements data population
                            (Alpha) In order to use VolumeSnapshot object types, the
                            appropriate feature gate must be enabled (VolumeSnapshotDataSource
                            or AnyVolumeDataSource) If the provisioner or an external
                            controller can support the specified data source, it will
                            create a new volume based on the contents of the specified
                            data source. If the specified data source is not supported,
                            the volume will not be created and the failure will be
                            reported as an event. In the future, we plan to support
                            more data source types and the behavior of the provisioner
                            may change.'
                          properties:
                            apiGroup:
                              description: APIGroup is the group for the resource
                                being referenced. If APIGroup is not specified, the
                                specified Kind must be in the core API group. For
                                any other third-party types, APIGroup is required.
                              type: string
                            kind:
                              description: Kind is the type of resource being referenced
                              type: string
                            name:
                              description: Name is the name of resource being referenced
                              type: string
                          required:
                          - kind
                          - name
                          type: object
                        resources:
                          description: 'Resources represents the minimum resources
                            the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#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
                              description: 'Limits describes the maximum amount of
                                compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                              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
                              description: 'Requests describes the minimum amount
                                of compute resources required. If Requests is omitted
                                for a container, it defaults to Limits if that is
                                explicitly specified, otherwise to an implementation-defined
                                value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                              type: object
                          type: object
                        selector:
                          description: A label query over volumes to consider for
                            binding.
                          properties:
                            matchExpressions:
                              description: matchExpressions is a list of label selector
                                requirements. The requirements are ANDed.
                              items:
                                description: A label selector requirement is a selector
                                  that contains values, a key, and an operator that
                                  relates the key and values.
                                properties:
                                  key:
                                    description: key is the label key that the selector
                                      applies to.
                                    type: string
                                  operator:
                                    description: operator represents a key's relationship
                                      to a set of values. Valid operators are In,
                                      NotIn, Exists and DoesNotExist.
                                    type: string
                                  values:
                                    description: values is an array of string values.
                                      If the operator is In or NotIn, the values array
                                      must be non-empty. If the operator is Exists
                                      or DoesNotExist, the values array must be empty.
                                      This array is replaced during a strategic merge
                                      patch.
                                    items:
                                      type: string
                                    type: array
                                required:
                                - key
                                - operator
                                type: object
                              type: array
                            matchLabels:
                              additionalProperties:
                                type: string
                              description: matchLabels is a map of {key,value} pairs.
                                A single {key,value} in the matchLabels map is equivalent
                                to an element of matchExpressions, whose key field
                                is "key", the operator is "In", and the values array
                                contains only "value". The requirements are ANDed.
                              type: object
                          type: object
                        storageClassName:
                          description: 'Name of the StorageClass required by the claim.
                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                          type: string
                        volumeMode:
                          description: volumeMode defines what type of volume is required
                            by the claim. Value of Filesystem is implied when not
                            included in claim spec.
                          type: string
                        volumeName:
                          description: VolumeName is the binding reference to the
                            PersistentVolume backing this claim.
                          type: string
                      type: object
                  required:
                  - spec
                  type: object
              required:
              - image
              - volumeClaimTemplate
              type: object
            objectStorageConfig:
              description: Objest Storage Configuration
              properties:
                loki:
                  description: Object Store Config Secret for Loki
                  properties:
                    accessKeyIdKey:
                      description: Object Store Config key for AWS_ACCESS_KEY_ID
                      type: string
                    bucketsKey:
                      description: Object Store Config key for S3_BUCKETS
                      type: string
                    endpointKey:
                      description: Object Store Config key for S3_URL
                      type: string
                    regionKey:
                      description: Object Store Config key for S3_REGION
                      type: string
                    secretAccessKeyKey:
                      description: Object Store Config key for AWS_SECRET_ACCESS_KEY
                      type: string
                    secretName:
                      description: Object Store Config Secret Name
                      type: string
                  required:
                  - secretName
                  type: object
                thanos:
                  description: Object Store Config Secret for Thanos
                  properties:
                    key:
                      description: Object Store Config key
                      type: string
                    name:
                      description: Object Store Config Secret Name
                      type: string
                  required:
                  - key
                  - name
                  type: object
              required:
              - thanos
              type: object
            query:
              description: Query
              properties:
                image:
                  description: Thanos image
                  type: string
                version:
                  description: Version of Thanos image to be deployed.
                  type: string
              type: object
            queryCache:
              description: Thanos QueryCache
              properties:
                image:
                  description: Thanos Query Cache image
                  type: string
                replicas:
                  description: Number of Query Cache replicas.
                  format: int32
                  type: integer
                version:
                  description: Version of Query Cache image to be deployed.
                  type: string
              type: object
            receivers:
              description: Thanos ThanosPersistentSpec
              properties:
                image:
                  description: Thanos image
                  type: string
                version:
                  description: Version of Thanos image to be deployed.
                  type: string
                volumeClaimTemplate:
                  description: VolumeClaimTemplate
                  properties:
                    spec:
                      description: PersistentVolumeClaimSpec describes the common
                        attributes of storage devices and allows a Source for provider-specific
                        attributes
                      properties:
                        accessModes:
                          description: 'AccessModes contains the desired access modes
                            the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
                          items:
                            type: string
                          type: array
                        dataSource:
                          description: 'This field can be used to specify either:
                            * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot
                            - Beta) * An existing PVC (PersistentVolumeClaim) * An
                            existing custom resource/object that implements data population
                            (Alpha) In order to use VolumeSnapshot object types, the
                            appropriate feature gate must be enabled (VolumeSnapshotDataSource
                            or AnyVolumeDataSource) If the provisioner or an external
                            controller can support the specified data source, it will
                            create a new volume based on the contents of the specified
                            data source. If the specified data source is not supported,
                            the volume will not be created and the failure will be
                            reported as an event. In the future, we plan to support
                            more data source types and the behavior of the provisioner
                            may change.'
                          properties:
                            apiGroup:
                              description: APIGroup is the group for the resource
                                being referenced. If APIGroup is not specified, the
                                specified Kind must be in the core API group. For
                                any other third-party types, APIGroup is required.
                              type: string
                            kind:
                              description: Kind is the type of resource being referenced
                              type: string
                            name:
                              description: Name is the name of resource being referenced
                              type: string
                          required:
                          - kind
                          - name
                          type: object
                        resources:
                          description: 'Resources represents the minimum resources
                            the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#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
                              description: 'Limits describes the maximum amount of
                                compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                              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
                              description: 'Requests describes the minimum amount
                                of compute resources required. If Requests is omitted
                                for a container, it defaults to Limits if that is
                                explicitly specified, otherwise to an implementation-defined
                                value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                              type: object
                          type: object
                        selector:
                          description: A label query over volumes to consider for
                            binding.
                          properties:
                            matchExpressions:
                              description: matchExpressions is a list of label selector
                                requirements. The requirements are ANDed.
                              items:
                                description: A label selector requirement is a selector
                                  that contains values, a key, and an operator that
                                  relates the key and values.
                                properties:
                                  key:
                                    description: key is the label key that the selector
                                      applies to.
                                    type: string
                                  operator:
                                    description: operator represents a key's relationship
                                      to a set of values. Valid operators are In,
                                      NotIn, Exists and DoesNotExist.
                                    type: string
                                  values:
                                    description: values is an array of string values.
                                      If the operator is In or NotIn, the values array
                                      must be non-empty. If the operator is Exists
                                      or DoesNotExist, the values array must be empty.
                                      This array is replaced during a strategic merge
                                      patch.
                                    items:
                                      type: string
                                    type: array
                                required:
                                - key
                                - operator
                                type: object
                              type: array
                            matchLabels:
                              additionalProperties:
                                type: string
                              description: matchLabels is a map of {key,value} pairs.
                                A single {key,value} in the matchLabels map is equivalent
                                to an element of matchExpressions, whose key field
                                is "key", the operator is "In", and the values array
                                contains only "value". The requirements are ANDed.
                              type: object
                          type: object
                        storageClassName:
                          description: 'Name of the StorageClass required by the claim.
                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                          type: string
                        volumeMode:
                          description: volumeMode defines what type of volume is required
                            by the claim. Value of Filesystem is implied when not
                            included in claim spec.
                          type: string
                        volumeName:
                          description: VolumeName is the binding reference to the
                            PersistentVolume backing this claim.
                          type: string
                      type: object
                  required:
                  - spec
                  type: object
              required:
              - volumeClaimTemplate
              type: object
            rule:
              description: Thanos RulerSpec
              properties:
                image:
                  description: Thanos image
                  type: string
                version:
                  description: Version of Thanos image to be deployed.
                  type: string
                volumeClaimTemplate:
                  description: VolumeClaimTemplate
                  properties:
                    spec:
                      description: PersistentVolumeClaimSpec describes the common
                        attributes of storage devices and allows a Source for provider-specific
                        attributes
                      properties:
                        accessModes:
                          description: 'AccessModes contains the desired access modes
                            the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
                          items:
                            type: string
                          type: array
                        dataSource:
                          description: 'This field can be used to specify either:
                            * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot
                            - Beta) * An existing PVC (PersistentVolumeClaim) * An
                            existing custom resource/object that implements data population
                            (Alpha) In order to use VolumeSnapshot object types, the
                            appropriate feature gate must be enabled (VolumeSnapshotDataSource
                            or AnyVolumeDataSource) If the provisioner or an external
                            controller can support the specified data source, it will
                            create a new volume based on the contents of the specified
                            data source. If the specified data source is not supported,
                            the volume will not be created and the failure will be
                            reported as an event. In the future, we plan to support
                            more data source types and the behavior of the provisioner
                            may change.'
                          properties:
                            apiGroup:
                              description: APIGroup is the group for the resource
                                being referenced. If APIGroup is not specified, the
                                specified Kind must be in the core API group. For
                                any other third-party types, APIGroup is required.
                              type: string
                            kind:
                              description: Kind is the type of resource being referenced
                              type: string
                            name:
                              description: Name is the name of resource being referenced
                              type: string
                          required:
                          - kind
                          - name
                          type: object
                        resources:
                          description: 'Resources represents the minimum resources
                            the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#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
                              description: 'Limits describes the maximum amount of
                                compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                              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
                              description: 'Requests describes the minimum amount
                                of compute resources required. If Requests is omitted
                                for a container, it defaults to Limits if that is
                                explicitly specified, otherwise to an implementation-defined
                                value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                              type: object
                          type: object
                        selector:
                          description: A label query over volumes to consider for
                            binding.
                          properties:
                            matchExpressions:
                              description: matchExpressions is a list of label selector
                                requirements. The requirements are ANDed.
                              items:
                                description: A label selector requirement is a selector
                                  that contains values, a key, and an operator that
                                  relates the key and values.
                                properties:
                                  key:
                                    description: key is the label key that the selector
                                      applies to.
                                    type: string
                                  operator:
                                    description: operator represents a key's relationship
                                      to a set of values. Valid operators are In,
                                      NotIn, Exists and DoesNotExist.
                                    type: string
                                  values:
                                    description: values is an array of string values.
                                      If the operator is In or NotIn, the values array
                                      must be non-empty. If the operator is Exists
                                      or DoesNotExist, the values array must be empty.
                                      This array is replaced during a strategic merge
                                      patch.
                                    items:
                                      type: string
                                    type: array
                                required:
                                - key
                                - operator
                                type: object
                              type: array
                            matchLabels:
                              additionalProperties:
                                type: string
                              description: matchLabels is a map of {key,value} pairs.
                                A single {key,value} in the matchLabels map is equivalent
                                to an element of matchExpressions, whose key field
                                is "key", the operator is "In", and the values array
                                contains only "value". The requirements are ANDed.
                              type: object
                          type: object
                        storageClassName:
                          description: 'Name of the StorageClass required by the claim.
                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                          type: string
                        volumeMode:
                          description: volumeMode defines what type of volume is required
                            by the claim. Value of Filesystem is implied when not
                            included in claim spec.
                          type: string
                        volumeName:
                          description: VolumeName is the binding reference to the
                            PersistentVolume backing this claim.
                          type: string
                      type: object
                  required:
                  - spec
                  type: object
              required:
              - volumeClaimTemplate
              type: object
            store:
              description: Thanos StoreSpec
              properties:
                cache:
                  description: Memcached spec for Store
                  properties:
                    exporterImage:
                      description: Memcached Prometheus Exporter image
                      type: string
                    exporterVersion:
                      description: Version of Memcached Prometheus Exporter image
                        to be deployed.
                      type: string
                    image:
                      description: Memcached image
                      type: string
                    memoryLimitMb:
                      description: Memory limit of Memcached in megabytes.
                      format: int32
                      type: integer
                    replicas:
                      description: Number of Memcached replicas.
                      format: int32
                      type: integer
                    version:
                      description: Version of Memcached image to be deployed.
                      type: string
                  type: object
                image:
                  description: Thanos image
                  type: string
                shards:
                  format: int32
                  type: integer
                version:
                  description: Version of Thanos image to be deployed.
                  type: string
                volumeClaimTemplate:
                  description: VolumeClaimTemplate
                  properties:
                    spec:
                      description: PersistentVolumeClaimSpec describes the common
                        attributes of storage devices and allows a Source for provider-specific
                        attributes
                      properties:
                        accessModes:
                          description: 'AccessModes contains the desired access modes
                            the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
                          items:
                            type: string
                          type: array
                        dataSource:
                          description: 'This field can be used to specify either:
                            * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot
                            - Beta) * An existing PVC (PersistentVolumeClaim) * An
                            existing custom resource/object that implements data population
                            (Alpha) In order to use VolumeSnapshot object types, the
                            appropriate feature gate must be enabled (VolumeSnapshotDataSource
                            or AnyVolumeDataSource) If the provisioner or an external
                            controller can support the specified data source, it will
                            create a new volume based on the contents of the specified
                            data source. If the specified data source is not supported,
                            the volume will not be created and the failure will be
                            reported as an event. In the future, we plan to support
                            more data source types and the behavior of the provisioner
                            may change.'
                          properties:
                            apiGroup:
                              description: APIGroup is the group for the resource
                                being referenced. If APIGroup is not specified, the
                                specified Kind must be in the core API group. For
                                any other third-party types, APIGroup is required.
                              type: string
                            kind:
                              description: Kind is the type of resource being referenced
                              type: string
                            name:
                              description: Name is the name of resource being referenced
                              type: string
                          required:
                          - kind
                          - name
                          type: object
                        resources:
                          description: 'Resources represents the minimum resources
                            the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#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
                              description: 'Limits describes the maximum amount of
                                compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                              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
                              description: 'Requests describes the minimum amount
                                of compute resources required. If Requests is omitted
                                for a container, it defaults to Limits if that is
                                explicitly specified, otherwise to an implementation-defined
                                value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                              type: object
                          type: object
                        selector:
                          description: A label query over volumes to consider for
                            binding.
                          properties:
                            matchExpressions:
                              description: matchExpressions is a list of label selector
                                requirements. The requirements are ANDed.
                              items:
                                description: A label selector requirement is a selector
                                  that contains values, a key, and an operator that
                                  relates the key and values.
                                properties:
                                  key:
                                    description: key is the label key that the selector
                                      applies to.
                                    type: string
                                  operator:
                                    description: operator represents a key's relationship
                                      to a set of values. Valid operators are In,
                                      NotIn, Exists and DoesNotExist.
                                    type: string
                                  values:
                                    description: values is an array of string values.
                                      If the operator is In or NotIn, the values array
                                      must be non-empty. If the operator is Exists
                                      or DoesNotExist, the values array must be empty.
                                      This array is replaced during a strategic merge
                                      patch.
                                    items:
                                      type: string
                                    type: array
                                required:
                                - key
                                - operator
                                type: object
                              type: array
                            matchLabels:
                              additionalProperties:
                                type: string
                              description: matchLabels is a map of {key,value} pairs.
                                A single {key,value} in the matchLabels map is equivalent
                                to an element of matchExpressions, whose key field
                                is "key", the operator is "In", and the values array
                                contains only "value". The requirements are ANDed.
                              type: object
                          type: object
                        storageClassName:
                          description: 'Name of the StorageClass required by the claim.
                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                          type: string
                        volumeMode:
                          description: volumeMode defines what type of volume is required
                            by the claim. Value of Filesystem is implied when not
                            included in claim spec.
                          type: string
                        volumeName:
                          description: VolumeName is the binding reference to the
                            PersistentVolume backing this claim.
                          type: string
                      type: object
                  required:
                  - spec
                  type: object
              required:
              - volumeClaimTemplate
              type: object
            thanosReceiveController:
              description: Thanos Receive Controller Spec
              properties:
                image:
                  description: Receive Controller image
                  type: string
                version:
                  description: Version describes the version of Thanos receive controller
                    to use.
                  type: string
              type: object
          required:
          - compact
          - hashrings
          - objectStorageConfig
          - receivers
          - rule
          - store
          type: object
        status:
          description: ObservatoriumStatus defines the observed state of Observatorium
          type: object
      type: object
  version: v1alpha1
  versions:
  - name: v1alpha1
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
