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 }