Nereus/deploy/rollouts/analysistemplate.yaml

36 lines
1.2 KiB
YAML

# The real error-rate gate, replacing the vector(0.0) harness in
# scripts/k3d/analysis-harness/.
#
# Runs before promotion. Every sample has to pass; one failure aborts and the
# active Service never moves.
apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata:
name: nereus-api-error-rate
labels:
app.kubernetes.io/name: nereus-api
app.kubernetes.io/part-of: nereus
spec:
args:
- name: service
metrics:
- name: error-rate
# Let the new pods take traffic first.
initialDelay: 30s
interval: 20s
count: 5
failureLimit: 0
# Empty result means no traffic yet -- not a failure.
successCondition: "len(result) == 0 || result[0] < 0.05"
provider:
prometheus:
address: http://kube-prometheus-stack-prometheus.observability.svc.cluster.local:9090
# 5xx as a fraction of all responses on the preview.
# `or vector(0)` keeps the division defined when there are no errors.
query: |
(
sum(rate(nereus_http_requests_total{service="{{args.service}}",status=~"5.."}[1m]))
or vector(0)
)
/
sum(rate(nereus_http_requests_total{service="{{args.service}}"}[1m]))