Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

kuma: bump e2e version to 2.7.5 #1683

Merged
merged 4 commits into from
Jul 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ jobs:
e2e-test:
runs-on:
group: "Default Larger Runners"
labels: ubuntu-latest-16-cores
strategy:
fail-fast: false
matrix:
Expand Down
3 changes: 1 addition & 2 deletions .github/workflows/scan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
2 changes: 1 addition & 1 deletion docs/gitbook/tutorials/kuma-progressive-delivery.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion kustomize/kuma/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace: kuma-system
namespace: kong-mesh-system
bases:
- ../base/flagger/
patchesStrategicMerge:
Expand Down
6 changes: 3 additions & 3 deletions pkg/metrics/observers/kuma.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}]
)
Expand All @@ -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 }}]
)
)
Expand All @@ -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)
Expand Down
4 changes: 2 additions & 2 deletions pkg/metrics/observers/kuma_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down Expand Up @@ -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]
Expand Down
13 changes: 6 additions & 7 deletions test/kuma/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,21 @@

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}"
${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 -
Expand All @@ -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
2 changes: 2 additions & 0 deletions test/kuma/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
75 changes: 52 additions & 23 deletions test/kuma/test-canary.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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'
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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:
Expand All @@ -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'
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion test/workloads/init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading