--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.20.1 operatorframework.io/installed-alongside-9d879a41480c75ad: openshift-operators-redhat/loki-operator.v6.6.2 creationTimestamp: "2026-10-30T20:46:41Z" generation: 6 labels: app.kubernetes.io/instance: loki-operator-0.1.0 app.kubernetes.io/managed-by: operator-lifecycle-manager app.kubernetes.io/name: loki-operator app.kubernetes.io/part-of: cluster-logging app.kubernetes.io/version: 0.1.0 olm.managed: "true" operators.coreos.com/loki-operator.openshift-operators-redhat: "" managedFields: - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:status: f:acceptedNames: f:categories: {} f:kind: {} f:listKind: {} f:plural: {} f:singular: {} f:conditions: k:{"type":"Established"}: .: {} f:lastTransitionTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} k:{"type":"NamesAccepted"}: .: {} f:lastTransitionTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} manager: kube-apiserver operation: Update subresource: status time: "2026-10-30T20:46:41Z" - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:controller-gen.kubebuilder.io/version: {} f:operatorframework.io/installed-alongside-9d879a41480c75ad: {} f:labels: .: {} f:app.kubernetes.io/instance: {} f:app.kubernetes.io/managed-by: {} f:app.kubernetes.io/name: {} f:app.kubernetes.io/part-of: {} f:app.kubernetes.io/version: {} f:olm.managed: {} f:spec: f:conversion: .: {} f:strategy: {} f:webhook: .: {} f:clientConfig: .: {} f:service: .: {} f:namespace: {} f:path: {} f:port: {} f:conversionReviewVersions: {} f:group: {} f:names: f:categories: {} f:kind: {} f:listKind: {} f:plural: {} f:singular: {} f:scope: {} f:versions: {} manager: catalog operation: Update time: "2026-10-30T20:46:51Z" - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:operators.coreos.com/loki-operator.openshift-operators-redhat: {} f:spec: f:conversion: f:webhook: f:clientConfig: f:caBundle: {} f:service: f:name: {} manager: olm operation: Update time: "2026-10-30T20:46:51Z" name: lokistacks.loki.grafana.com resourceVersion: "15669" uid: 38af4b0f-27d1-4f58-8e14-61b36aec3a08 spec: conversion: strategy: Webhook webhook: clientConfig: caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJ1VENDQVdDZ0F3SUJBZ0lJQTlzK2p2QTB6ME13Q2dZSUtvWkl6ajBFQXdJd1FURVdNQlFHQTFVRUNoTU4KVW1Wa0lFaGhkQ3dnU1c1akxqRW5NQ1VHQTFVRUF4TWViMnh0TFhObGJHWnphV2R1WldRdE0yUmlNMlU0WldZdwpNelJqWmpRek1CNFhEVEkyTVRBek1ESXdORFkwTTFvWERUSTRNVEF5T1RJd05EWTBNMW93UVRFV01CUUdBMVVFCkNoTU5VbVZrSUVoaGRDd2dTVzVqTGpFbk1DVUdBMVVFQXhNZWIyeHRMWE5sYkdaemFXZHVaV1F0TTJSaU0yVTQKWldZd016UmpaalF6TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFT0pzZU5oWk1XcC9aVHhZNAoxK0NVVmlXVW1UNlIwYXJmU0FjYS9SSUhjaTdJblBXYnhVV0hVc2loWmYrSm91VFF5OGxrSVVDZXBOTit4cGExCnIvT3pNNk5DTUVBd0RnWURWUjBQQVFIL0JBUURBZ0lFTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SFFZRFZSME8KQkJZRUZDaDUyVzFrYTc1bzE2TENGSkNQZjVQNHVTc05NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJQjhzQXV0YwppaUhqWHNJUEZFSnVuS1lxRXdpRVhKVUJSNE9qdDlCVG5LWStBaUFLaXdvUXNFUW9zSVJ1WENrbTJ6SDVuY1NPClNDVk9sQ1dLaERYWnQrWk0rdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K service: name: loki-operator-controller-manager-service namespace: openshift-operators-redhat path: /convert port: 443 conversionReviewVersions: - v1 - v1beta1 group: loki.grafana.com names: categories: - logging kind: LokiStack listKind: LokiStackList plural: lokistacks singular: lokistack scope: Namespaced versions: - name: v1 schema: openAPIV3Schema: description: LokiStack is the Schema for the lokistacks API properties: apiVersion: description: |- APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: description: |- Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: description: LokiStack CR spec field. properties: hashRing: description: HashRing defines the spec for the distributed hash ring configuration. properties: memberlist: description: MemberList configuration spec properties: enableIPv6: description: |- EnableIPv6 enables IPv6 support for the memberlist based hash ring. Currently this also forces the instanceAddrType to podIP to avoid local address lookup for the memberlist. type: boolean instanceAddrType: description: |- InstanceAddrType defines the type of address to use to advertise to the ring. Defaults to the first address from any private network interfaces of the current pod. Alternatively the public pod IP can be used in case private networks (RFC 1918 and RFC 6598) are not available. enum: - default - podIP type: string type: object type: default: memberlist description: Type of hash ring implementation that should be used enum: - memberlist type: string required: - type type: object limits: description: Limits defines the limits to be applied to log stream processing. properties: global: description: Global defines the limits applied globally across the cluster. properties: ingestion: description: IngestionLimits defines the limits applied on ingested log streams. properties: ingestionBurstSize: description: |- IngestionBurstSize defines the local rate-limited sample size per distributor replica. It should be set to the set at least to the maximum logs size expected in a single push request. format: int32 type: integer ingestionRate: description: IngestionRate defines the sample size per second. Units MB. format: int32 type: integer maxGlobalStreamsPerTenant: description: |- MaxGlobalStreamsPerTenant defines the maximum number of active streams per tenant, across the cluster. format: int32 type: integer maxLabelNameLength: description: |- MaxLabelNameLength defines the maximum number of characters allowed for label keys in log streams. format: int32 type: integer maxLabelNamesPerSeries: description: |- MaxLabelNamesPerSeries defines the maximum number of label names per series in each log stream. format: int32 type: integer maxLabelValueLength: description: |- MaxLabelValueLength defines the maximum number of characters allowed for label values in log streams. format: int32 type: integer maxLineSize: description: MaxLineSize defines the maximum line size on ingestion path. Units in Bytes. format: int32 type: integer perStreamDesiredRate: description: |- PerStreamDesiredRate defines the desired ingestion rate per second that LokiStack should target applying automatic stream sharding. Units MB. format: int32 type: integer perStreamRateLimit: description: PerStreamRateLimit defines the maximum byte rate per second per stream. Units MB. format: int32 type: integer perStreamRateLimitBurst: description: PerStreamRateLimitBurst defines the maximum burst bytes per stream. Units MB. format: int32 type: integer type: object otlp: description: |- OTLP to configure which resource, scope and log attributes are stored as stream labels or structured metadata. Tenancy modes can provide a default OTLP configuration, when no custom OTLP configuration is set or even enforce the use of some required attributes. properties: drop: description: Drop configures which attributes are dropped from the log entry. properties: logAttributes: description: LogAttributes lists the names of log attributes that should be included in structured metadata. items: properties: name: description: Name contains either a verbatim name of an attribute or a regular expression matching many attributes. type: string regex: description: If Regex is true, then Name is treated as a regular expression instead of as a verbatim attribute name. type: boolean required: - name type: object type: array resourceAttributes: description: ResourceAttributes lists the names of resource attributes that should be included in structured metadata. items: properties: name: description: Name contains either a verbatim name of an attribute or a regular expression matching many attributes. type: string regex: description: If Regex is true, then Name is treated as a regular expression instead of as a verbatim attribute name. type: boolean required: - name type: object type: array scopeAttributes: description: ScopeAttributes lists the names of scope attributes that should be included in structured metadata. items: properties: name: description: Name contains either a verbatim name of an attribute or a regular expression matching many attributes. type: string regex: description: If Regex is true, then Name is treated as a regular expression instead of as a verbatim attribute name. type: boolean required: - name type: object type: array type: object streamLabels: description: StreamLabels configures which resource attributes are converted to Loki stream labels. properties: resourceAttributes: description: ResourceAttributes lists the names of the resource attributes that should be converted into Loki stream labels. items: properties: name: description: Name contains either a verbatim name of an attribute or a regular expression matching many attributes. type: string regex: description: If Regex is true, then Name is treated as a regular expression instead of as a verbatim attribute name. type: boolean required: - name type: object type: array type: object type: object queries: description: QueryLimits defines the limit applied on querying log streams. properties: cardinalityLimit: description: CardinalityLimit defines the cardinality limit for index queries. format: int32 type: integer maxChunksPerQuery: description: |- MaxChunksPerQuery defines the maximum number of chunks that can be fetched by a single query. format: int32 type: integer maxEntriesLimitPerQuery: description: |- MaxEntriesLimitPerQuery defines the maximum number of log entries that will be returned for a query. format: int32 type: integer maxQuerySeries: description: |- MaxQuerySeries defines the maximum of unique series that is returned by a metric query. format: int32 type: integer maxVolumeSeries: description: MaxVolumeSeries defines the maximum number of aggregated series in a log-volume response format: int32 type: integer queryTimeout: default: 3m description: Timeout when querying ingesters or storage during the execution of a query request. type: string type: object retention: description: Retention defines how long logs are kept in storage. properties: days: description: Days contains the number of days logs are kept. minimum: 1 type: integer streams: description: Stream defines the log stream. items: description: RetentionStreamSpec defines a log stream with separate retention time. properties: days: description: Days contains the number of days logs are kept. minimum: 1 type: integer priority: default: 1 description: Priority defines the priority of this selector compared to other retention rules. format: int32 type: integer selector: description: Selector contains the LogQL query used to define the log stream. type: string required: - days - selector type: object type: array required: - days type: object type: object tenants: additionalProperties: description: PerTenantLimitsTemplateSpec defines the limits applied at ingestion or query path. properties: ingestion: description: IngestionLimits defines the limits applied on ingested log streams. properties: ingestionBurstSize: description: |- IngestionBurstSize defines the local rate-limited sample size per distributor replica. It should be set to the set at least to the maximum logs size expected in a single push request. format: int32 type: integer ingestionRate: description: IngestionRate defines the sample size per second. Units MB. format: int32 type: integer maxGlobalStreamsPerTenant: description: |- MaxGlobalStreamsPerTenant defines the maximum number of active streams per tenant, across the cluster. format: int32 type: integer maxLabelNameLength: description: |- MaxLabelNameLength defines the maximum number of characters allowed for label keys in log streams. format: int32 type: integer maxLabelNamesPerSeries: description: |- MaxLabelNamesPerSeries defines the maximum number of label names per series in each log stream. format: int32 type: integer maxLabelValueLength: description: |- MaxLabelValueLength defines the maximum number of characters allowed for label values in log streams. format: int32 type: integer maxLineSize: description: MaxLineSize defines the maximum line size on ingestion path. Units in Bytes. format: int32 type: integer perStreamDesiredRate: description: |- PerStreamDesiredRate defines the desired ingestion rate per second that LokiStack should target applying automatic stream sharding. Units MB. format: int32 type: integer perStreamRateLimit: description: PerStreamRateLimit defines the maximum byte rate per second per stream. Units MB. format: int32 type: integer perStreamRateLimitBurst: description: PerStreamRateLimitBurst defines the maximum burst bytes per stream. Units MB. format: int32 type: integer type: object otlp: description: |- OTLP to configure which resource, scope and log attributes are stored as stream labels or structured metadata. Tenancy modes can provide a default OTLP configuration, when no custom OTLP configuration is set or even enforce the use of some required attributes. The per-tenant configuration for OTLP attributes will be merged with the global configuration. properties: drop: description: Drop configures which attributes are dropped from the log entry. properties: logAttributes: description: LogAttributes lists the names of log attributes that should be included in structured metadata. items: properties: name: description: Name contains either a verbatim name of an attribute or a regular expression matching many attributes. type: string regex: description: If Regex is true, then Name is treated as a regular expression instead of as a verbatim attribute name. type: boolean required: - name type: object type: array resourceAttributes: description: ResourceAttributes lists the names of resource attributes that should be included in structured metadata. items: properties: name: description: Name contains either a verbatim name of an attribute or a regular expression matching many attributes. type: string regex: description: If Regex is true, then Name is treated as a regular expression instead of as a verbatim attribute name. type: boolean required: - name type: object type: array scopeAttributes: description: ScopeAttributes lists the names of scope attributes that should be included in structured metadata. items: properties: name: description: Name contains either a verbatim name of an attribute or a regular expression matching many attributes. type: string regex: description: If Regex is true, then Name is treated as a regular expression instead of as a verbatim attribute name. type: boolean required: - name type: object type: array type: object streamLabels: description: StreamLabels configures which resource attributes are converted to Loki stream labels. properties: resourceAttributes: description: ResourceAttributes lists the names of the resource attributes that should be converted into Loki stream labels. items: properties: name: description: Name contains either a verbatim name of an attribute or a regular expression matching many attributes. type: string regex: description: If Regex is true, then Name is treated as a regular expression instead of as a verbatim attribute name. type: boolean required: - name type: object type: array type: object type: object queries: description: QueryLimits defines the limit applied on querying log streams. properties: blocked: description: Blocked defines the list of rules to block matching queries. items: description: BlockedQuerySpec defines the rule spec for queries to be blocked. minProperties: 1 properties: hash: description: Hash is a 32-bit FNV-1 hash of the query string. format: int32 type: integer pattern: description: Pattern defines the pattern matching the queries to be blocked. type: string regex: description: Regex defines if the pattern is a regular expression. If false the pattern will be used only for exact matches. type: boolean types: description: Types defines the list of query types that should be considered for blocking. items: description: BlockedQueryType defines which type of query a blocked query should apply to. enum: - filter - limited - metric type: string type: array type: object type: array cardinalityLimit: description: CardinalityLimit defines the cardinality limit for index queries. format: int32 type: integer maxChunksPerQuery: description: |- MaxChunksPerQuery defines the maximum number of chunks that can be fetched by a single query. format: int32 type: integer maxEntriesLimitPerQuery: description: |- MaxEntriesLimitPerQuery defines the maximum number of log entries that will be returned for a query. format: int32 type: integer maxQuerySeries: description: |- MaxQuerySeries defines the maximum of unique series that is returned by a metric query. format: int32 type: integer maxVolumeSeries: description: MaxVolumeSeries defines the maximum number of aggregated series in a log-volume response format: int32 type: integer queryTimeout: default: 3m description: Timeout when querying ingesters or storage during the execution of a query request. type: string type: object retention: description: Retention defines how long logs are kept in storage. properties: days: description: Days contains the number of days logs are kept. minimum: 1 type: integer streams: description: Stream defines the log stream. items: description: RetentionStreamSpec defines a log stream with separate retention time. properties: days: description: Days contains the number of days logs are kept. minimum: 1 type: integer priority: default: 1 description: Priority defines the priority of this selector compared to other retention rules. format: int32 type: integer selector: description: Selector contains the LogQL query used to define the log stream. type: string required: - days - selector type: object type: array required: - days type: object type: object description: Tenants defines the limits applied per tenant. type: object type: object managementState: default: Managed description: |- ManagementState defines if the CR should be managed by the operator or not. Default is managed. enum: - Managed - Unmanaged type: string networkPolicies: description: |- NetworkPolicies defines the NetworkPolicies configuration for LokiStack components. When enabled, the operator creates NetworkPolicies to control ingress/egress between Loki components and related services. properties: ruleSet: description: RuleSet determines which of the pre-defined sets of NetworkPolicy rules is used for this LokiStack. enum: - None - RestrictIngressEgress type: string required: - ruleSet type: object proxy: description: Proxy defines the spec for the object proxy to configure cluster proxy information. properties: httpProxy: description: HTTPProxy configures the HTTP_PROXY/http_proxy env variable. type: string httpsProxy: description: HTTPSProxy configures the HTTPS_PROXY/https_proxy env variable. type: string noProxy: description: NoProxy configures the NO_PROXY/no_proxy env variable. type: string type: object replication: description: Replication defines the configuration for Loki data replication. properties: factor: description: Factor defines the policy for log stream replication. format: int32 minimum: 1 type: integer zones: description: |- Zones defines an array of ZoneSpec that the scheduler will try to satisfy. IMPORTANT: Make sure that the replication factor defined is less than or equal to the number of available zones. items: description: ZoneSpec defines the spec to support zone-aware component deployments. properties: maxSkew: default: 1 description: MaxSkew describes the maximum degree to which Pods can be unevenly distributed. type: integer topologyKey: description: TopologyKey is the key that defines a topology in the Nodes' labels. type: string required: - maxSkew - topologyKey type: object type: array type: object replicationFactor: description: |- Deprecated: Please use replication.factor instead. This field will be removed in future versions of this CRD. ReplicationFactor defines the policy for log stream replication. format: int32 minimum: 1 type: integer rules: description: Rules defines the spec for the ruler component. properties: enabled: description: Enabled defines a flag to enable/disable the ruler component type: boolean namespaceSelector: description: |- Namespaces to be selected for PrometheusRules discovery. If unspecified, only the same namespace as the LokiStack object is in is used. 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 x-kubernetes-map-type: atomic selector: description: |- A selector to select which LokiRules to mount for loading alerting/recording rules from. 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 x-kubernetes-map-type: atomic required: - enabled type: object size: description: Size defines one of the support Loki deployment scale out sizes. enum: - 1x.demo - 1x.pico - 1x.extra-small - 1x.small - 1x.medium type: string storage: description: Storage defines the spec for the object storage endpoint to store logs. properties: schemas: default: - effectiveDate: "2020-10-11" version: v11 description: Schemas for reading and writing logs. items: description: ObjectStorageSchema defines a schema version and the date when it will become effective. properties: effectiveDate: description: |- EffectiveDate contains a date in YYYY-MM-DD format which is interpreted in the UTC time zone. The configuration always needs at least one schema that is currently valid. This means that when creating a new LokiStack it is recommended to add a schema with the latest available version and an effective date of "yesterday". New schema versions added to the configuration always needs to be placed "in the future", so that Loki can start using it once the day rolls over. pattern: ^([0-9]{4,})([-]([0-9]{2})){2}$ type: string version: description: Version for writing and reading logs. enum: - v11 - v12 - v13 type: string required: - effectiveDate - version type: object minItems: 1 type: array secret: description: |- Secret for object storage authentication. Name of a secret in the same namespace as the LokiStack custom resource. properties: credentialMode: description: |- CredentialMode can be used to set the desired credential mode for authenticating with the object storage. If this is not set, then the operator tries to infer the credential mode from the provided secret and its own configuration. enum: - static - token - token-cco type: string name: description: Name of a secret in the namespace configured for object storage secrets. type: string type: description: Type of object storage that should be used enum: - azure - gcs - s3 - swift - alibabacloud type: string required: - name - type type: object tls: description: TLS configuration for reaching the object storage endpoint. properties: caKey: description: |- Key is the data key of a ConfigMap containing a CA certificate. It needs to be in the same namespace as the LokiStack custom resource. If empty, it defaults to "service-ca.crt". type: string caName: description: |- CA is the name of a ConfigMap containing a CA certificate. It needs to be in the same namespace as the LokiStack custom resource. type: string required: - caName type: object required: - secret type: object storageClassName: description: Storage class name defines the storage class for ingester/querier PVCs. type: string template: description: Template defines the resource/limits/tolerations/nodeselectors per component. properties: compactor: description: Compactor defines the compaction component spec. properties: nodeSelector: additionalProperties: type: string description: |- NodeSelector defines the labels required by a node to schedule the component onto it. type: object podAntiAffinity: description: |- PodAntiAffinity defines the pod anti affinity scheduling rules to schedule pods of a component. properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: A label query over a set of resources, in this case pods. 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 x-kubernetes-map-type: atomic namespaceSelector: description: |- A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. 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 x-kubernetes-map-type: atomic namespaces: description: |- namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: |- This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object weight: description: |- weight associated with matching the corresponding podAffinityTerm, in the range 1-100. format: int32 type: integer required: - podAffinityTerm - weight type: object type: array requiredDuringSchedulingIgnoredDuringExecution: description: |- If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. items: description: |- Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running properties: labelSelector: description: A label query over a set of resources, in this case pods. 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 x-kubernetes-map-type: atomic namespaceSelector: description: |- A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. 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 x-kubernetes-map-type: atomic namespaces: description: |- namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: |- This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object type: array type: object replicas: description: Replicas defines the number of replica pods of the component. format: int32 type: integer tolerations: description: |- Tolerations defines the tolerations required by a node to schedule the component onto it. items: description: |- The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: |- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: |- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: |- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: |- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object distributor: description: Distributor defines the distributor component spec. properties: nodeSelector: additionalProperties: type: string description: |- NodeSelector defines the labels required by a node to schedule the component onto it. type: object podAntiAffinity: description: |- PodAntiAffinity defines the pod anti affinity scheduling rules to schedule pods of a component. properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: A label query over a set of resources, in this case pods. 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 x-kubernetes-map-type: atomic namespaceSelector: description: |- A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. 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 x-kubernetes-map-type: atomic namespaces: description: |- namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: |- This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object weight: description: |- weight associated with matching the corresponding podAffinityTerm, in the range 1-100. format: int32 type: integer required: - podAffinityTerm - weight type: object type: array requiredDuringSchedulingIgnoredDuringExecution: description: |- If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. items: description: |- Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running properties: labelSelector: description: A label query over a set of resources, in this case pods. 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 x-kubernetes-map-type: atomic namespaceSelector: description: |- A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. 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 x-kubernetes-map-type: atomic namespaces: description: |- namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: |- This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object type: array type: object replicas: description: Replicas defines the number of replica pods of the component. format: int32 type: integer tolerations: description: |- Tolerations defines the tolerations required by a node to schedule the component onto it. items: description: |- The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: |- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: |- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: |- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: |- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object gateway: description: Gateway defines the lokistack gateway component spec. properties: nodeSelector: additionalProperties: type: string description: |- NodeSelector defines the labels required by a node to schedule the component onto it. type: object podAntiAffinity: description: |- PodAntiAffinity defines the pod anti affinity scheduling rules to schedule pods of a component. properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: A label query over a set of resources, in this case pods. 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 x-kubernetes-map-type: atomic namespaceSelector: description: |- A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. 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 x-kubernetes-map-type: atomic namespaces: description: |- namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: |- This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object weight: description: |- weight associated with matching the corresponding podAffinityTerm, in the range 1-100. format: int32 type: integer required: - podAffinityTerm - weight type: object type: array requiredDuringSchedulingIgnoredDuringExecution: description: |- If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. items: description: |- Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running properties: labelSelector: description: A label query over a set of resources, in this case pods. 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 x-kubernetes-map-type: atomic namespaceSelector: description: |- A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. 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 x-kubernetes-map-type: atomic namespaces: description: |- namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: |- This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object type: array type: object replicas: description: Replicas defines the number of replica pods of the component. format: int32 type: integer tolerations: description: |- Tolerations defines the tolerations required by a node to schedule the component onto it. items: description: |- The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: |- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: |- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: |- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: |- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object indexGateway: description: IndexGateway defines the index gateway component spec. properties: nodeSelector: additionalProperties: type: string description: |- NodeSelector defines the labels required by a node to schedule the component onto it. type: object podAntiAffinity: description: |- PodAntiAffinity defines the pod anti affinity scheduling rules to schedule pods of a component. properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: A label query over a set of resources, in this case pods. 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 x-kubernetes-map-type: atomic namespaceSelector: description: |- A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. 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 x-kubernetes-map-type: atomic namespaces: description: |- namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: |- This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object weight: description: |- weight associated with matching the corresponding podAffinityTerm, in the range 1-100. format: int32 type: integer required: - podAffinityTerm - weight type: object type: array requiredDuringSchedulingIgnoredDuringExecution: description: |- If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. items: description: |- Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running properties: labelSelector: description: A label query over a set of resources, in this case pods. 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 x-kubernetes-map-type: atomic namespaceSelector: description: |- A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. 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 x-kubernetes-map-type: atomic namespaces: description: |- namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: |- This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object type: array type: object replicas: description: Replicas defines the number of replica pods of the component. format: int32 type: integer tolerations: description: |- Tolerations defines the tolerations required by a node to schedule the component onto it. items: description: |- The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: |- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: |- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: |- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: |- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object ingester: description: Ingester defines the ingester component spec. properties: nodeSelector: additionalProperties: type: string description: |- NodeSelector defines the labels required by a node to schedule the component onto it. type: object podAntiAffinity: description: |- PodAntiAffinity defines the pod anti affinity scheduling rules to schedule pods of a component. properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: A label query over a set of resources, in this case pods. 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 x-kubernetes-map-type: atomic namespaceSelector: description: |- A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. 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 x-kubernetes-map-type: atomic namespaces: description: |- namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: |- This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object weight: description: |- weight associated with matching the corresponding podAffinityTerm, in the range 1-100. format: int32 type: integer required: - podAffinityTerm - weight type: object type: array requiredDuringSchedulingIgnoredDuringExecution: description: |- If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. items: description: |- Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running properties: labelSelector: description: A label query over a set of resources, in this case pods. 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 x-kubernetes-map-type: atomic namespaceSelector: description: |- A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. 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 x-kubernetes-map-type: atomic namespaces: description: |- namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: |- This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object type: array type: object replicas: description: Replicas defines the number of replica pods of the component. format: int32 type: integer tolerations: description: |- Tolerations defines the tolerations required by a node to schedule the component onto it. items: description: |- The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: |- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: |- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: |- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: |- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object querier: description: Querier defines the querier component spec. properties: nodeSelector: additionalProperties: type: string description: |- NodeSelector defines the labels required by a node to schedule the component onto it. type: object podAntiAffinity: description: |- PodAntiAffinity defines the pod anti affinity scheduling rules to schedule pods of a component. properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: A label query over a set of resources, in this case pods. 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 x-kubernetes-map-type: atomic namespaceSelector: description: |- A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. 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 x-kubernetes-map-type: atomic namespaces: description: |- namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: |- This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object weight: description: |- weight associated with matching the corresponding podAffinityTerm, in the range 1-100. format: int32 type: integer required: - podAffinityTerm - weight type: object type: array requiredDuringSchedulingIgnoredDuringExecution: description: |- If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. items: description: |- Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running properties: labelSelector: description: A label query over a set of resources, in this case pods. 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 x-kubernetes-map-type: atomic namespaceSelector: description: |- A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. 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 x-kubernetes-map-type: atomic namespaces: description: |- namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: |- This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object type: array type: object replicas: description: Replicas defines the number of replica pods of the component. format: int32 type: integer tolerations: description: |- Tolerations defines the tolerations required by a node to schedule the component onto it. items: description: |- The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: |- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: |- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: |- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: |- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object queryFrontend: description: QueryFrontend defines the query frontend component spec. properties: nodeSelector: additionalProperties: type: string description: |- NodeSelector defines the labels required by a node to schedule the component onto it. type: object podAntiAffinity: description: |- PodAntiAffinity defines the pod anti affinity scheduling rules to schedule pods of a component. properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: A label query over a set of resources, in this case pods. 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 x-kubernetes-map-type: atomic namespaceSelector: description: |- A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. 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 x-kubernetes-map-type: atomic namespaces: description: |- namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: |- This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object weight: description: |- weight associated with matching the corresponding podAffinityTerm, in the range 1-100. format: int32 type: integer required: - podAffinityTerm - weight type: object type: array requiredDuringSchedulingIgnoredDuringExecution: description: |- If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. items: description: |- Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running properties: labelSelector: description: A label query over a set of resources, in this case pods. 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 x-kubernetes-map-type: atomic namespaceSelector: description: |- A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. 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 x-kubernetes-map-type: atomic namespaces: description: |- namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: |- This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object type: array type: object replicas: description: Replicas defines the number of replica pods of the component. format: int32 type: integer tolerations: description: |- Tolerations defines the tolerations required by a node to schedule the component onto it. items: description: |- The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: |- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: |- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: |- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: |- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object ruler: description: Ruler defines the ruler component spec. properties: nodeSelector: additionalProperties: type: string description: |- NodeSelector defines the labels required by a node to schedule the component onto it. type: object podAntiAffinity: description: |- PodAntiAffinity defines the pod anti affinity scheduling rules to schedule pods of a component. properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: A label query over a set of resources, in this case pods. 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 x-kubernetes-map-type: atomic namespaceSelector: description: |- A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. 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 x-kubernetes-map-type: atomic namespaces: description: |- namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: |- This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object weight: description: |- weight associated with matching the corresponding podAffinityTerm, in the range 1-100. format: int32 type: integer required: - podAffinityTerm - weight type: object type: array requiredDuringSchedulingIgnoredDuringExecution: description: |- If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. items: description: |- Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running properties: labelSelector: description: A label query over a set of resources, in this case pods. 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 x-kubernetes-map-type: atomic namespaceSelector: description: |- A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. 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 x-kubernetes-map-type: atomic namespaces: description: |- namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". items: type: string type: array topologyKey: description: |- This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. type: string required: - topologyKey type: object type: array type: object replicas: description: Replicas defines the number of replica pods of the component. format: int32 type: integer tolerations: description: |- Tolerations defines the tolerations required by a node to schedule the component onto it. items: description: |- The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: |- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: |- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: |- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: |- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object useRequestsAsLimits: description: |- When UseRequestsAsLimits is true, the operand Pods are configured to have resource limits equal to the resource requests. This imposes a hard limit on resource usage of the LokiStack, but limits its ability to react to load spikes, whether on the ingestion or query side. Note: This is currently a tech-preview feature. type: boolean type: object tenants: description: Tenants defines the per-tenant authentication and authorization spec for the lokistack-gateway component. properties: authentication: description: Authentication defines the lokistack-gateway component authentication configuration spec per tenant. items: description: AuthenticationSpec defines the oidc configuration per tenant for lokiStack Gateway component. properties: mTLS: description: TLSConfig defines the spec for the mTLS tenant's authentication. properties: ca: description: CA defines the spec for the custom CA for tenant's authentication. properties: caKey: description: |- Key is the data key of a ConfigMap containing a CA certificate. It needs to be in the same namespace as the LokiStack custom resource. If empty, it defaults to "service-ca.crt". type: string caName: description: |- CA is the name of a ConfigMap containing a CA certificate. It needs to be in the same namespace as the LokiStack custom resource. type: string required: - caName type: object required: - ca type: object oidc: description: OIDC defines the spec for the OIDC tenant's authentication. properties: groupClaim: description: Group claim field from ID Token type: string issuerCA: description: IssuerCA defines the spec for the issuer CA for tenant's authentication. properties: caKey: description: |- Key is the data key of a ConfigMap containing a CA certificate. It needs to be in the same namespace as the LokiStack custom resource. If empty, it defaults to "service-ca.crt". type: string caName: description: |- CA is the name of a ConfigMap containing a CA certificate. It needs to be in the same namespace as the LokiStack custom resource. type: string required: - caName type: object issuerURL: description: IssuerURL defines the URL for issuer. type: string redirectURL: description: RedirectURL defines the URL for redirect. type: string secret: description: Secret defines the spec for the clientID and clientSecret for tenant's authentication. properties: name: description: Name of a secret in the namespace configured for tenant secrets. type: string required: - name type: object usernameClaim: description: User claim field from ID Token type: string required: - issuerURL - secret type: object tenantId: description: TenantID defines the id of the tenant. type: string tenantName: description: TenantName defines the name of the tenant. type: string required: - tenantId - tenantName type: object type: array authorization: description: Authorization defines the lokistack-gateway component authorization configuration spec per tenant. properties: opa: description: OPA defines the spec for the third-party endpoint for tenant's authorization. properties: url: description: URL defines the third-party endpoint for authorization. type: string required: - url type: object roleBindings: description: RoleBindings defines configuration to bind a set of roles to a set of subjects. items: description: RoleBindingsSpec binds a set of roles to a set of subjects. properties: name: type: string roles: items: type: string type: array subjects: items: description: Subject represents a subject that has been bound to a role. properties: kind: description: SubjectKind is a kind of LokiStack Gateway RBAC subject. enum: - user - group type: string name: type: string required: - kind - name type: object type: array required: - name - roles - subjects type: object type: array roles: description: Roles defines a set of permissions to interact with a tenant. items: description: RoleSpec describes a set of permissions to interact with a tenant. properties: name: type: string permissions: items: description: PermissionType is a LokiStack Gateway RBAC permission. enum: - read - write type: string type: array resources: items: type: string type: array tenants: items: type: string type: array required: - name - permissions - resources - tenants type: object type: array type: object disableIngress: description: |- DisableIngress disables automatic creation of external access resources (Route / Ingress). When true, no Route or Ingress will be created for the gateway. type: boolean gateway: description: Gateway defines the configuration specific to Gateway server properties: tls: description: TLS defines the TLS configuration for the Gateway server. properties: ca: description: CA can be used to specify a custom list of trusted certificate authorities. properties: configMapName: description: ConfigMapName contains the name of the ConfigMap containing the referenced value. type: string key: description: Name of the key used to get the value in either the referenced ConfigMap or Secret. type: string secretName: description: SecretName contains the name of the Secret containing the referenced value. type: string required: - key type: object x-kubernetes-validations: - message: Either configMapName or secretName needs to be set rule: has(self.configMapName) || has(self.secretName) - message: Only one of configMapName and secretName can be set rule: '!(has(self.configMapName) && has(self.secretName))' certificate: description: Certificate points to the server certificate to use. properties: configMapName: description: ConfigMapName contains the name of the ConfigMap containing the referenced value. type: string key: description: Name of the key used to get the value in either the referenced ConfigMap or Secret. type: string secretName: description: SecretName contains the name of the Secret containing the referenced value. type: string required: - key type: object x-kubernetes-validations: - message: Either configMapName or secretName needs to be set rule: has(self.configMapName) || has(self.secretName) - message: Only one of configMapName and secretName can be set rule: '!(has(self.configMapName) && has(self.secretName))' privateKey: description: PrivateKey points to the private key of the server certificate. properties: key: description: Key contains the name of the key inside the referenced Secret. type: string secretName: description: SecretName contains the name of the Secret containing the referenced value. type: string required: - key - secretName type: object type: object type: object mode: default: openshift-logging description: Mode defines the mode in which lokistack-gateway component will be configured. enum: - static - dynamic - openshift-logging - openshift-network - passthrough type: string openshift: description: Openshift defines the configuration specific to Openshift modes. properties: adminGroups: description: |- AdminGroups defines a list of groups, whose members are considered to have admin-privileges by the Loki Operator. Setting this to an empty array disables admin groups. By default the following groups are considered admin-groups: - system:cluster-admins - cluster-admin - dedicated-admin items: type: string type: array otlp: description: OTLP contains settings for ingesting data using OTLP in the OpenShift tenancy mode. properties: enableConsoleLabels: description: |- EnableConsoleLabels can be used to add a set of additional stream labels to the OTLP input. These labels are currently used by the logs console in OpenShift. This is not different from manually adding some or all of the attributes to the set of stream labels using the normal OTLP configuration. The additional attributes which are converted to stream labels are: - k8s.container.name - k8s.cronjob.name - k8s.daemonset.name - k8s.deployment.name - k8s.job.name - k8s.node.name - k8s.pod.name - k8s.statefulset.name - kubernetes.container_name - kubernetes.host - kubernetes.pod_name - service.name See also: https://github.com/rhobs/observability-data-model/blob/main/cluster-logging.md#attributes type: boolean type: object type: object passthrough: description: Passthrough defines the configuration specific to Passthrough mode. properties: ca: description: |- CA can be used to specify a custom list of trusted certificate authorities. That will be used to validate the certificates of the clients that interact with the gateway properties: configMapName: description: ConfigMapName contains the name of the ConfigMap containing the referenced value. type: string key: description: Name of the key used to get the value in either the referenced ConfigMap or Secret. type: string secretName: description: SecretName contains the name of the Secret containing the referenced value. type: string required: - key type: object x-kubernetes-validations: - message: Either configMapName or secretName needs to be set rule: has(self.configMapName) || has(self.secretName) - message: Only one of configMapName and secretName can be set rule: '!(has(self.configMapName) && has(self.secretName))' defaultTenant: description: |- DefaultTenant defines the default tenant ID to use when X-Scope-OrgID header is not set. If not set, requests without X-Scope-OrgID are rejected. type: string type: object required: - mode type: object required: - size - storage - storageClassName type: object status: description: LokiStack CR spec Status. properties: components: description: |- Components provides summary of all Loki pod status grouped per component. properties: compactor: additionalProperties: items: type: string type: array description: Compactor is a map to the pod status of the compactor pod. type: object distributor: additionalProperties: items: type: string type: array description: Distributor is a map to the per pod status of the distributor deployment type: object gateway: additionalProperties: items: type: string type: array description: Gateway is a map to the per pod status of the lokistack gateway deployment. type: object indexGateway: additionalProperties: items: type: string type: array description: IndexGateway is a map to the per pod status of the index gateway statefulset type: object ingester: additionalProperties: items: type: string type: array description: Ingester is a map to the per pod status of the ingester statefulset type: object querier: additionalProperties: items: type: string type: array description: Querier is a map to the per pod status of the querier deployment type: object queryFrontend: additionalProperties: items: type: string type: array description: QueryFrontend is a map to the per pod status of the query frontend deployment type: object ruler: additionalProperties: items: type: string type: array description: Ruler is a map to the per pod status of the lokistack ruler statefulset. type: object type: object conditions: description: Conditions of the Loki deployment health. items: description: Condition contains details for one aspect of the current state of this API Resource. properties: lastTransitionTime: description: |- lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: |- message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: |- observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: |- reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array networkPolicyRuleSet: description: NetworkPolicyRuleSet indicates which NetworkPolicies ruleset was applied by the operator for this LokiStack. enum: - None - RestrictIngressEgress type: string storage: description: |- Storage provides summary of all changes that have occurred to the storage configuration. properties: credentialMode: description: CredentialMode contains the authentication mode used for accessing the object storage. enum: - static - token - token-cco type: string schemas: description: |- Schemas is a list of schemas which have been applied to the LokiStack. items: description: ObjectStorageSchema defines a schema version and the date when it will become effective. properties: effectiveDate: description: |- EffectiveDate contains a date in YYYY-MM-DD format which is interpreted in the UTC time zone. The configuration always needs at least one schema that is currently valid. This means that when creating a new LokiStack it is recommended to add a schema with the latest available version and an effective date of "yesterday". New schema versions added to the configuration always needs to be placed "in the future", so that Loki can start using it once the day rolls over. pattern: ^([0-9]{4,})([-]([0-9]{2})){2}$ type: string version: description: Version for writing and reading logs. enum: - v11 - v12 - v13 type: string required: - effectiveDate - version type: object type: array type: object type: object type: object served: true storage: true subresources: status: {} - name: v1beta1 schema: openAPIV3Schema: description: LokiStack is the Schema for the lokistacks API properties: apiVersion: description: |- APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: description: |- Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: description: LokiStackSpec defines the desired state of LokiStack properties: limits: description: Limits defines the per-tenant limits to be applied to log stream processing and the per-tenant the config overrides. properties: global: description: Global defines the limits applied globally across the cluster. properties: ingestion: description: IngestionLimits defines the limits applied on ingested log streams. properties: ingestionBurstSize: description: |- IngestionBurstSize defines the local rate-limited sample size per distributor replica. It should be set to the set at least to the maximum logs size expected in a single push request. format: int32 type: integer ingestionRate: description: IngestionRate defines the sample size per second. Units MB. format: int32 type: integer maxGlobalStreamsPerTenant: description: |- MaxGlobalStreamsPerTenant defines the maximum number of active streams per tenant, across the cluster. format: int32 type: integer maxLabelNameLength: description: |- MaxLabelNameLength defines the maximum number of characters allowed for label keys in log streams. format: int32 type: integer maxLabelNamesPerSeries: description: |- MaxLabelNamesPerSeries defines the maximum number of label names per series in each log stream. format: int32 type: integer maxLabelValueLength: description: |- MaxLabelValueLength defines the maximum number of characters allowed for label values in log streams. format: int32 type: integer maxLineSize: description: MaxLineSize defines the maximum line size on ingestion path. Units in Bytes. format: int32 type: integer type: object queries: description: QueryLimits defines the limit applied on querying log streams. properties: maxChunksPerQuery: description: |- MaxChunksPerQuery defines the maximum number of chunks that can be fetched by a single query. format: int32 type: integer maxEntriesLimitPerQuery: description: |- MaxEntriesLimitPerQuery defines the maximum number of log entries that will be returned for a query. format: int32 type: integer maxQuerySeries: description: |- MaxQuerySeries defines the maximum of unique series that is returned by a metric query. format: int32 type: integer type: object type: object tenants: additionalProperties: description: LimitsTemplateSpec defines the limits and overrides applied per-tenant. properties: ingestion: description: IngestionLimits defines the limits applied on ingested log streams. properties: ingestionBurstSize: description: |- IngestionBurstSize defines the local rate-limited sample size per distributor replica. It should be set to the set at least to the maximum logs size expected in a single push request. format: int32 type: integer ingestionRate: description: IngestionRate defines the sample size per second. Units MB. format: int32 type: integer maxGlobalStreamsPerTenant: description: |- MaxGlobalStreamsPerTenant defines the maximum number of active streams per tenant, across the cluster. format: int32 type: integer maxLabelNameLength: description: |- MaxLabelNameLength defines the maximum number of characters allowed for label keys in log streams. format: int32 type: integer maxLabelNamesPerSeries: description: |- MaxLabelNamesPerSeries defines the maximum number of label names per series in each log stream. format: int32 type: integer maxLabelValueLength: description: |- MaxLabelValueLength defines the maximum number of characters allowed for label values in log streams. format: int32 type: integer maxLineSize: description: MaxLineSize defines the maximum line size on ingestion path. Units in Bytes. format: int32 type: integer type: object queries: description: QueryLimits defines the limit applied on querying log streams. properties: maxChunksPerQuery: description: |- MaxChunksPerQuery defines the maximum number of chunks that can be fetched by a single query. format: int32 type: integer maxEntriesLimitPerQuery: description: |- MaxEntriesLimitPerQuery defines the maximum number of log entries that will be returned for a query. format: int32 type: integer maxQuerySeries: description: |- MaxQuerySeries defines the maximum of unique series that is returned by a metric query. format: int32 type: integer type: object type: object description: Tenants defines the limits and overrides applied per tenant. type: object type: object managementState: default: Managed description: |- ManagementState defines if the CR should be managed by the operator or not. Default is managed. enum: - Managed - Unmanaged type: string replicationFactor: default: 1 description: ReplicationFactor defines the policy for log stream replication. format: int32 minimum: 1 type: integer rules: description: Rules defines the spec for the ruler component properties: enabled: description: Enabled defines a flag to enable/disable the ruler component type: boolean namespaceSelector: description: |- Namespaces to be selected for PrometheusRules discovery. If unspecified, only the same namespace as the LokiStack object is in is used. 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 x-kubernetes-map-type: atomic selector: description: |- A selector to select which LokiRules to mount for loading alerting/recording rules from. 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 x-kubernetes-map-type: atomic required: - enabled type: object size: description: Size defines one of the support Loki deployment scale out sizes. enum: - 1x.extra-small - 1x.small - 1x.medium type: string storage: description: Storage defines the spec for the object storage endpoint to store logs. properties: schemas: default: - effectiveDate: "2020-10-11" version: v11 description: Schemas for reading and writing logs. items: description: |- ObjectStorageSchema defines the requirements needed to configure a new storage schema. properties: effectiveDate: description: |- EffectiveDate is the date in UTC that the schema will be applied on. To ensure readibility of logs, this date should be before the current date in UTC. pattern: ^([0-9]{4,})([-]([0-9]{2})){2}$ type: string version: description: Version for writing and reading logs. enum: - v11 - v12 type: string required: - effectiveDate - version type: object minItems: 1 type: array secret: description: |- Secret for object storage authentication. Name of a secret in the same namespace as the LokiStack custom resource. properties: name: description: Name of a secret in the namespace configured for object storage secrets. type: string type: description: Type of object storage that should be used enum: - azure - gcs - s3 - swift type: string required: - name - type type: object tls: description: TLS configuration for reaching the object storage endpoint. properties: caName: description: |- CA is the name of a ConfigMap containing a CA certificate. It needs to be in the same namespace as the LokiStack custom resource. type: string type: object required: - secret type: object storageClassName: description: Storage class name defines the storage class for ingester/querier PVCs. type: string template: description: Template defines the resource/limits/tolerations/nodeselectors per component properties: compactor: description: Compactor defines the compaction component spec. properties: nodeSelector: additionalProperties: type: string description: |- NodeSelector defines the labels required by a node to schedule the component onto it. type: object replicas: description: Replicas defines the number of replica pods of the component. format: int32 type: integer tolerations: description: |- Tolerations defines the tolerations required by a node to schedule the component onto it. items: description: |- The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: |- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: |- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: |- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: |- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object distributor: description: Distributor defines the distributor component spec. properties: nodeSelector: additionalProperties: type: string description: |- NodeSelector defines the labels required by a node to schedule the component onto it. type: object replicas: description: Replicas defines the number of replica pods of the component. format: int32 type: integer tolerations: description: |- Tolerations defines the tolerations required by a node to schedule the component onto it. items: description: |- The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: |- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: |- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: |- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: |- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object gateway: description: Gateway defines the lokistack gateway component spec. properties: nodeSelector: additionalProperties: type: string description: |- NodeSelector defines the labels required by a node to schedule the component onto it. type: object replicas: description: Replicas defines the number of replica pods of the component. format: int32 type: integer tolerations: description: |- Tolerations defines the tolerations required by a node to schedule the component onto it. items: description: |- The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: |- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: |- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: |- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: |- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object indexGateway: description: IndexGateway defines the index gateway component spec. properties: nodeSelector: additionalProperties: type: string description: |- NodeSelector defines the labels required by a node to schedule the component onto it. type: object replicas: description: Replicas defines the number of replica pods of the component. format: int32 type: integer tolerations: description: |- Tolerations defines the tolerations required by a node to schedule the component onto it. items: description: |- The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: |- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: |- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: |- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: |- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object ingester: description: Ingester defines the ingester component spec. properties: nodeSelector: additionalProperties: type: string description: |- NodeSelector defines the labels required by a node to schedule the component onto it. type: object replicas: description: Replicas defines the number of replica pods of the component. format: int32 type: integer tolerations: description: |- Tolerations defines the tolerations required by a node to schedule the component onto it. items: description: |- The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: |- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: |- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: |- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: |- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object querier: description: Querier defines the querier component spec. properties: nodeSelector: additionalProperties: type: string description: |- NodeSelector defines the labels required by a node to schedule the component onto it. type: object replicas: description: Replicas defines the number of replica pods of the component. format: int32 type: integer tolerations: description: |- Tolerations defines the tolerations required by a node to schedule the component onto it. items: description: |- The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: |- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: |- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: |- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: |- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object queryFrontend: description: QueryFrontend defines the query frontend component spec. properties: nodeSelector: additionalProperties: type: string description: |- NodeSelector defines the labels required by a node to schedule the component onto it. type: object replicas: description: Replicas defines the number of replica pods of the component. format: int32 type: integer tolerations: description: |- Tolerations defines the tolerations required by a node to schedule the component onto it. items: description: |- The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: |- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: |- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: |- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: |- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object ruler: description: Ruler defines the ruler component spec. properties: nodeSelector: additionalProperties: type: string description: |- NodeSelector defines the labels required by a node to schedule the component onto it. type: object replicas: description: Replicas defines the number of replica pods of the component. format: int32 type: integer tolerations: description: |- Tolerations defines the tolerations required by a node to schedule the component onto it. items: description: |- The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: |- Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: |- Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: |- Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: |- Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object type: object tenants: description: Tenants defines the per-tenant authentication and authorization spec for the lokistack-gateway component. properties: authentication: description: Authentication defines the lokistack-gateway component authentication configuration spec per tenant. items: description: AuthenticationSpec defines the oidc configuration per tenant for lokiStack Gateway component. properties: oidc: description: OIDC defines the spec for the OIDC tenant's authentication. properties: groupClaim: description: Group claim field from ID Token type: string issuerURL: description: IssuerURL defines the URL for issuer. type: string redirectURL: description: RedirectURL defines the URL for redirect. type: string secret: description: Secret defines the spec for the clientID, clientSecret and issuerCAPath for tenant's authentication. properties: name: description: Name of a secret in the namespace configured for tenant secrets. type: string required: - name type: object usernameClaim: description: User claim field from ID Token type: string required: - issuerURL - secret type: object tenantId: description: TenantID defines the id of the tenant. type: string tenantName: description: TenantName defines the name of the tenant. type: string required: - oidc - tenantId - tenantName type: object type: array authorization: description: Authorization defines the lokistack-gateway component authorization configuration spec per tenant. properties: opa: description: OPA defines the spec for the third-party endpoint for tenant's authorization. properties: url: description: URL defines the third-party endpoint for authorization. type: string required: - url type: object roleBindings: description: RoleBindings defines configuration to bind a set of roles to a set of subjects. items: description: RoleBindingsSpec binds a set of roles to a set of subjects. properties: name: type: string roles: items: type: string type: array subjects: items: description: Subject represents a subject that has been bound to a role. properties: kind: description: SubjectKind is a kind of LokiStack Gateway RBAC subject. enum: - user - group type: string name: type: string required: - kind - name type: object type: array required: - name - roles - subjects type: object type: array roles: description: Roles defines a set of permissions to interact with a tenant. items: description: RoleSpec describes a set of permissions to interact with a tenant. properties: name: type: string permissions: items: description: PermissionType is a LokiStack Gateway RBAC permission. enum: - read - write type: string type: array resources: items: type: string type: array tenants: items: type: string type: array required: - name - permissions - resources - tenants type: object type: array type: object mode: default: openshift-logging description: Mode defines the mode in which lokistack-gateway component will be configured. enum: - static - dynamic - openshift-logging type: string required: - mode type: object required: - managementState - size - storage - storageClassName type: object status: description: LokiStackStatus defines the observed state of LokiStack properties: components: description: |- Components provides summary of all Loki pod status grouped per component. properties: compactor: additionalProperties: items: type: string type: array description: Compactor is a map to the pod status of the compactor pod. type: object distributor: additionalProperties: items: type: string type: array description: Distributor is a map to the per pod status of the distributor deployment type: object gateway: additionalProperties: items: type: string type: array description: Gateway is a map to the per pod status of the lokistack gateway deployment. type: object indexGateway: additionalProperties: items: type: string type: array description: IndexGateway is a map to the per pod status of the index gateway statefulset type: object ingester: additionalProperties: items: type: string type: array description: Ingester is a map to the per pod status of the ingester statefulset type: object querier: additionalProperties: items: type: string type: array description: Querier is a map to the per pod status of the querier deployment type: object queryFrontend: additionalProperties: items: type: string type: array description: QueryFrontend is a map to the per pod status of the query frontend deployment type: object ruler: additionalProperties: items: type: string type: array description: Ruler is a map to the per pod status of the lokistack ruler statefulset. type: object type: object conditions: description: Conditions of the Loki deployment health. items: description: Condition contains details for one aspect of the current state of this API Resource. properties: lastTransitionTime: description: |- lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: |- message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: |- observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: |- reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array storage: description: |- Storage provides summary of all changes that have occurred to the storage configuration. properties: schemas: description: |- Schemas is a list of schemas which have been applied to the LokiStack. items: description: |- ObjectStorageSchema defines the requirements needed to configure a new storage schema. properties: effectiveDate: description: |- EffectiveDate is the date in UTC that the schema will be applied on. To ensure readibility of logs, this date should be before the current date in UTC. pattern: ^([0-9]{4,})([-]([0-9]{2})){2}$ type: string version: description: Version for writing and reading logs. enum: - v11 - v12 type: string required: - effectiveDate - version type: object type: array type: object type: object type: object served: false storage: false subresources: status: {} status: acceptedNames: categories: - logging kind: LokiStack listKind: LokiStackList plural: lokistacks singular: lokistack conditions: - lastTransitionTime: "2026-10-30T20:46:41Z" message: no conflicts found reason: NoConflicts status: "True" type: NamesAccepted - lastTransitionTime: "2026-10-30T20:46:41Z" message: the initial names have been accepted reason: InitialNamesAccepted status: "True" type: Established storedVersions: - v1