diff --git a/testing/traefik/APKBUILD b/testing/traefik/APKBUILD
index c69772fe9a4124cb6cebefaa542d26feebfbb408..2cb4288becf3d76b70b03f4d3512adec46e9b42d 100644
--- a/testing/traefik/APKBUILD
+++ b/testing/traefik/APKBUILD
@@ -2,12 +2,11 @@
 # Contributor: Michał Polański <michal@polanski.me>
 # Maintainer: Michał Polański <michal@polanski.me>
 pkgname=traefik
-pkgver=2.2.0
-pkgrel=1
+pkgver=2.2.1
+pkgrel=0
 pkgdesc="The Cloud Native Edge Router"
 url="https://traefik.io"
-arch=""
-#arch="all !x86 !armhf !armv7 !mips !mips64" # tests fail on x86, armhf, and armv7, fails to build on mips
+arch="all !x86 !armhf !armv7 !mips !mips64" # tests fail on x86, armhf, and armv7; limited by go on mips
 license="MIT"
 makedepends="go go-bindata libcap"
 install="$pkgname.pre-install"
@@ -18,7 +17,8 @@ options="chmod-clean"
 source="$pkgname-$pkgver.tar.gz::https://github.com/containous/traefik/releases/download/v$pkgver/traefik-v$pkgver.src.tar.gz
 	traefik.initd
 	traefik.confd
-	traefik.toml"
+	traefik.toml
+	rate-limiter-test.patch"
 builddir="$srcdir"
 
 export BUILD_TIMESTAMP=$(date -u "+%Y-%m-%dT%TZ" ${SOURCE_DATE_EPOCH:+-d @$SOURCE_DATE_EPOCH})
@@ -61,7 +61,8 @@ cleanup_srcdir() {
 	default_cleanup_srcdir
 }
 
-sha512sums="97a8d382c9a6864b22e3b48e1740a84e1cd60904c1be35b3f4dbd00df694b608cacfa6df575fb9ddc342f88a612a4b6c8991b483b7a8b7a7d9e3c844786cac9c  traefik-2.2.0.tar.gz
+sha512sums="f23a58632cbef5c3326b464f9c85f59f2d29ed799d392da544f66c40113e3f08b504c35867479603c697c4ee660401ae2ac4596288bcb9de348ddbe597dea45c  traefik-2.2.1.tar.gz
 2fe42052cdb035b202c7c0a1acd5cfe9ed1800ca067f2f5588d54e6ffbdd672d7c46cfd57fcfc219cadaa24d64a0e038a20d092eb1e4c04b67b8eb83c0af74fd  traefik.initd
 1519c2f446c4bc3af8407eb367a05e5ec0491f28d56d5385b12a550c84606d84e2424aadd5d72e56e628fd1da3f0f194ab3c077e6da85ead75a256f8e8069751  traefik.confd
-7dff62db55362433fe33a69bfb556e6f285a033aaaab46ea970ae4ee1b19a4b0d6b25bf5523d4dc6b40d26922945fd1263ae8e53d295d6bf7f18ea1477a9e4d5  traefik.toml"
+7dff62db55362433fe33a69bfb556e6f285a033aaaab46ea970ae4ee1b19a4b0d6b25bf5523d4dc6b40d26922945fd1263ae8e53d295d6bf7f18ea1477a9e4d5  traefik.toml
+6b6f29fccef961647747b6a77c5b4f201a209e4dca9b21cc346236617076454f89f435bcb7a9f8cac04e3e8dca3b0e717ac5536ea96a283766d1b745eafb68b6  rate-limiter-test.patch"
diff --git a/testing/traefik/rate-limiter-test.patch b/testing/traefik/rate-limiter-test.patch
new file mode 100644
index 0000000000000000000000000000000000000000..f53d6b940ec68b24ad3f23c4ae122b8fa325ab08
--- /dev/null
+++ b/testing/traefik/rate-limiter-test.patch
@@ -0,0 +1,13 @@
+Upstream: No
+Reason: Allow extra leeway in rate limiting tests to prevent CI errors
+--- a/pkg/middlewares/ratelimiter/rate_limiter_test.go
++++ b/pkg/middlewares/ratelimiter/rate_limiter_test.go
+@@ -304,7 +304,7 @@ func TestRateLimit(t *testing.T) {
+ 			// we can expect some extra delay in addition to the rate limiting we already do,
+ 			// so we allow for some extra leeway there.
+ 			// Feel free to adjust wrt to the load on e.g. the CI.
+-			minCount := wantCount * 95 / 100
++			minCount := wantCount * 85 / 100
+ 			if reqCount < minCount {
+ 				t.Fatalf("rate was slower than expected: %d requests (wanted > %d) in %v", reqCount, minCount, elapsed)
+ 			}