Skip to content

Commit

Permalink
Merge pull request #273 from slok/slok/add-crd-helm-chart
Browse files Browse the repository at this point in the history
  • Loading branch information
slok authored Mar 27, 2022
2 parents 53d096d + 775d0f5 commit 947a2e9
Show file tree
Hide file tree
Showing 3 changed files with 274 additions and 1 deletion.
2 changes: 1 addition & 1 deletion deploy/kubernetes/helm/sloth/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ description: Base chart for Sloth.
type: application
home: https://github.com/slok/sloth
kubeVersion: ">= 1.19.0-0"
version: 0.4.3
version: 0.5.0
Original file line number Diff line number Diff line change
@@ -0,0 +1,269 @@

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
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: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []
4 changes: 4 additions & 0 deletions scripts/kubegen.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,7 @@ docker run -it --rm \
-e CRD_TYPES_PATH=/src/pkg/kubernetes/api \
-e CRD_OUT_PATH=/src/pkg/kubernetes/gen/crd \
${IMAGE_CRD_GEN} update-crd.sh

echo "Copying crd to helm chart..."
rm ./deploy/kubernetes/helm/sloth/crds/*
cp "${GEN_DIRECTORY}/crd"/* deploy/kubernetes/helm/sloth/crds/

0 comments on commit 947a2e9

Please sign in to comment.