diff --git a/api/v1alpha1/observatorium_types.go b/api/v1alpha1/observatorium_types.go index 7141ac2d..6775aea3 100644 --- a/api/v1alpha1/observatorium_types.go +++ b/api/v1alpha1/observatorium_types.go @@ -28,22 +28,11 @@ type ObservatoriumSpec struct { ObjectStorageConfig ObjectStorageConfig `json:"objectStorageConfig"` // Hashrings describes a list of Hashrings Hashrings []*Hashring `json:"hashrings"` - // Thanos CompactSpec - Compact CompactSpec `json:"compact"` - // Thanos Receive Controller Spec - ThanosReceiveController ThanosReceiveControllerSpec `json:"thanosReceiveController,omitempty"` - // Thanos ThanosPersistentSpec - Receivers ReceiversSpec `json:"receivers"` - // Thanos QueryFrontend - QueryFrontend QueryFrontendSpec `json:"queryFrontend,omitempty"` - // Thanos StoreSpec - Store StoreSpec `json:"store"` - // Thanos RulerSpec - Rule RuleSpec `json:"rule"` + // Thanos + // +optional + Thanos ThanosSpec `json:"thanos"` // API API APISpec `json:"api,omitempty"` - // Query - Query QuerySpec `json:"query,omitempty"` // Loki // +optional Loki *LokiSpec `json:"loki,omitempty"` @@ -61,6 +50,27 @@ type ObservatoriumSpec struct { SecurityContext *v1.PodSecurityContext `json:"securityContext,omitempty"` } +type ThanosSpec struct { + // Thanos image + Image string `json:"image,omitempty"` + // Version of Thanos image to be deployed. + Version string `json:"version,omitempty"` + // Thanos Compact + Compact CompactSpec `json:"compact"` + // Thanos Query + Query QuerySpec `json:"query,omitempty"` + // Thanos Query Frontend + QueryFrontend QueryFrontendSpec `json:"queryFrontend,omitempty"` + // Thanos Receive Controller + ReceiveController ReceiveControllerSpec `json:"receiveController,omitempty"` + // Thanos Thanos Receiver + Receivers ReceiversSpec `json:"receivers"` + // Thanos Ruler + Rule RuleSpec `json:"rule"` + // Thanos Store + Store StoreSpec `json:"store"` +} + type ObjectStorageConfig struct { // Object Store Config Secret for Thanos Thanos *ThanosObjectStorageConfigSpec `json:"thanos"` @@ -96,11 +106,7 @@ type LokiObjectStorageConfigSpec struct { RegionKey string `json:"regionKey"` } -type ThanosReceiveControllerSpec struct { - // Receive Controller image - Image string `json:"image,omitempty"` - // Version describes the version of Thanos receive controller to use. - Version string `json:"version,omitempty"` +type ReceiveControllerSpec struct { // Compute Resources required by this container. // +optional Resources v1.ResourceRequirements `json:"resources,omitempty"` @@ -110,12 +116,8 @@ type ThanosReceiveControllerSpec struct { } type ReceiversSpec struct { - // Thanos image - Image string `json:"image,omitempty"` // Number of Receiver replicas. Replicas *int32 `json:"replicas,omitempty"` - // Version of Thanos image to be deployed. - Version string `json:"version,omitempty"` // VolumeClaimTemplate VolumeClaimTemplate VolumeClaimTemplate `json:"volumeClaimTemplate"` // ReplicationFactor defines the number of copies of every time-series @@ -129,10 +131,6 @@ type ReceiversSpec struct { } type StoreSpec struct { - // Thanos image - Image string `json:"image,omitempty"` - // Version of Thanos image to be deployed. - Version string `json:"version,omitempty"` // VolumeClaimTemplate VolumeClaimTemplate VolumeClaimTemplate `json:"volumeClaimTemplate"` Shards *int32 `json:"shards,omitempty"` @@ -148,10 +146,6 @@ type StoreSpec struct { // StoreCacheSpec describes configuration for Store Memcached type StoreCacheSpec struct { - // Memcached image - Image string `json:"image,omitempty"` - // Version of Memcached image to be deployed. - Version string `json:"version,omitempty"` // Memcached Prometheus Exporter image ExporterImage string `json:"exporterImage,omitempty"` // Version of Memcached Prometheus Exporter image to be deployed. @@ -171,6 +165,85 @@ type StoreCacheSpec struct { ServiceMonitor bool `json:"serviceMonitor,omitempty"` } +type QuerySpec struct { + // Number of Query replicas. + Replicas *int32 `json:"replicas,omitempty"` + // Compute Resources required by this container. + // +optional + Resources v1.ResourceRequirements `json:"resources,omitempty"` + // ServiceMonitor enables deploying a service monitor for the Thanos Queriers. + // +optional + ServiceMonitor bool `json:"serviceMonitor,omitempty"` +} + +type RuleConfig struct { + // Rule ConfigMap Name + Name string `json:"name"` + // Rule ConfigMap key + Key string `json:"key"` +} + +type RuleSpec struct { + // Number of Rule replicas. + Replicas *int32 `json:"replicas,omitempty"` + // VolumeClaimTemplate + VolumeClaimTemplate VolumeClaimTemplate `json:"volumeClaimTemplate"` + // RulesConfig configures rules from the configmaps + // +optional + RulesConfig []RuleConfig `json:"rulesConfig,omitempty"` + // AlertmanagerURLs + // +optional + AlertmanagerURLs []string `json:"alertmanagerURLs,omitempty"` + // ReloaderImage is an image of configmap reloader + // +optional + ReloaderImage string `json:"reloaderImage,omitempty"` + // Compute Resources required by this container. + // +optional + Resources v1.ResourceRequirements `json:"resources,omitempty"` + // Compute Resources required by this container. + // +optional + ReloaderResources v1.ResourceRequirements `json:"reloaderResources,omitempty"` + // ServiceMonitor enables deploying a service monitor for the Thanos Rulers. + // +optional + ServiceMonitor bool `json:"serviceMonitor,omitempty"` +} + +type CompactSpec struct { + // Number of Compact replicas. + Replicas *int32 `json:"replicas,omitempty"` + // VolumeClaimTemplate + VolumeClaimTemplate VolumeClaimTemplate `json:"volumeClaimTemplate"` + // RetentionResolutionRaw + RetentionResolutionRaw string `json:"retentionResolutionRaw"` + // RetentionResolutionRaw + RetentionResolution5m string `json:"retentionResolution5m"` + // RetentionResolutionRaw + RetentionResolution1h string `json:"retentionResolution1h"` + // EnableDownsampling enables downsampling. + EnableDownsampling bool `json:"enableDownsampling,omitempty"` + // Compute Resources required by this container. + // +optional + Resources v1.ResourceRequirements `json:"resources,omitempty"` + // ServiceMonitor enables deploying a service monitor for the Thanos Compactors. + // +optional + ServiceMonitor bool `json:"serviceMonitor,omitempty"` +} + +type VolumeClaimTemplate struct { + Spec v1.PersistentVolumeClaimSpec `json:"spec"` +} + +type QueryFrontendSpec struct { + // Number of Query Frontend replicas. + Replicas *int32 `json:"replicas,omitempty"` + // Compute Resources required by this container. + // +optional + Resources v1.ResourceRequirements `json:"resources,omitempty"` + // ServiceMonitor enables deploying a service monitor for the Thanos Query Frontends. + // +optional + ServiceMonitor bool `json:"serviceMonitor,omitempty"` +} + // Permission is an Observatorium RBAC permission. type Permission string @@ -294,101 +367,6 @@ type APISpec struct { ServiceMonitor bool `json:"serviceMonitor,omitempty"` } -type QuerySpec struct { - // Thanos image - Image string `json:"image,omitempty"` - // Number of Query replicas. - Replicas *int32 `json:"replicas,omitempty"` - // Version of Thanos image to be deployed. - Version string `json:"version,omitempty"` - // Compute Resources required by this container. - // +optional - Resources v1.ResourceRequirements `json:"resources,omitempty"` - // ServiceMonitor enables deploying a service monitor for the Thanos Queriers. - // +optional - ServiceMonitor bool `json:"serviceMonitor,omitempty"` -} - -type RuleConfig struct { - // Rule ConfigMap Name - Name string `json:"name"` - // Rule ConfigMap key - Key string `json:"key"` -} - -type RuleSpec struct { - // Thanos image - Image string `json:"image,omitempty"` - // Number of Rule replicas. - Replicas *int32 `json:"replicas,omitempty"` - // Version of Thanos image to be deployed. - Version string `json:"version,omitempty"` - // VolumeClaimTemplate - VolumeClaimTemplate VolumeClaimTemplate `json:"volumeClaimTemplate"` - // RulesConfig configures rules from the configmaps - // +optional - RulesConfig []RuleConfig `json:"rulesConfig,omitempty"` - // AlertmanagerURLs - // +optional - AlertmanagerURLs []string `json:"alertmanagerURLs,omitempty"` - // ReloaderImage is an image of configmap reloader - // +optional - ReloaderImage string `json:"reloaderImage,omitempty"` - // Compute Resources required by this container. - // +optional - Resources v1.ResourceRequirements `json:"resources,omitempty"` - // Compute Resources required by this container. - // +optional - ReloaderResources v1.ResourceRequirements `json:"reloaderResources,omitempty"` - // ServiceMonitor enables deploying a service monitor for the Thanos Rulers. - // +optional - ServiceMonitor bool `json:"serviceMonitor,omitempty"` -} - -type CompactSpec struct { - // Thanos image - Image string `json:"image,omitempty"` - // Number of Compact replicas. - Replicas *int32 `json:"replicas,omitempty"` - // Version of Thanos image to be deployed. - Version string `json:"version,omitempty"` - // VolumeClaimTemplate - VolumeClaimTemplate VolumeClaimTemplate `json:"volumeClaimTemplate"` - // RetentionResolutionRaw - RetentionResolutionRaw string `json:"retentionResolutionRaw"` - // RetentionResolutionRaw - RetentionResolution5m string `json:"retentionResolution5m"` - // RetentionResolutionRaw - RetentionResolution1h string `json:"retentionResolution1h"` - // EnableDownsampling enables downsampling. - EnableDownsampling bool `json:"enableDownsampling,omitempty"` - // Compute Resources required by this container. - // +optional - Resources v1.ResourceRequirements `json:"resources,omitempty"` - // ServiceMonitor enables deploying a service monitor for the Thanos Compactors. - // +optional - ServiceMonitor bool `json:"serviceMonitor,omitempty"` -} - -type VolumeClaimTemplate struct { - Spec v1.PersistentVolumeClaimSpec `json:"spec"` -} - -type QueryFrontendSpec struct { - // Thanos Query Frontend image - Image string `json:"image,omitempty"` - // Number of Query Frontend replicas. - Replicas *int32 `json:"replicas,omitempty"` - // Version of Query Frontend image to be deployed. - Version string `json:"version,omitempty"` - // Compute Resources required by this container. - // +optional - Resources v1.ResourceRequirements `json:"resources,omitempty"` - // ServiceMonitor enables deploying a service monitor for the Thanos Query Frontends. - // +optional - ServiceMonitor bool `json:"serviceMonitor,omitempty"` -} - type Hashring struct { // Thanos Hashring name Hashring string `json:"hashring"` diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index 73d2e397..962de52f 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -289,14 +289,8 @@ func (in *ObservatoriumSpec) DeepCopyInto(out *ObservatoriumSpec) { } } } - in.Compact.DeepCopyInto(&out.Compact) - in.ThanosReceiveController.DeepCopyInto(&out.ThanosReceiveController) - in.Receivers.DeepCopyInto(&out.Receivers) - in.QueryFrontend.DeepCopyInto(&out.QueryFrontend) - in.Store.DeepCopyInto(&out.Store) - in.Rule.DeepCopyInto(&out.Rule) + in.Thanos.DeepCopyInto(&out.Thanos) in.API.DeepCopyInto(&out.API) - in.Query.DeepCopyInto(&out.Query) if in.Loki != nil { in, out := &in.Loki, &out.Loki *out = new(LokiSpec) @@ -461,6 +455,22 @@ func (in *RBACRoleBinding) DeepCopy() *RBACRoleBinding { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReceiveControllerSpec) DeepCopyInto(out *ReceiveControllerSpec) { + *out = *in + in.Resources.DeepCopyInto(&out.Resources) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReceiveControllerSpec. +func (in *ReceiveControllerSpec) DeepCopy() *ReceiveControllerSpec { + if in == nil { + return nil + } + out := new(ReceiveControllerSpec) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ReceiversSpec) DeepCopyInto(out *ReceiversSpec) { *out = *in @@ -662,17 +672,23 @@ func (in *ThanosObjectStorageConfigSpec) DeepCopy() *ThanosObjectStorageConfigSp } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ThanosReceiveControllerSpec) DeepCopyInto(out *ThanosReceiveControllerSpec) { +func (in *ThanosSpec) DeepCopyInto(out *ThanosSpec) { *out = *in - in.Resources.DeepCopyInto(&out.Resources) + in.Compact.DeepCopyInto(&out.Compact) + in.Query.DeepCopyInto(&out.Query) + in.QueryFrontend.DeepCopyInto(&out.QueryFrontend) + in.ReceiveController.DeepCopyInto(&out.ReceiveController) + in.Receivers.DeepCopyInto(&out.Receivers) + in.Rule.DeepCopyInto(&out.Rule) + in.Store.DeepCopyInto(&out.Store) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThanosReceiveControllerSpec. -func (in *ThanosReceiveControllerSpec) DeepCopy() *ThanosReceiveControllerSpec { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThanosSpec. +func (in *ThanosSpec) DeepCopy() *ThanosSpec { if in == nil { return nil } - out := new(ThanosReceiveControllerSpec) + out := new(ThanosSpec) in.DeepCopyInto(out) return out } diff --git a/example/main.jsonnet b/example/main.jsonnet index 3123cd49..17962a9f 100644 --- a/example/main.jsonnet +++ b/example/main.jsonnet @@ -52,50 +52,43 @@ local dex = (import 'github.com/observatorium/observatorium/configuration/compon }, hashrings: obs.thanos.config.hashrings, - queryFrontend: { + thanos: { image: obs.thanos.config.image, version: obs.thanos.config.version, - replicas: obs.thanos.queryFrontend.config.replicas, - }, - store: { - image: obs.thanos.config.image, - version: obs.thanos.config.version, - shards: obs.thanos.stores.config.shards, - cache: { - image: obs.thanos.storeCache.config.image, - version: obs.thanos.storeCache.config.version, - exporterImage: obs.thanos.storeCache.config.exporterImage, - exporterVersion: obs.thanos.storeCache.config.exporterVersion, - replicas: obs.thanos.storeCache.config.replicas, - memoryLimitMb: obs.thanos.storeCache.config.memoryLimitMb, + query: { + replicas: obs.thanos.query.config.replicas, + }, + queryFrontend: { + replicas: obs.thanos.queryFrontend.config.replicas, + }, + store: { + shards: obs.thanos.stores.config.shards, + cache: { + image: obs.thanos.storeCache.config.image, + version: obs.thanos.storeCache.config.version, + exporterImage: obs.thanos.storeCache.config.exporterImage, + exporterVersion: obs.thanos.storeCache.config.exporterVersion, + replicas: obs.thanos.storeCache.config.replicas, + memoryLimitMb: obs.thanos.storeCache.config.memoryLimitMb, + }, + volumeClaimTemplate: obs.thanos.stores.config.volumeClaimTemplate, + }, + compact: { + volumeClaimTemplate: obs.thanos.compact.config.volumeClaimTemplate, + retentionResolutionRaw: obs.thanos.compact.config.retentionResolutionRaw, + retentionResolution5m: obs.thanos.compact.config.retentionResolution5m, + retentionResolution1h: obs.thanos.compact.config.retentionResolution1h, + enableDownsampling: !obs.thanos.compact.config.disableDownsampling, + replicas: obs.thanos.compact.config.replicas, + }, + rule: { + volumeClaimTemplate: obs.thanos.rule.config.volumeClaimTemplate, + replicas: obs.thanos.rule.config.replicas, + }, + receivers: { + volumeClaimTemplate: obs.thanos.receivers.config.volumeClaimTemplate, + replicas: obs.thanos.receivers.config.replicas, }, - volumeClaimTemplate: obs.thanos.stores.config.volumeClaimTemplate, - }, - compact: { - image: obs.thanos.config.image, - version: obs.thanos.config.version, - volumeClaimTemplate: obs.thanos.compact.config.volumeClaimTemplate, - retentionResolutionRaw: obs.thanos.compact.config.retentionResolutionRaw, - retentionResolution5m: obs.thanos.compact.config.retentionResolution5m, - retentionResolution1h: obs.thanos.compact.config.retentionResolution1h, - enableDownsampling: !obs.thanos.compact.config.disableDownsampling, - replicas: obs.thanos.compact.config.replicas, - }, - rule: { - image: obs.thanos.config.image, - version: obs.thanos.config.version, - volumeClaimTemplate: obs.thanos.rule.config.volumeClaimTemplate, - replicas: obs.thanos.rule.config.replicas, - }, - receivers: { - image: obs.thanos.config.image, - version: obs.thanos.config.version, - volumeClaimTemplate: obs.thanos.receivers.config.volumeClaimTemplate, - replicas: obs.thanos.receivers.config.replicas, - }, - thanosReceiveController: { - image: obs.thanos.receiveController.config.image, - version: obs.thanos.receiveController.config.version, }, api: { image: obs.api.config.image, @@ -154,11 +147,6 @@ local dex = (import 'github.com/observatorium/observatorium/configuration/compon caKey: 'ca.pem', }, }, - query: { - image: obs.thanos.config.image, - version: obs.thanos.config.version, - replicas: obs.thanos.query.config.replicas, - }, loki: { image: obs.loki.config.image, replicas: obs.loki.config.replicas, diff --git a/example/manifests/observatorium.yaml b/example/manifests/observatorium.yaml index ec1a7f8f..abf6e0fb 100644 --- a/example/manifests/observatorium.yaml +++ b/example/manifests/observatorium.yaml @@ -46,21 +46,6 @@ spec: keyKey: key.pem secretName: observatorium-xyz-tls version: main-2021-11-30-v0.1.2-106-g2adff5f - compact: - enableDownsampling: false - image: quay.io/thanos/thanos:v0.24.0 - replicas: 1 - retentionResolution1h: 1s - retentionResolution5m: 1s - retentionResolutionRaw: 14d - version: v0.24.0 - volumeClaimTemplate: - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 50Gi hashrings: - hashring: default tenants: [] @@ -91,57 +76,60 @@ spec: thanos: key: thanos.yaml name: thanos-objectstorage - query: - image: quay.io/thanos/thanos:v0.24.0 - replicas: 1 - version: v0.24.0 - queryFrontend: - image: quay.io/thanos/thanos:v0.24.0 - replicas: 1 - version: v0.24.0 - receivers: - image: quay.io/thanos/thanos:v0.24.0 - replicas: 1 - version: v0.24.0 - volumeClaimTemplate: - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 50Gi - rule: - image: quay.io/thanos/thanos:v0.24.0 - replicas: 1 - version: v0.24.0 - volumeClaimTemplate: - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 50Gi securityContext: fsGroup: 65534 runAsUser: 65534 - store: - cache: - exporterImage: prom/memcached-exporter:v0.6.0 - exporterVersion: v0.6.0 - image: docker.io/memcached:1.6.3-alpine - memoryLimitMb: 1024 + thanos: + compact: + enableDownsampling: false replicas: 1 - version: 1.6.3-alpine + retentionResolution1h: 1s + retentionResolution5m: 1s + retentionResolutionRaw: 14d + volumeClaimTemplate: + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Gi image: quay.io/thanos/thanos:v0.24.0 - shards: 1 + query: + replicas: 1 + queryFrontend: + replicas: 1 + receivers: + replicas: 1 + volumeClaimTemplate: + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Gi + rule: + replicas: 1 + volumeClaimTemplate: + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Gi + store: + cache: + exporterImage: prom/memcached-exporter:v0.6.0 + exporterVersion: v0.6.0 + image: docker.io/memcached:1.6.3-alpine + memoryLimitMb: 1024 + replicas: 1 + version: 1.6.3-alpine + shards: 1 + volumeClaimTemplate: + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Gi version: v0.24.0 - volumeClaimTemplate: - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 50Gi - thanosReceiveController: - image: quay.io/observatorium/thanos-receive-controller:master-2021-04-28-ee165b6 - version: master-2021-04-28-ee165b6 diff --git a/jsonnet/obs-operator.jsonnet b/jsonnet/obs-operator.jsonnet index f001872b..6c71d3ef 100644 --- a/jsonnet/obs-operator.jsonnet +++ b/jsonnet/obs-operator.jsonnet @@ -9,53 +9,55 @@ local operatorObs = obs { thanos+:: thanos({ name: cr.metadata.name, namespace: cr.metadata.namespace, + image: if std.objectHas(cr.spec.thanos, 'image') then cr.spec.thanos.image else obs.thanos.config.image, + version: if std.objectHas(cr.spec.thanos, 'version') then cr.spec.thanos.version else obs.thanos.config.version, objectStorageConfig: cr.spec.objectStorageConfig.thanos, hashrings: cr.spec.hashrings, compact+:: { logLevel: 'info', - disableDownsampling: if std.objectHas(cr.spec, 'compact') && std.objectHas(cr.spec.compact, 'enableDownsampling') then !cr.spec.compact.enableDownsampling else obs.thanos.compact.config.disableDownsampling, + disableDownsampling: if std.objectHas(cr.spec.thanos, 'compact') && std.objectHas(cr.spec.thanos.compact, 'enableDownsampling') then !cr.spec.thanos.compact.enableDownsampling else obs.thanos.compact.config.disableDownsampling, securityContext: if std.objectHas(cr.spec, 'securityContext') then cr.spec.securityContext else obs.thanos.compact.config.securityContext, - } + if std.objectHas(cr.spec, 'compact') then cr.spec.compact else {}, + } + if std.objectHas(cr.spec.thanos, 'compact') then cr.spec.thanos.compact else {}, receiveController+:: { hashrings: cr.spec.hashrings, securityContext: if std.objectHas(cr.spec, 'securityContext') then cr.spec.securityContext else obs.thanos.receiveController.config.securityContext, - } + if std.objectHas(cr.spec, 'thanosReceiveController') then cr.spec.thanosReceiveController else {}, + } + if std.objectHas(cr.spec.thanos, 'receiveController') then cr.spec.thanos.receiveController else {}, receivers+:: { securityContext: if std.objectHas(cr.spec, 'securityContext') then cr.spec.securityContext else obs.thanos.receivers.config.securityContext, - } + if std.objectHas(cr.spec, 'receivers') then cr.spec.receivers else {}, + } + if std.objectHas(cr.spec.thanos, 'receivers') then cr.spec.thanos.receivers else {}, rule+:: { securityContext: if std.objectHas(cr.spec, 'securityContext') then cr.spec.securityContext else obs.thanos.rule.config.securityContext, - alertmanagersURLs: if std.objectHas(cr.spec, 'rule') && std.objectHas(cr.spec.rule, 'alertmanagerURLs') then cr.spec.rule.alertmanagerURLs else obs.thanos.rule.config.alertmanagersURLs, - } + if std.objectHas(cr.spec, 'rule') then cr.spec.rule else {}, + alertmanagersURLs: if std.objectHas(cr.spec.thanos, 'rule') && std.objectHas(cr.spec.thanos.rule, 'alertmanagerURLs') then cr.spec.thanos.rule.alertmanagerURLs else obs.thanos.rule.config.alertmanagersURLs, + } + if std.objectHas(cr.spec.thanos, 'rule') then cr.spec.thanos.rule else {}, stores+:: { securityContext: if std.objectHas(cr.spec, 'securityContext') then cr.spec.securityContext else obs.thanos.stores.config.securityContext, - } + if std.objectHas(cr.spec, 'store') then cr.spec.store else {}, + } + if std.objectHas(cr.spec.thanos, 'store') then cr.spec.thanos.store else {}, - storeCache+:: (if std.objectHas(cr.spec, 'store') && std.objectHas(cr.spec.store, 'cache') then cr.spec.store.cache else {}) + { - memoryLimitMb: if std.objectHas(cr.spec.store, 'cache') && std.objectHas(cr.spec.store.cache, 'memoryLimitMb') then cr.spec.store.cache.memoryLimitMb else obs.thanos.storeCache.config.memoryLimitMb, + storeCache+:: (if std.objectHas(cr.spec.thanos, 'store') && std.objectHas(cr.spec.thanos.store, 'cache') then cr.spec.thanos.store.cache else {}) + { + memoryLimitMb: if std.objectHas(cr.spec.thanos.store, 'cache') && std.objectHas(cr.spec.thanos.store.cache, 'memoryLimitMb') then cr.spec.thanos.store.cache.memoryLimitMb else obs.thanos.storeCache.config.memoryLimitMb, securityContext: if std.objectHas(cr.spec, 'securityContext') then cr.spec.securityContext else obs.thanos.storeCache.config.securityContext, resources+: ( - if std.objectHas(cr.spec.store.cache, 'resources') then { - memcached: cr.spec.store.cache.resources, + if std.objectHas(cr.spec.thanos.store.cache, 'resources') then { + memcached: cr.spec.thanos.store.cache.resources, } else {} ) + ( - if std.objectHas(cr.spec.store.cache, 'exporterResources') then { - exporter: cr.spec.store.cache.exporterResources, + if std.objectHas(cr.spec.thanos.store.cache, 'exporterResources') then { + exporter: cr.spec.thanos.store.cache.exporterResources, } else {} ), }, query+:: { securityContext: if std.objectHas(cr.spec, 'securityContext') then cr.spec.securityContext else obs.thanos.query.config.securityContext, - } + if std.objectHas(cr.spec, 'query') then cr.spec.query else {}, + } + if std.objectHas(cr.spec.thanos, 'query') then cr.spec.thanos.query else {}, queryFrontend+:: { securityContext: if std.objectHas(cr.spec, 'securityContext') then cr.spec.securityContext else obs.thanos.queryFrontend.config.securityContext, - } + if std.objectHas(cr.spec, 'queryFrontend') then cr.spec.queryFrontend else {}, + } + if std.objectHas(cr.spec.thanos, 'queryFrontend') then cr.spec.thanos.queryFrontend else {}, queryFrontendCache+:: { securityContext: if std.objectHas(cr.spec, 'securityContext') then cr.spec.securityContext else obs.thanos.queryFrontendCache.config.securityContext, @@ -151,12 +153,12 @@ local operatorObs = obs { }, } else {} ) + ( - if (std.objectHas(cr.spec.rule, 'reloaderResources') && (v.kind == 'StatefulSet') && v.metadata.name == obs.config.name + '-thanos-rule') then { + if (std.objectHas(cr.spec.thanos.rule, 'reloaderResources') && (v.kind == 'StatefulSet') && v.metadata.name == obs.config.name + '-thanos-rule') then { template+: { spec+: { containers: [ if c.name == 'configmap-reloader' then c { - resources: cr.spec.rule.reloaderResources, + resources: cr.spec.thanos.rule.reloaderResources, } else c for c in super.containers ], diff --git a/manifests/crds/core.observatorium.io_observatoria.yaml b/manifests/crds/core.observatorium.io_observatoria.yaml index 32180fbf..bd5a1740 100644 --- a/manifests/crds/core.observatorium.io_observatoria.yaml +++ b/manifests/crds/core.observatorium.io_observatoria.yaml @@ -1066,241 +1066,6 @@ spec: - rbac - tenants type: object - compact: - description: Thanos CompactSpec - properties: - enableDownsampling: - description: EnableDownsampling enables downsampling. - type: boolean - image: - description: Thanos image - type: string - replicas: - description: Number of Compact replicas. - format: int32 - type: integer - resources: - description: Compute Resources required by this container. - 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-resources-containers/' - 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-resources-containers/' - type: object - type: object - retentionResolution1h: - description: RetentionResolutionRaw - type: string - retentionResolution5m: - description: RetentionResolutionRaw - type: string - retentionResolutionRaw: - description: RetentionResolutionRaw - type: string - serviceMonitor: - description: ServiceMonitor enables deploying a service monitor - for the Thanos Compactors. - type: boolean - 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) - * An existing PVC (PersistentVolumeClaim) 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 AnyVolumeDataSource - feature gate is enabled, this field will always have - the same contents as the DataSourceRef field.' - 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 - dataSourceRef: - description: 'Specifies the object from which to populate - the volume with data, if a non-empty volume is desired. - This may be any local object from a non-empty API group - (non core object) or a PersistentVolumeClaim object. - When this field is specified, volume binding will only - succeed if the type of the specified object matches - some installed volume populator or dynamic provisioner. - This field will replace the functionality of the DataSource - field and as such if both fields are non-empty, they - must have the same value. For backwards compatibility, - both fields (DataSource and DataSourceRef) will be set - to the same value automatically if one of them is empty - and the other is non-empty. There are two important - differences between DataSource and DataSourceRef: * - While DataSource only allows two specific types of objects, - DataSourceRef allows any non-core object, as well - as PersistentVolumeClaim objects. * While DataSource - ignores disallowed values (dropping them), DataSourceRef preserves - all values, and generates an error if a disallowed value - is specified. (Alpha) Using this field requires the - AnyVolumeDataSource feature gate to be enabled.' - 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. If RecoverVolumeExpansionFailure - feature is enabled users are allowed to specify resource - requirements that are lower than previous value but - must still be higher than capacity recorded in the status - field of the claim. 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-resources-containers/' - 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-resources-containers/' - 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: @@ -1563,620 +1328,38 @@ spec: required: - thanos type: object - query: - description: Query + securityContext: + description: Security options the pod should run with. properties: - image: - description: Thanos image + fsGroup: + description: "A special supplemental group that applies to all + containers in a pod. Some volume types allow the Kubelet to + change the ownership of that volume to be owned by the pod: + \n 1. The owning GID will be the FSGroup 2. The setgid bit is + set (new files created in the volume will be owned by FSGroup) + 3. The permission bits are OR'd with rw-rw---- \n If unset, + the Kubelet will not modify the ownership and permissions of + any volume. Note that this field cannot be set when spec.os.name + is windows." + format: int64 + type: integer + fsGroupChangePolicy: + description: 'fsGroupChangePolicy defines behavior of changing + ownership and permission of the volume before being exposed + inside Pod. This field will only apply to volume types which + support fsGroup based ownership(and permissions). It will have + no effect on ephemeral volume types such as: secret, configmaps + and emptydir. Valid values are "OnRootMismatch" and "Always". + If not specified, "Always" is used. Note that this field cannot + be set when spec.os.name is windows.' type: string - replicas: - description: Number of Query replicas. - format: int32 - type: integer - resources: - description: Compute Resources required by this container. - 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-resources-containers/' - 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-resources-containers/' - type: object - type: object - serviceMonitor: - description: ServiceMonitor enables deploying a service monitor - for the Thanos Queriers. - type: boolean - version: - description: Version of Thanos image to be deployed. - type: string - type: object - queryFrontend: - description: Thanos QueryFrontend - properties: - image: - description: Thanos Query Frontend image - type: string - replicas: - description: Number of Query Frontend replicas. - format: int32 - type: integer - resources: - description: Compute Resources required by this container. - 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-resources-containers/' - 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-resources-containers/' - type: object - type: object - serviceMonitor: - description: ServiceMonitor enables deploying a service monitor - for the Thanos Query Frontends. - type: boolean - version: - description: Version of Query Frontend image to be deployed. - type: string - type: object - receivers: - description: Thanos ThanosPersistentSpec - properties: - image: - description: Thanos image - type: string - replicas: - description: Number of Receiver replicas. - format: int32 - type: integer - replicationFactor: - description: ReplicationFactor defines the number of copies of - every time-series - format: int32 - type: integer - resources: - description: Compute Resources required by this container. - 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-resources-containers/' - 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-resources-containers/' - type: object - type: object - serviceMonitor: - description: ServiceMonitor enables deploying a service monitor - for the Thanos Receivers. - type: boolean - 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) - * An existing PVC (PersistentVolumeClaim) 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 AnyVolumeDataSource - feature gate is enabled, this field will always have - the same contents as the DataSourceRef field.' - 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 - dataSourceRef: - description: 'Specifies the object from which to populate - the volume with data, if a non-empty volume is desired. - This may be any local object from a non-empty API group - (non core object) or a PersistentVolumeClaim object. - When this field is specified, volume binding will only - succeed if the type of the specified object matches - some installed volume populator or dynamic provisioner. - This field will replace the functionality of the DataSource - field and as such if both fields are non-empty, they - must have the same value. For backwards compatibility, - both fields (DataSource and DataSourceRef) will be set - to the same value automatically if one of them is empty - and the other is non-empty. There are two important - differences between DataSource and DataSourceRef: * - While DataSource only allows two specific types of objects, - DataSourceRef allows any non-core object, as well - as PersistentVolumeClaim objects. * While DataSource - ignores disallowed values (dropping them), DataSourceRef preserves - all values, and generates an error if a disallowed value - is specified. (Alpha) Using this field requires the - AnyVolumeDataSource feature gate to be enabled.' - 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. If RecoverVolumeExpansionFailure - feature is enabled users are allowed to specify resource - requirements that are lower than previous value but - must still be higher than capacity recorded in the status - field of the claim. 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-resources-containers/' - 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-resources-containers/' - 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: - alertmanagerURLs: - description: AlertmanagerURLs - items: - type: string - type: array - image: - description: Thanos image - type: string - reloaderImage: - description: ReloaderImage is an image of configmap reloader - type: string - reloaderResources: - description: Compute Resources required by this container. - 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-resources-containers/' - 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-resources-containers/' - type: object - type: object - replicas: - description: Number of Rule replicas. - format: int32 - type: integer - resources: - description: Compute Resources required by this container. - 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-resources-containers/' - 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-resources-containers/' - type: object - type: object - rulesConfig: - description: RulesConfig configures rules from the configmaps - items: - properties: - key: - description: Rule ConfigMap key - type: string - name: - description: Rule ConfigMap Name - type: string - required: - - key - - name - type: object - type: array - serviceMonitor: - description: ServiceMonitor enables deploying a service monitor - for the Thanos Rulers. - type: boolean - 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) - * An existing PVC (PersistentVolumeClaim) 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 AnyVolumeDataSource - feature gate is enabled, this field will always have - the same contents as the DataSourceRef field.' - 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 - dataSourceRef: - description: 'Specifies the object from which to populate - the volume with data, if a non-empty volume is desired. - This may be any local object from a non-empty API group - (non core object) or a PersistentVolumeClaim object. - When this field is specified, volume binding will only - succeed if the type of the specified object matches - some installed volume populator or dynamic provisioner. - This field will replace the functionality of the DataSource - field and as such if both fields are non-empty, they - must have the same value. For backwards compatibility, - both fields (DataSource and DataSourceRef) will be set - to the same value automatically if one of them is empty - and the other is non-empty. There are two important - differences between DataSource and DataSourceRef: * - While DataSource only allows two specific types of objects, - DataSourceRef allows any non-core object, as well - as PersistentVolumeClaim objects. * While DataSource - ignores disallowed values (dropping them), DataSourceRef preserves - all values, and generates an error if a disallowed value - is specified. (Alpha) Using this field requires the - AnyVolumeDataSource feature gate to be enabled.' - 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. If RecoverVolumeExpansionFailure - feature is enabled users are allowed to specify resource - requirements that are lower than previous value but - must still be higher than capacity recorded in the status - field of the claim. 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-resources-containers/' - 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-resources-containers/' - 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 - securityContext: - description: Security options the pod should run with. - properties: - fsGroup: - description: "A special supplemental group that applies to all - containers in a pod. Some volume types allow the Kubelet to - change the ownership of that volume to be owned by the pod: - \n 1. The owning GID will be the FSGroup 2. The setgid bit is - set (new files created in the volume will be owned by FSGroup) - 3. The permission bits are OR'd with rw-rw---- \n If unset, - the Kubelet will not modify the ownership and permissions of - any volume. Note that this field cannot be set when spec.os.name - is windows." - format: int64 - type: integer - fsGroupChangePolicy: - description: 'fsGroupChangePolicy defines behavior of changing - ownership and permission of the volume before being exposed - inside Pod. This field will only apply to volume types which - support fsGroup based ownership(and permissions). It will have - no effect on ephemeral volume types such as: secret, configmaps - and emptydir. Valid values are "OnRootMismatch" and "Always". - If not specified, "Always" is used. Note that this field cannot - be set when spec.os.name is windows.' - type: string - runAsGroup: - description: The GID to run the entrypoint of the container process. - Uses runtime default if unset. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - Note that this field cannot be set when spec.os.name is windows. - format: int64 + runAsGroup: + description: The GID to run the entrypoint of the container process. + Uses runtime default if unset. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence for that container. + Note that this field cannot be set when spec.os.name is windows. + format: int64 type: integer runAsNonRoot: description: Indicates that the container must run as a non-root @@ -2299,25 +1482,309 @@ spec: and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. type: boolean - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in PodSecurityContext. - If set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: string + runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set in PodSecurityContext. + If set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. + type: string + type: object + type: object + thanos: + description: Thanos + properties: + compact: + description: Thanos Compact + properties: + enableDownsampling: + description: EnableDownsampling enables downsampling. + type: boolean + replicas: + description: Number of Compact replicas. + format: int32 + type: integer + resources: + description: Compute Resources required by this container. + 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-resources-containers/' + 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-resources-containers/' + type: object + type: object + retentionResolution1h: + description: RetentionResolutionRaw + type: string + retentionResolution5m: + description: RetentionResolutionRaw + type: string + retentionResolutionRaw: + description: RetentionResolutionRaw + type: string + serviceMonitor: + description: ServiceMonitor enables deploying a service monitor + for the Thanos Compactors. + type: boolean + 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) + * An existing PVC (PersistentVolumeClaim) 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 AnyVolumeDataSource feature gate + is enabled, this field will always have the same + contents as the DataSourceRef field.' + 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 + dataSourceRef: + description: 'Specifies the object from which to populate + the volume with data, if a non-empty volume is desired. + This may be any local object from a non-empty API + group (non core object) or a PersistentVolumeClaim + object. When this field is specified, volume binding + will only succeed if the type of the specified object + matches some installed volume populator or dynamic + provisioner. This field will replace the functionality + of the DataSource field and as such if both fields + are non-empty, they must have the same value. For + backwards compatibility, both fields (DataSource + and DataSourceRef) will be set to the same value + automatically if one of them is empty and the other + is non-empty. There are two important differences + between DataSource and DataSourceRef: * While DataSource + only allows two specific types of objects, DataSourceRef allows + any non-core object, as well as PersistentVolumeClaim + objects. * While DataSource ignores disallowed values + (dropping them), DataSourceRef preserves all values, + and generates an error if a disallowed value is specified. + (Alpha) Using this field requires the AnyVolumeDataSource + feature gate to be enabled.' + 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. If RecoverVolumeExpansionFailure + feature is enabled users are allowed to specify + resource requirements that are lower than previous + value but must still be higher than capacity recorded + in the status field of the claim. 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-resources-containers/' + 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-resources-containers/' + 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 + image: + description: Thanos image + type: string + query: + description: Thanos Query + properties: + replicas: + description: Number of Query replicas. + format: int32 + type: integer + resources: + description: Compute Resources required by this container. + 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-resources-containers/' + 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-resources-containers/' + type: object + type: object + serviceMonitor: + description: ServiceMonitor enables deploying a service monitor + for the Thanos Queriers. + type: boolean type: object - type: object - store: - description: Thanos StoreSpec - properties: - cache: - description: Memcached spec for Store + queryFrontend: + description: Thanos Query Frontend properties: - exporterImage: - description: Memcached Prometheus Exporter image - type: string - exporterResources: + replicas: + description: Number of Query Frontend replicas. + format: int32 + type: integer + resources: description: Compute Resources required by this container. properties: limits: @@ -2344,19 +1811,56 @@ spec: More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object - 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. + serviceMonitor: + description: ServiceMonitor enables deploying a service monitor + for the Thanos Query Frontends. + type: boolean + type: object + receiveController: + description: Thanos Receive Controller + properties: + resources: + description: Compute Resources required by this container. + 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-resources-containers/' + 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-resources-containers/' + type: object + type: object + serviceMonitor: + description: ServiceMonitor enables deploying a service monitor + for the Thanos Receiver Controller. + type: boolean + type: object + receivers: + description: Thanos Thanos Receiver + properties: + replicas: + description: Number of Receiver replicas. format: int32 type: integer - replicas: - description: Number of Memcached replicas. + replicationFactor: + description: ReplicationFactor defines the number of copies + of every time-series format: int32 type: integer resources: @@ -2388,137 +1892,522 @@ spec: type: object serviceMonitor: description: ServiceMonitor enables deploying a service monitor - for the Thanos Store Caches. + for the Thanos Receivers. type: boolean - version: - description: Version of Memcached image to be deployed. - type: string - type: object - image: - description: Thanos image - type: string - resources: - description: Compute Resources required by this container. - 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-resources-containers/' - 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-resources-containers/' + 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) + * An existing PVC (PersistentVolumeClaim) 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 AnyVolumeDataSource feature gate + is enabled, this field will always have the same + contents as the DataSourceRef field.' + 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 + dataSourceRef: + description: 'Specifies the object from which to populate + the volume with data, if a non-empty volume is desired. + This may be any local object from a non-empty API + group (non core object) or a PersistentVolumeClaim + object. When this field is specified, volume binding + will only succeed if the type of the specified object + matches some installed volume populator or dynamic + provisioner. This field will replace the functionality + of the DataSource field and as such if both fields + are non-empty, they must have the same value. For + backwards compatibility, both fields (DataSource + and DataSourceRef) will be set to the same value + automatically if one of them is empty and the other + is non-empty. There are two important differences + between DataSource and DataSourceRef: * While DataSource + only allows two specific types of objects, DataSourceRef allows + any non-core object, as well as PersistentVolumeClaim + objects. * While DataSource ignores disallowed values + (dropping them), DataSourceRef preserves all values, + and generates an error if a disallowed value is specified. + (Alpha) Using this field requires the AnyVolumeDataSource + feature gate to be enabled.' + 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. If RecoverVolumeExpansionFailure + feature is enabled users are allowed to specify + resource requirements that are lower than previous + value but must still be higher than capacity recorded + in the status field of the claim. 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-resources-containers/' + 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-resources-containers/' + 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 - serviceMonitor: - description: ServiceMonitor enables deploying a service monitor - for the Thanos Stores. - type: boolean - shards: - format: int32 - type: integer - version: - description: Version of Thanos image to be deployed. - type: string - volumeClaimTemplate: - description: VolumeClaimTemplate + rule: + description: Thanos Ruler properties: - spec: - description: PersistentVolumeClaimSpec describes the common - attributes of storage devices and allows a Source for provider-specific - attributes + alertmanagerURLs: + description: AlertmanagerURLs + items: + type: string + type: array + reloaderImage: + description: ReloaderImage is an image of configmap reloader + type: string + reloaderResources: + description: Compute Resources required by this container. 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: + 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-resources-containers/' + 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-resources-containers/' + type: object + type: object + replicas: + description: Number of Rule replicas. + format: int32 + type: integer + resources: + description: Compute Resources required by this container. + 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-resources-containers/' + 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-resources-containers/' + type: object + type: object + rulesConfig: + description: RulesConfig configures rules from the configmaps + items: + properties: + key: + description: Rule ConfigMap key type: string - type: array - dataSource: - description: 'This field can be used to specify either: - * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) 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 AnyVolumeDataSource - feature gate is enabled, this field will always have - the same contents as the DataSourceRef field.' + name: + description: Rule ConfigMap Name + type: string + required: + - key + - name + type: object + type: array + serviceMonitor: + description: ServiceMonitor enables deploying a service monitor + for the Thanos Rulers. + type: boolean + volumeClaimTemplate: + description: VolumeClaimTemplate + properties: + spec: + description: PersistentVolumeClaimSpec describes the common + attributes of storage devices and allows a Source for + provider-specific attributes 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. + 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) + * An existing PVC (PersistentVolumeClaim) 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 AnyVolumeDataSource feature gate + is enabled, this field will always have the same + contents as the DataSourceRef field.' + 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 + dataSourceRef: + description: 'Specifies the object from which to populate + the volume with data, if a non-empty volume is desired. + This may be any local object from a non-empty API + group (non core object) or a PersistentVolumeClaim + object. When this field is specified, volume binding + will only succeed if the type of the specified object + matches some installed volume populator or dynamic + provisioner. This field will replace the functionality + of the DataSource field and as such if both fields + are non-empty, they must have the same value. For + backwards compatibility, both fields (DataSource + and DataSourceRef) will be set to the same value + automatically if one of them is empty and the other + is non-empty. There are two important differences + between DataSource and DataSourceRef: * While DataSource + only allows two specific types of objects, DataSourceRef allows + any non-core object, as well as PersistentVolumeClaim + objects. * While DataSource ignores disallowed values + (dropping them), DataSourceRef preserves all values, + and generates an error if a disallowed value is specified. + (Alpha) Using this field requires the AnyVolumeDataSource + feature gate to be enabled.' + 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. If RecoverVolumeExpansionFailure + feature is enabled users are allowed to specify + resource requirements that are lower than previous + value but must still be higher than capacity recorded + in the status field of the claim. 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-resources-containers/' + 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-resources-containers/' + 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 - kind: - description: Kind is the type of resource being referenced + 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 - name: - description: Name is the name of resource being referenced + volumeName: + description: VolumeName is the binding reference to + the PersistentVolume backing this claim. type: string - required: - - kind - - name type: object - dataSourceRef: - description: 'Specifies the object from which to populate - the volume with data, if a non-empty volume is desired. - This may be any local object from a non-empty API group - (non core object) or a PersistentVolumeClaim object. - When this field is specified, volume binding will only - succeed if the type of the specified object matches - some installed volume populator or dynamic provisioner. - This field will replace the functionality of the DataSource - field and as such if both fields are non-empty, they - must have the same value. For backwards compatibility, - both fields (DataSource and DataSourceRef) will be set - to the same value automatically if one of them is empty - and the other is non-empty. There are two important - differences between DataSource and DataSourceRef: * - While DataSource only allows two specific types of objects, - DataSourceRef allows any non-core object, as well - as PersistentVolumeClaim objects. * While DataSource - ignores disallowed values (dropping them), DataSourceRef preserves - all values, and generates an error if a disallowed value - is specified. (Alpha) Using this field requires the - AnyVolumeDataSource feature gate to be enabled.' + required: + - spec + type: object + required: + - volumeClaimTemplate + type: object + store: + description: Thanos Store + properties: + cache: + description: Memcached spec for Store + properties: + exporterImage: + description: Memcached Prometheus Exporter image + type: string + exporterResources: + description: Compute Resources required by this container. 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 + 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-resources-containers/' + 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-resources-containers/' + type: object type: object + exporterVersion: + description: Version of Memcached Prometheus Exporter + image to be deployed. + type: string + memoryLimitMb: + description: Memory limit of Memcached in megabytes. + format: int32 + type: integer + replicas: + description: Number of Memcached replicas. + format: int32 + type: integer resources: - description: 'Resources represents the minimum resources - the volume should have. If RecoverVolumeExpansionFailure - feature is enabled users are allowed to specify resource - requirements that are lower than previous value but - must still be higher than capacity recorded in the status - field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + description: Compute Resources required by this container. properties: limits: additionalProperties: @@ -2544,112 +2433,241 @@ spec: value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object - selector: - description: A label query over volumes to consider for - binding. + serviceMonitor: + description: ServiceMonitor enables deploying a service + monitor for the Thanos Store Caches. + type: boolean + type: object + resources: + description: Compute Resources required by this container. + 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-resources-containers/' + 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-resources-containers/' + type: object + type: object + serviceMonitor: + description: ServiceMonitor enables deploying a service monitor + for the Thanos Stores. + type: boolean + shards: + format: int32 + type: integer + volumeClaimTemplate: + description: VolumeClaimTemplate + properties: + spec: + description: PersistentVolumeClaimSpec describes the common + attributes of storage devices and allows a Source for + provider-specific attributes properties: - matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. + 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: - 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: array + dataSource: + description: 'This field can be used to specify either: + * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) + * An existing PVC (PersistentVolumeClaim) 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 AnyVolumeDataSource feature gate + is enabled, this field will always have the same + contents as the DataSourceRef field.' + 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 + dataSourceRef: + description: 'Specifies the object from which to populate + the volume with data, if a non-empty volume is desired. + This may be any local object from a non-empty API + group (non core object) or a PersistentVolumeClaim + object. When this field is specified, volume binding + will only succeed if the type of the specified object + matches some installed volume populator or dynamic + provisioner. This field will replace the functionality + of the DataSource field and as such if both fields + are non-empty, they must have the same value. For + backwards compatibility, both fields (DataSource + and DataSourceRef) will be set to the same value + automatically if one of them is empty and the other + is non-empty. There are two important differences + between DataSource and DataSourceRef: * While DataSource + only allows two specific types of objects, DataSourceRef allows + any non-core object, as well as PersistentVolumeClaim + objects. * While DataSource ignores disallowed values + (dropping them), DataSourceRef preserves all values, + and generates an error if a disallowed value is specified. + (Alpha) Using this field requires the AnyVolumeDataSource + feature gate to be enabled.' + 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. If RecoverVolumeExpansionFailure + feature is enabled users are allowed to specify + resource requirements that are lower than previous + value but must still be higher than capacity recorded + in the status field of the claim. 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-resources-containers/' + 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-resources-containers/' + 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 - 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 + required: + - spec type: object required: - - spec - type: object - required: - - volumeClaimTemplate - type: object - thanosReceiveController: - description: Thanos Receive Controller Spec - properties: - image: - description: Receive Controller image - type: string - resources: - description: Compute Resources required by this container. - 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-resources-containers/' - 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-resources-containers/' - type: object + - volumeClaimTemplate type: object - serviceMonitor: - description: ServiceMonitor enables deploying a service monitor - for the Thanos Receiver Controller. - type: boolean version: - description: Version describes the version of Thanos receive controller - to use. + description: Version of Thanos image to be deployed. type: string + required: + - compact + - receivers + - rule + - store type: object tolerations: description: Tolerations causes all components to tolerate specified @@ -2693,12 +2711,8 @@ spec: type: object type: array required: - - compact - hashrings - objectStorageConfig - - receivers - - rule - - store type: object status: description: ObservatoriumStatus defines the observed state of Observatorium