mirror of
https://github.com/fluxcd/flagger.git
synced 2026-02-14 18:10:00 +00:00
Merge pull request #1683 from fluxcd/fix-kuma
kuma: bump e2e version to 2.7.5
This commit is contained in:
1
.github/workflows/build.yaml
vendored
1
.github/workflows/build.yaml
vendored
@@ -16,6 +16,7 @@ jobs:
|
||||
build-flagger:
|
||||
runs-on:
|
||||
group: "Default Larger Runners"
|
||||
labels: ubuntu-latest-16-cores
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
1
.github/workflows/e2e.yaml
vendored
1
.github/workflows/e2e.yaml
vendored
@@ -16,6 +16,7 @@ jobs:
|
||||
e2e-test:
|
||||
runs-on:
|
||||
group: "Default Larger Runners"
|
||||
labels: ubuntu-latest-16-cores
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
|
||||
3
.github/workflows/scan.yml
vendored
3
.github/workflows/scan.yml
vendored
@@ -25,8 +25,7 @@ jobs:
|
||||
fossa-api-key: 5ee8bf422db1471e0bcf2bcb289185de
|
||||
github-token: ${{ github.token }}
|
||||
scan-codeql:
|
||||
runs-on:
|
||||
group: "Default Larger Runners"
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
security-events: write
|
||||
steps:
|
||||
|
||||
@@ -15,7 +15,7 @@ kumactl install control-plane | kubectl apply -f -
|
||||
kumactl install observability --components "grafana,prometheus" | kubectl apply -f -
|
||||
```
|
||||
|
||||
Install Flagger in the `kuma-system` namespace:
|
||||
Install Flagger in the `kong-mesh-system` namespace:
|
||||
|
||||
```bash
|
||||
kubectl apply -k github.com/fluxcd/flagger//kustomize/kuma
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace: kuma-system
|
||||
namespace: kong-mesh-system
|
||||
bases:
|
||||
- ../base/flagger/
|
||||
patchesStrategicMerge:
|
||||
|
||||
@@ -33,7 +33,7 @@ var kumaQueries = map[string]string{
|
||||
sum(
|
||||
rate(
|
||||
envoy_cluster_upstream_rq{
|
||||
envoy_cluster_name=~"{{ target }}-canary_{{ namespace }}_svc_[0-9a-zA-Z-]+",
|
||||
service=~"{{ target }}-canary_{{ namespace }}_svc_[0-9a-zA-Z-]+",
|
||||
envoy_response_code!~"5.*"
|
||||
}[{{ interval }}]
|
||||
)
|
||||
@@ -42,7 +42,7 @@ var kumaQueries = map[string]string{
|
||||
sum(
|
||||
rate(
|
||||
envoy_cluster_upstream_rq{
|
||||
envoy_cluster_name=~"{{ target }}-canary_{{ namespace }}_svc_[0-9a-zA-Z-]+",
|
||||
service=~"{{ target }}-canary_{{ namespace }}_svc_[0-9a-zA-Z-]+",
|
||||
}[{{ interval }}]
|
||||
)
|
||||
)
|
||||
@@ -53,7 +53,7 @@ var kumaQueries = map[string]string{
|
||||
sum(
|
||||
rate(
|
||||
envoy_cluster_upstream_rq_time_bucket{
|
||||
envoy_cluster_name=~"{{ target }}-canary_{{ namespace }}_svc_[0-9a-zA-Z-]+",
|
||||
service=~"{{ target }}-canary_{{ namespace }}_svc_[0-9a-zA-Z-]+",
|
||||
}[{{ interval }}]
|
||||
)
|
||||
) by (le)
|
||||
|
||||
@@ -30,7 +30,7 @@ import (
|
||||
)
|
||||
|
||||
func TestKumaObserver_GetRequestSuccessRate(t *testing.T) {
|
||||
expected := ` sum( rate( envoy_cluster_upstream_rq{ envoy_cluster_name=~"podinfo-canary_default_svc_[0-9a-zA-Z-]+", envoy_response_code!~"5.*" }[1m] ) ) / sum( rate( envoy_cluster_upstream_rq{ envoy_cluster_name=~"podinfo-canary_default_svc_[0-9a-zA-Z-]+", }[1m] ) ) * 100`
|
||||
expected := ` sum( rate( envoy_cluster_upstream_rq{ service=~"podinfo-canary_default_svc_[0-9a-zA-Z-]+", envoy_response_code!~"5.*" }[1m] ) ) / sum( rate( envoy_cluster_upstream_rq{ service=~"podinfo-canary_default_svc_[0-9a-zA-Z-]+", }[1m] ) ) * 100`
|
||||
|
||||
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
promql := r.URL.Query()["query"][0]
|
||||
@@ -65,7 +65,7 @@ func TestKumaObserver_GetRequestSuccessRate(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestKumaObserver_GetRequestDuration(t *testing.T) {
|
||||
expected := ` histogram_quantile( 0.99, sum( rate( envoy_cluster_upstream_rq_time_bucket{ envoy_cluster_name=~"podinfo-canary_default_svc_[0-9a-zA-Z-]+", }[1m] ) ) by (le) )`
|
||||
expected := ` histogram_quantile( 0.99, sum( rate( envoy_cluster_upstream_rq_time_bucket{ service=~"podinfo-canary_default_svc_[0-9a-zA-Z-]+", }[1m] ) ) by (le) )`
|
||||
|
||||
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
promql := r.URL.Query()["query"][0]
|
||||
|
||||
@@ -2,14 +2,13 @@
|
||||
|
||||
set -o errexit
|
||||
|
||||
KUMA_VER="2.1.0"
|
||||
KUMA_VER="2.7.5"
|
||||
REPO_ROOT=$(git rev-parse --show-toplevel)
|
||||
mkdir -p ${REPO_ROOT}/bin
|
||||
|
||||
echo ">>> Downloading Kuma ${KUMA_VER}"
|
||||
curl -SsL https://download.konghq.com/mesh-alpine/kuma-${KUMA_VER}-ubuntu-amd64.tar.gz -o kuma-${KUMA_VER}.tar.gz
|
||||
tar xvzf kuma-${KUMA_VER}.tar.gz
|
||||
cp kuma-${KUMA_VER}/bin/kumactl ${REPO_ROOT}/bin/kumactl
|
||||
curl -L https://docs.konghq.com/mesh/installer.sh | VERSION=${KUMA_VER} sh -
|
||||
cp kong-mesh-${KUMA_VER}/bin/kumactl ${REPO_ROOT}/bin/kumactl
|
||||
chmod +x ${REPO_ROOT}/bin/kumactl
|
||||
|
||||
echo ">>> Installing Kuma ${KUMA_VER}"
|
||||
@@ -17,7 +16,7 @@ ${REPO_ROOT}/bin/kumactl install control-plane | kubectl apply -f -
|
||||
|
||||
echo ">>> Waiting for Kuma Control Plane to be ready"
|
||||
kubectl wait --for condition=established crd/meshes.kuma.io
|
||||
kubectl -n kuma-system rollout status deployment/kuma-control-plane
|
||||
kubectl -n kong-mesh-system rollout status deployment/kong-mesh-control-plane
|
||||
|
||||
echo ">>> Installing Prometheus"
|
||||
${REPO_ROOT}/bin/kumactl install observability --components "prometheus" | kubectl apply -f -
|
||||
@@ -26,5 +25,5 @@ kubectl -n mesh-observability rollout status deployment/prometheus-server
|
||||
echo '>>> Installing Flagger'
|
||||
kubectl apply -k ${REPO_ROOT}/kustomize/kuma
|
||||
|
||||
kubectl -n kuma-system set image deployment/flagger flagger=test/flagger:latest
|
||||
kubectl -n kuma-system rollout status deployment/flagger
|
||||
kubectl -n kong-mesh-system set image deployment/flagger flagger=test/flagger:latest
|
||||
kubectl -n kong-mesh-system rollout status deployment/flagger
|
||||
|
||||
@@ -8,4 +8,6 @@ DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
"$DIR"/install.sh
|
||||
|
||||
"$REPO_ROOT"/test/workloads/init.sh
|
||||
kubectl label namespace test kuma.io/sidecar-injection=enabled
|
||||
kubectl delete -n test ds podinfo-ds
|
||||
"$DIR"/test-canary.sh
|
||||
|
||||
@@ -6,6 +6,21 @@ set -o errexit
|
||||
|
||||
REPO_ROOT=$(git rev-parse --show-toplevel)
|
||||
|
||||
cat <<EOF | kubectl apply -f -
|
||||
apiVersion: kuma.io/v1alpha1
|
||||
kind: TrafficPermission
|
||||
mesh: default
|
||||
metadata:
|
||||
name: allow-all-traffic
|
||||
spec:
|
||||
sources:
|
||||
- match:
|
||||
kuma.io/service: '*'
|
||||
destinations:
|
||||
- match:
|
||||
kuma.io/service: '*'
|
||||
EOF
|
||||
|
||||
cat <<EOF | kubectl apply -f -
|
||||
apiVersion: flagger.app/v1beta1
|
||||
kind: Canary
|
||||
@@ -26,12 +41,18 @@ spec:
|
||||
apex:
|
||||
annotations:
|
||||
9898.service.kuma.io/protocol: "http"
|
||||
ingress.kubernetes.io/service-upstream: "true"
|
||||
nginx.ingress.kubernetes.io/service-upstream: "true"
|
||||
canary:
|
||||
annotations:
|
||||
9898.service.kuma.io/protocol: "http"
|
||||
ingress.kubernetes.io/service-upstream: "true"
|
||||
nginx.ingress.kubernetes.io/service-upstream: "true"
|
||||
primary:
|
||||
annotations:
|
||||
9898.service.kuma.io/protocol: "http"
|
||||
ingress.kubernetes.io/service-upstream: "true"
|
||||
nginx.ingress.kubernetes.io/service-upstream: "true"
|
||||
analysis:
|
||||
interval: 15s
|
||||
threshold: 15
|
||||
@@ -45,18 +66,19 @@ spec:
|
||||
threshold: 500
|
||||
interval: 30s
|
||||
webhooks:
|
||||
- name: acceptance-test
|
||||
type: pre-rollout
|
||||
url: http://flagger-loadtester.test/
|
||||
timeout: 30s
|
||||
metadata:
|
||||
type: bash
|
||||
cmd: "curl -sd 'test' http://podinfo-canary.test:9898/token | grep token"
|
||||
# temproarily disabled due to upstream issues
|
||||
# - name: acceptance-test
|
||||
# type: pre-rollout
|
||||
# url: http://flagger-loadtester.test/
|
||||
# timeout: 30s
|
||||
# metadata:
|
||||
# type: bash
|
||||
# cmd: "curl -sd 'test' http://podinfo-canary.test:9898/token | grep token"
|
||||
- name: load-test
|
||||
type: rollout
|
||||
url: http://flagger-loadtester.test/
|
||||
metadata:
|
||||
cmd: "hey -z 2m -q 10 -c 2 http://podinfo-canary.test:9898/"
|
||||
cmd: "hey -z 2m -q 10 -c 2 http://podinfo.test:9898/"
|
||||
EOF
|
||||
|
||||
echo '>>> Waiting for primary to be ready'
|
||||
@@ -68,7 +90,7 @@ until ${ok}; do
|
||||
sleep 5
|
||||
count=$(($count + 1))
|
||||
if [[ ${count} -eq ${retries} ]]; then
|
||||
kubectl -n kuma-system logs deployment/flagger
|
||||
kubectl -n kong-mesh-system logs deployment/flagger
|
||||
echo "No more retries left"
|
||||
exit 1
|
||||
fi
|
||||
@@ -94,10 +116,10 @@ ok=false
|
||||
until ${ok}; do
|
||||
kubectl -n test describe deployment/podinfo-primary | grep '6.0.1' && ok=true || ok=false
|
||||
sleep 10
|
||||
kubectl -n kuma-system logs deployment/flagger --tail 1
|
||||
kubectl -n kong-mesh-system logs deployment/flagger --tail 1
|
||||
count=$(($count + 1))
|
||||
if [[ ${count} -eq ${retries} ]]; then
|
||||
kubectl -n kuma-system logs deployment/flagger
|
||||
kubectl -n kong-mesh-system logs deployment/flagger
|
||||
echo "No more retries left"
|
||||
exit 1
|
||||
fi
|
||||
@@ -112,7 +134,7 @@ until ${ok}; do
|
||||
sleep 5
|
||||
count=$(($count + 1))
|
||||
if [[ ${count} -eq ${retries} ]]; then
|
||||
kubectl -n kuma-system logs deployment/flagger
|
||||
kubectl -n kong-mesh-system logs deployment/flagger
|
||||
echo "No more retries left"
|
||||
exit 1
|
||||
fi
|
||||
@@ -140,15 +162,21 @@ spec:
|
||||
apex:
|
||||
annotations:
|
||||
9898.service.kuma.io/protocol: "http"
|
||||
ingress.kubernetes.io/service-upstream: "true"
|
||||
nginx.ingress.kubernetes.io/service-upstream: "true"
|
||||
canary:
|
||||
annotations:
|
||||
9898.service.kuma.io/protocol: "http"
|
||||
ingress.kubernetes.io/service-upstream: "true"
|
||||
nginx.ingress.kubernetes.io/service-upstream: "true"
|
||||
primary:
|
||||
annotations:
|
||||
9898.service.kuma.io/protocol: "http"
|
||||
ingress.kubernetes.io/service-upstream: "true"
|
||||
nginx.ingress.kubernetes.io/service-upstream: "true"
|
||||
analysis:
|
||||
interval: 15s
|
||||
threshold: 15
|
||||
threshold: 5
|
||||
maxWeight: 50
|
||||
stepWeight: 10
|
||||
metrics:
|
||||
@@ -159,19 +187,20 @@ spec:
|
||||
threshold: 500
|
||||
interval: 30s
|
||||
webhooks:
|
||||
- name: acceptance-test
|
||||
type: pre-rollout
|
||||
url: http://flagger-loadtester.test/
|
||||
timeout: 30s
|
||||
metadata:
|
||||
type: bash
|
||||
cmd: "curl -sd 'test' http://podinfo-canary.test:9898/token | grep token"
|
||||
# temproarily disabled due to upstream issues
|
||||
# - name: acceptance-test
|
||||
# type: pre-rollout
|
||||
# url: http://flagger-loadtester.test/
|
||||
# timeout: 30s
|
||||
# metadata:
|
||||
# type: bash
|
||||
# cmd: "curl -sd 'test' http://podinfo-canary.test:9898/token | grep token"
|
||||
- name: load-test
|
||||
url: http://flagger-loadtester.test/
|
||||
timeout: 5s
|
||||
metadata:
|
||||
type: cmd
|
||||
cmd: "hey -z 2m -q 10 -c 2 http://podinfo-canary.test:9898/status/500"
|
||||
cmd: "hey -z 2m -q 10 -c 2 http://podinfo.test:9898/status/500"
|
||||
EOF
|
||||
|
||||
echo '>>> Triggering canary deployment rollback test'
|
||||
@@ -184,10 +213,10 @@ ok=false
|
||||
until ${ok}; do
|
||||
kubectl -n test get canary/podinfo | grep 'Failed' && ok=true || ok=false
|
||||
sleep 10
|
||||
kubectl -n kuma-system logs deployment/flagger --tail 1
|
||||
kubectl -n kong-mesh-system logs deployment/flagger --tail 1
|
||||
count=$(($count + 1))
|
||||
if [[ ${count} -eq ${retries} ]]; then
|
||||
kubectl -n kuma-system logs deployment/flagger
|
||||
kubectl -n kong-mesh-system logs deployment/flagger
|
||||
echo "No more retries left"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -13,7 +13,7 @@ echo '>>> Creating test namespace'
|
||||
kubectl create namespace test
|
||||
kubectl label namespace test istio-injection=enabled
|
||||
kubectl annotate namespace test linkerd.io/inject=enabled
|
||||
kubectl annotate namespace test kuma.io/sidecar-injection=enabled
|
||||
kubectl label namespace test kuma.io/sidecar-injection=enabled
|
||||
|
||||
echo '>>> Installing the load tester'
|
||||
kubectl apply -k ${REPO_ROOT}/kustomize/tester
|
||||
|
||||
Reference in New Issue
Block a user