# 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]))