Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add slok/sloth #67

Merged
merged 1 commit into from
Nov 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .reuse/dep5
Original file line number Diff line number Diff line change
Expand Up @@ -751,6 +751,10 @@ Files: crd-catalog/sigstore/sigstore-helm-operator/*
Copyright: The sigstore/sigstore-helm-operator Authors
License: Apache-2.0

Files: crd-catalog/slok/sloth/*
Copyright: The slok/sloth Authors
License: Apache-2.0

Files: crd-catalog/smartxworks/virtink/*
Copyright: The smartxworks/virtink Authors
License: Apache-2.0
Expand Down
7 changes: 7 additions & 0 deletions code-generator/src/catalog.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1929,6 +1929,13 @@ pub const CRD_V1_SOURCES: &'static [UpstreamSource] = &[
"https://github.com/sigstore/sigstore-helm-operator/blob/main/config/crd/bases/helm.sigstore.dev_rekors.yaml",
],
},
UpstreamSource {
project_name: "slok/sloth",
license: APACHE_V2,
urls: &[
"https://github.com/slok/sloth/blob/main/pkg/kubernetes/gen/crd/sloth.slok.dev_prometheusservicelevels.yaml",
],
},
UpstreamSource {
project_name: "smartxworks/virtink",
license: APACHE_V2,
Expand Down
218 changes: 218 additions & 0 deletions crd-catalog/slok/sloth/sloth.slok.dev/v1/prometheusservicelevels.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
name: prometheusservicelevels.sloth.slok.dev
spec:
group: sloth.slok.dev
names:
categories:
- slo
- slos
- sli
- slis
kind: PrometheusServiceLevel
listKind: PrometheusServiceLevelList
plural: prometheusservicelevels
shortNames:
- psl
- pslo
singular: prometheusservicelevel
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.service
name: SERVICE
type: string
- jsonPath: .status.processedSLOs
name: DESIRED SLOs
type: integer
- jsonPath: .status.promOpRulesGeneratedSLOs
name: READY SLOs
type: integer
- jsonPath: .status.promOpRulesGenerated
name: GEN OK
type: boolean
- jsonPath: .status.lastPromOpRulesSuccessfulGenerated
name: GEN AGE
type: date
- jsonPath: .metadata.creationTimestamp
name: AGE
type: date
name: v1
schema:
openAPIV3Schema:
description: PrometheusServiceLevel is the expected service quality level using Prometheus as the backend used by Sloth.
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: ServiceLevelSpec is the spec for a PrometheusServiceLevel.
properties:
labels:
additionalProperties:
type: string
description: Labels are the Prometheus labels that will have all the recording and alerting rules generated for the service SLOs.
type: object
service:
description: Service is the application of the SLOs.
type: string
slos:
description: SLOs are the SLOs of the service.
items:
description: SLO is the configuration/declaration of the service level objective of a service.
properties:
alerting:
description: Alerting is the configuration with all the things related with the SLO alerts.
properties:
annotations:
additionalProperties:
type: string
description: Annotations are the Prometheus annotations that will have all the alerts generated by this SLO.
type: object
labels:
additionalProperties:
type: string
description: Labels are the Prometheus labels that will have all the alerts generated by this SLO.
type: object
name:
description: Name is the name used by the alerts generated for this SLO.
type: string
pageAlert:
description: Page alert refers to the critical alert (check multiwindow-multiburn alerts).
properties:
annotations:
additionalProperties:
type: string
description: Annotations are the Prometheus annotations for the specific alert.
type: object
disable:
description: Disable disables the alert and makes Sloth not generating this alert. This can be helpful for example to disable ticket(warning) alerts.
type: boolean
labels:
additionalProperties:
type: string
description: Labels are the Prometheus labels for the specific alert. For example can be useful to route the Page alert to specific Slack channel.
type: object
type: object
ticketAlert:
description: TicketAlert alert refers to the warning alert (check multiwindow-multiburn alerts).
properties:
annotations:
additionalProperties:
type: string
description: Annotations are the Prometheus annotations for the specific alert.
type: object
disable:
description: Disable disables the alert and makes Sloth not generating this alert. This can be helpful for example to disable ticket(warning) alerts.
type: boolean
labels:
additionalProperties:
type: string
description: Labels are the Prometheus labels for the specific alert. For example can be useful to route the Page alert to specific Slack channel.
type: object
type: object
type: object
description:
description: Description is the description of the SLO.
type: string
labels:
additionalProperties:
type: string
description: Labels are the Prometheus labels that will have all the recording and alerting rules for this specific SLO. These labels are merged with the previous level labels.
type: object
name:
description: Name is the name of the SLO.
maxLength: 128
type: string
objective:
description: Objective is target of the SLO the percentage (0, 100] (e.g 99.9).
type: number
sli:
description: SLI is the indicator (service level indicator) for this specific SLO.
properties:
events:
description: Events is the events SLI type.
properties:
errorQuery:
description: ErrorQuery is a Prometheus query that will get the number/count of events that we consider that are bad for the SLO (e.g "http 5xx", "latency > 250ms"...). Requires the usage of `{{.window}}` template variable.
type: string
totalQuery:
description: TotalQuery is a Prometheus query that will get the total number/count of events for the SLO (e.g "all http requests"...). Requires the usage of `{{.window}}` template variable.
type: string
required:
- errorQuery
- totalQuery
type: object
plugin:
description: Plugin is the pluggable SLI type.
properties:
id:
description: Name is the name of the plugin that needs to load.
type: string
options:
additionalProperties:
type: string
description: Options are the options used for the plugin.
type: object
required:
- id
type: object
raw:
description: Raw is the raw SLI type.
properties:
errorRatioQuery:
description: ErrorRatioQuery is a Prometheus query that will get the raw error ratio (0-1) for the SLO.
type: string
required:
- errorRatioQuery
type: object
type: object
required:
- alerting
- name
- objective
- sli
type: object
minItems: 1
type: array
required:
- service
type: object
status:
properties:
lastPromOpRulesSuccessfulGenerated:
description: LastPromOpRulesGeneration tells the last atemp made for a successful SLO rules generate.
format: date-time
type: string
observedGeneration:
description: ObservedGeneration tells the generation was acted on, normally this is required to stop an infinite loop when the status is updated because it sends a watch updated event to the watchers of the K8s object.
format: int64
type: integer
processedSLOs:
description: ProcessedSLOs tells how many SLOs haven been processed for Prometheus operator.
type: integer
promOpRulesGenerated:
description: PromOpRulesGenerated tells if the rules for prometheus operator CRD have been generated.
type: boolean
promOpRulesGeneratedSLOs:
description: PromOpRulesGeneratedSLOs tells how many SLOs have been processed and generated for Prometheus operator successfully.
type: integer
required:
- observedGeneration
- processedSLOs
- promOpRulesGenerated
- promOpRulesGeneratedSLOs
type: object
type: object
served: true
storage: true
subresources:
status: {}
1 change: 1 addition & 0 deletions kube-custom-resources-rs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,7 @@ serving_kubedl_io_v1alpha1 = []
sfn_services_k8s_aws_v1alpha1 = []
site_superedge_io_v1alpha1 = []
slo_koordinator_sh_v1alpha1 = []
sloth_slok_dev_v1 = []
sonataflow_org_v1alpha08 = []
source_toolkit_fluxcd_io_v1beta1 = []
source_toolkit_fluxcd_io_v1beta2 = []
Expand Down
9 changes: 9 additions & 0 deletions kube-custom-resources-rs/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2552,6 +2552,13 @@ kinds:
- `NodeMetric`
- `NodeSLO`

## sloth_slok_dev_v1

apiVersion: `sloth.slok.dev/v1`

kinds:
- `PrometheusServiceLevel`

## sonataflow_org_v1alpha08

apiVersion: `sonataflow.org/v1alpha08`
Expand Down Expand Up @@ -3352,6 +3359,8 @@ pub mod sfn_services_k8s_aws_v1alpha1;
pub mod site_superedge_io_v1alpha1;
#[cfg(feature = "slo_koordinator_sh_v1alpha1")]
pub mod slo_koordinator_sh_v1alpha1;
#[cfg(feature = "sloth_slok_dev_v1")]
pub mod sloth_slok_dev_v1;
#[cfg(feature = "sonataflow_org_v1alpha08")]
pub mod sonataflow_org_v1alpha08;
#[cfg(feature = "source_toolkit_fluxcd_io_v1beta1")]
Expand Down
1 change: 1 addition & 0 deletions kube-custom-resources-rs/src/sloth_slok_dev_v1/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pub mod prometheusservicelevels;
Loading