From 7d2f3dea7a62c8ebe32003e2efee1db52afc180f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Le=CC=81opold=20Jacquot?= Date: Mon, 27 Sep 2021 09:11:00 +0200 Subject: [PATCH] Use nginx controller canary metrics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Léopold Jacquot --- .../tutorials/nginx-progressive-delivery.md | 2 +- pkg/metrics/observers/nginx.go | 10 ++-- pkg/metrics/observers/nginx_test.go | 4 +- test/nginx/install.sh | 2 +- test/nginx/test-canary.sh | 48 ++----------------- 5 files changed, 15 insertions(+), 51 deletions(-) diff --git a/docs/gitbook/tutorials/nginx-progressive-delivery.md b/docs/gitbook/tutorials/nginx-progressive-delivery.md index 56e69d49..878ef4df 100644 --- a/docs/gitbook/tutorials/nginx-progressive-delivery.md +++ b/docs/gitbook/tutorials/nginx-progressive-delivery.md @@ -6,7 +6,7 @@ This guide shows you how to use the NGINX ingress controller and Flagger to auto ## Prerequisites -Flagger requires a Kubernetes cluster **v1.19** or newer and NGINX ingress **v0.46** or newer. +Flagger requires a Kubernetes cluster **v1.19** or newer and NGINX ingress **v1.0.2** or newer. Install the NGINX ingress controller with Helm v3: diff --git a/pkg/metrics/observers/nginx.go b/pkg/metrics/observers/nginx.go index c4f5f83b..a49440f6 100644 --- a/pkg/metrics/observers/nginx.go +++ b/pkg/metrics/observers/nginx.go @@ -31,6 +31,7 @@ var nginxQueries = map[string]string{ nginx_ingress_controller_requests{ namespace="{{ namespace }}", ingress="{{ ingress }}", + canary!="", status!~"5.*" }[{{ interval }}] ) @@ -40,7 +41,8 @@ var nginxQueries = map[string]string{ rate( nginx_ingress_controller_requests{ namespace="{{ namespace }}", - ingress="{{ ingress }}" + ingress="{{ ingress }}", + canary!="" }[{{ interval }}] ) ) @@ -50,7 +52,8 @@ var nginxQueries = map[string]string{ rate( nginx_ingress_controller_ingress_upstream_latency_seconds_sum{ namespace="{{ namespace }}", - ingress="{{ ingress }}" + ingress="{{ ingress }}", + canary!="" }[{{ interval }}] ) ) @@ -59,7 +62,8 @@ var nginxQueries = map[string]string{ rate( nginx_ingress_controller_ingress_upstream_latency_seconds_count{ namespace="{{ namespace }}", - ingress="{{ ingress }}" + ingress="{{ ingress }}", + canary!="" }[{{ interval }}] ) ) diff --git a/pkg/metrics/observers/nginx_test.go b/pkg/metrics/observers/nginx_test.go index 5c3285d1..66b7f20b 100644 --- a/pkg/metrics/observers/nginx_test.go +++ b/pkg/metrics/observers/nginx_test.go @@ -32,7 +32,7 @@ import ( func TestNginxObserver_GetRequestSuccessRate(t *testing.T) { t.Run("ok", func(t *testing.T) { - expected := ` sum( rate( nginx_ingress_controller_requests{ namespace="nginx", ingress="podinfo", status!~"5.*" }[1m] ) ) / sum( rate( nginx_ingress_controller_requests{ namespace="nginx", ingress="podinfo" }[1m] ) ) * 100` + expected := ` sum( rate( nginx_ingress_controller_requests{ namespace="nginx", ingress="podinfo", canary!="", status!~"5.*" }[1m] ) ) / sum( rate( nginx_ingress_controller_requests{ namespace="nginx", ingress="podinfo", canary!="" }[1m] ) ) * 100` ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { promql := r.URL.Query()["query"][0] assert.Equal(t, expected, promql) @@ -89,7 +89,7 @@ func TestNginxObserver_GetRequestSuccessRate(t *testing.T) { } func TestNginxObserver_GetRequestDuration(t *testing.T) { - expected := ` sum( rate( nginx_ingress_controller_ingress_upstream_latency_seconds_sum{ namespace="nginx", ingress="podinfo" }[1m] ) ) / sum( rate( nginx_ingress_controller_ingress_upstream_latency_seconds_count{ namespace="nginx", ingress="podinfo" }[1m] ) ) * 1000` + expected := ` sum( rate( nginx_ingress_controller_ingress_upstream_latency_seconds_sum{ namespace="nginx", ingress="podinfo", canary!="" }[1m] ) ) / sum( rate( nginx_ingress_controller_ingress_upstream_latency_seconds_count{ namespace="nginx", ingress="podinfo", canary!="" }[1m] ) ) * 1000` ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { promql := r.URL.Query()["query"][0] diff --git a/test/nginx/install.sh b/test/nginx/install.sh index 6e3b1f3b..b8681e6e 100755 --- a/test/nginx/install.sh +++ b/test/nginx/install.sh @@ -2,7 +2,7 @@ set -o errexit -NGINX_HELM_VERSION=3.36.0 # ingress v0.49.0 +NGINX_HELM_VERSION=4.0.3 # ingress v1.0.2 REPO_ROOT=$(git rev-parse --show-toplevel) mkdir -p ${REPO_ROOT}/bin diff --git a/test/nginx/test-canary.sh b/test/nginx/test-canary.sh index 04a2129f..8fc13945 100755 --- a/test/nginx/test-canary.sh +++ b/test/nginx/test-canary.sh @@ -32,40 +32,6 @@ spec: EOF echo '>>> Create metric templates' -cat <