k8c.io/api/v3@v3.0.0-20230904060738-b0a93889c0b6/pkg/apis/kubermatic/v1/mla_cluster_configuration.go (about)

     1  /*
     2  Copyright 2023 The Kubermatic Kubernetes Platform contributors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  package v1
    18  
    19  import (
    20  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    21  )
    22  
    23  // +genclient
    24  // +kubebuilder:resource:scope=Cluster
    25  // +kubebuilder:object:generate=true
    26  // +kubebuilder:object:root=true
    27  // +kubebuilder:printcolumn:JSONPath=".spec.cluster.name",name="Cluster",type="string"
    28  // +kubebuilder:printcolumn:JSONPath=".metadata.creationTimestamp",name="Age",type="date"
    29  
    30  // MLAClusterConfiguration is the object representing cluster-specific settings for user cluster
    31  // MLA (monitoring, logging & alerting) stack.
    32  type MLAClusterConfiguration struct {
    33  	metav1.TypeMeta   `json:",inline"`
    34  	metav1.ObjectMeta `json:"metadata,omitempty"`
    35  
    36  	Spec MLAClusterConfigurationSpec `json:"spec,omitempty"`
    37  }
    38  
    39  // MLAClusterConfigurationSpec specifies the cluster-specific administrator settings
    40  // for KKP user cluster MLA (monitoring, logging & alerting) stack.
    41  type MLAClusterConfigurationSpec struct {
    42  	// Cluster is the name of the user cluster whose MLA settings are defined in this object.
    43  	Cluster ClusterReference `json:"cluster"`
    44  	// Monitoring contains configuration for monitoring in the user cluster.
    45  	Monitoring *MonitoringConfiguration `json:"monitoring,omitempty"`
    46  	// Logging contains configuration logging in the user cluster.
    47  	Logging *LoggingConfiguration `json:"logging,omitempty"`
    48  }
    49  
    50  type MonitoringConfiguration struct {
    51  	// RateLimits contains rate-limiting configuration for monitoring in the user cluster.
    52  	RateLimits *MonitoringRateLimitSettings `json:"rateLimits,omitempty"`
    53  }
    54  
    55  type LoggingConfiguration struct {
    56  	// RateLimits contains rate-limiting configuration for monitoring in the user cluster.
    57  	RateLimits *LoggingRateLimitSettings `json:"rateLimits,omitempty"`
    58  }
    59  
    60  // MonitoringRateLimitSettings contains rate-limiting configuration for monitoring in the user cluster.
    61  type MonitoringRateLimitSettings struct {
    62  	// IngestionRate represents the ingestion rate limit in samples per second (Cortex `ingestion_rate`).
    63  	IngestionRate int32 `json:"ingestionRate,omitempty"`
    64  	// IngestionBurstSize represents ingestion burst size in samples per second (Cortex `ingestion_burst_size`).
    65  	IngestionBurstSize int32 `json:"ingestionBurstSize,omitempty"`
    66  	// MaxSeriesPerMetric represents maximum number of series per metric (Cortex `max_series_per_metric`).
    67  	MaxSeriesPerMetric int32 `json:"maxSeriesPerMetric,omitempty"`
    68  	// MaxSeriesTotal represents maximum number of series per this user cluster (Cortex `max_series_per_user`).
    69  	MaxSeriesTotal int32 `json:"maxSeriesTotal,omitempty"`
    70  
    71  	// QueryRate represents  query request rate limit per second (nginx `rate` in `r/s`).
    72  	QueryRate int32 `json:"queryRate,omitempty"`
    73  	// QueryBurstSize represents query burst size in number of requests (nginx `burst`).
    74  	QueryBurstSize int32 `json:"queryBurstSize,omitempty"`
    75  	// MaxSamplesPerQuery represents maximum number of samples during a query (Cortex `max_samples_per_query`).
    76  	MaxSamplesPerQuery int32 `json:"maxSamplesPerQuery,omitempty"`
    77  	// MaxSeriesPerQuery represents maximum number of timeseries during a query (Cortex `max_series_per_query`).
    78  	MaxSeriesPerQuery int32 `json:"maxSeriesPerQuery,omitempty"`
    79  }
    80  
    81  // LoggingRateLimitSettings contains rate-limiting configuration for logging in the user cluster.
    82  type LoggingRateLimitSettings struct {
    83  	// IngestionRate represents ingestion rate limit in requests per second (nginx `rate` in `r/s`).
    84  	IngestionRate int32 `json:"ingestionRate,omitempty"`
    85  	// IngestionBurstSize represents ingestion burst size in number of requests (nginx `burst`).
    86  	IngestionBurstSize int32 `json:"ingestionBurstSize,omitempty"`
    87  
    88  	// QueryRate represents query request rate limit per second (nginx `rate` in `r/s`).
    89  	QueryRate int32 `json:"queryRate,omitempty"`
    90  	// QueryBurstSize represents query burst size in number of requests (nginx `burst`).
    91  	QueryBurstSize int32 `json:"queryBurstSize,omitempty"`
    92  }
    93  
    94  // +kubebuilder:object:generate=true
    95  // +kubebuilder:object:root=true
    96  
    97  // MLAClusterConfigurationList specifies a list of administrator settings for KKP
    98  // user cluster MLA (monitoring, logging & alerting) stack.
    99  type MLAClusterConfigurationList struct {
   100  	metav1.TypeMeta `json:",inline"`
   101  	metav1.ListMeta `json:"metadata,omitempty"`
   102  
   103  	Items []MLAClusterConfiguration `json:"items"`
   104  }