Skip to content

Commit

Permalink
Merge pull request #1683 from fluxcd/fix-kuma
Browse files Browse the repository at this point in the history
kuma: bump e2e version to 2.7.5
  • Loading branch information
aryan9600 committed Jul 26, 2024
2 parents cff2032 + 4015103 commit 3d1aede
Show file tree
Hide file tree
Showing 11 changed files with 71 additions and 40 deletions.
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

0 comments on commit 3d1aede

Please sign in to comment.