From e6867082ded4d90567e72f70ac35474848883b0b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Jul 2024 16:48:35 +0000 Subject: [PATCH 1/8] Bump @vitest/coverage-v8 from 2.0.3 to 2.0.4 in /internal/mode/static/nginx/modules (#2269) Bump @vitest/coverage-v8 in /internal/mode/static/nginx/modules Bumps [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) from 2.0.3 to 2.0.4. - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v2.0.4/packages/coverage-v8) --- updated-dependencies: - dependency-name: "@vitest/coverage-v8" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../static/nginx/modules/package-lock.json | 241 ++++++++---------- .../mode/static/nginx/modules/package.json | 2 +- 2 files changed, 112 insertions(+), 131 deletions(-) diff --git a/internal/mode/static/nginx/modules/package-lock.json b/internal/mode/static/nginx/modules/package-lock.json index ae93643a5c..2e86dc3881 100644 --- a/internal/mode/static/nginx/modules/package-lock.json +++ b/internal/mode/static/nginx/modules/package-lock.json @@ -9,7 +9,7 @@ "esm": "3.2.25" }, "devDependencies": { - "@vitest/coverage-v8": "^2.0.3", + "@vitest/coverage-v8": "^2.0.4", "prettier": "3.3.3", "vitest": "^2.0.1" } @@ -530,9 +530,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.1.tgz", - "integrity": "sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.0.tgz", + "integrity": "sha512-JlPfZ/C7yn5S5p0yKk7uhHTTnFlvTgLetl2VxqE518QgyM7C9bSfFTYvB/Q/ftkq0RIPY4ySxTz+/wKJ/dXC0w==", "cpu": [ "arm" ], @@ -543,9 +543,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.1.tgz", - "integrity": "sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.0.tgz", + "integrity": "sha512-RDxUSY8D1tWYfn00DDi5myxKgOk6RvWPxhmWexcICt/MEC6yEMr4HNCu1sXXYLw8iAsg0D44NuU+qNq7zVWCrw==", "cpu": [ "arm64" ], @@ -556,9 +556,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.1.tgz", - "integrity": "sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.0.tgz", + "integrity": "sha512-emvKHL4B15x6nlNTBMtIaC9tLPRpeA5jMvRLXVbl/W9Ie7HhkrE7KQjvgS9uxgatL1HmHWDXk5TTS4IaNJxbAA==", "cpu": [ "arm64" ], @@ -569,9 +569,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.1.tgz", - "integrity": "sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.0.tgz", + "integrity": "sha512-fO28cWA1dC57qCd+D0rfLC4VPbh6EOJXrreBmFLWPGI9dpMlER2YwSPZzSGfq11XgcEpPukPTfEVFtw2q2nYJg==", "cpu": [ "x64" ], @@ -582,9 +582,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.1.tgz", - "integrity": "sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.0.tgz", + "integrity": "sha512-2Rn36Ubxdv32NUcfm0wB1tgKqkQuft00PtM23VqLuCUR4N5jcNWDoV5iBC9jeGdgS38WK66ElncprqgMUOyomw==", "cpu": [ "arm" ], @@ -595,9 +595,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.1.tgz", - "integrity": "sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.0.tgz", + "integrity": "sha512-gJuzIVdq/X1ZA2bHeCGCISe0VWqCoNT8BvkQ+BfsixXwTOndhtLUpOg0A1Fcx/+eA6ei6rMBzlOz4JzmiDw7JQ==", "cpu": [ "arm" ], @@ -608,9 +608,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.1.tgz", - "integrity": "sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.0.tgz", + "integrity": "sha512-0EkX2HYPkSADo9cfeGFoQ7R0/wTKb7q6DdwI4Yn/ULFE1wuRRCHybxpl2goQrx4c/yzK3I8OlgtBu4xvted0ug==", "cpu": [ "arm64" ], @@ -621,9 +621,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.1.tgz", - "integrity": "sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.0.tgz", + "integrity": "sha512-GlIQRj9px52ISomIOEUq/IojLZqzkvRpdP3cLgIE1wUWaiU5Takwlzpz002q0Nxxr1y2ZgxC2obWxjr13lvxNQ==", "cpu": [ "arm64" ], @@ -634,9 +634,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.1.tgz", - "integrity": "sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.0.tgz", + "integrity": "sha512-N6cFJzssruDLUOKfEKeovCKiHcdwVYOT1Hs6dovDQ61+Y9n3Ek4zXvtghPPelt6U0AH4aDGnDLb83uiJMkWYzQ==", "cpu": [ "ppc64" ], @@ -647,9 +647,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.1.tgz", - "integrity": "sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.0.tgz", + "integrity": "sha512-2DnD3mkS2uuam/alF+I7M84koGwvn3ZVD7uG+LEWpyzo/bq8+kKnus2EVCkcvh6PlNB8QPNFOz6fWd5N8o1CYg==", "cpu": [ "riscv64" ], @@ -660,9 +660,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.1.tgz", - "integrity": "sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.0.tgz", + "integrity": "sha512-D6pkaF7OpE7lzlTOFCB2m3Ngzu2ykw40Nka9WmKGUOTS3xcIieHe82slQlNq69sVB04ch73thKYIWz/Ian8DUA==", "cpu": [ "s390x" ], @@ -673,9 +673,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.1.tgz", - "integrity": "sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.0.tgz", + "integrity": "sha512-HBndjQLP8OsdJNSxpNIN0einbDmRFg9+UQeZV1eiYupIRuZsDEoeGU43NQsS34Pp166DtwQOnpcbV/zQxM+rWA==", "cpu": [ "x64" ], @@ -686,9 +686,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.1.tgz", - "integrity": "sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.0.tgz", + "integrity": "sha512-HxfbvfCKJe/RMYJJn0a12eiOI9OOtAUF4G6ozrFUK95BNyoJaSiBjIOHjZskTUffUrB84IPKkFG9H9nEvJGW6A==", "cpu": [ "x64" ], @@ -699,9 +699,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.1.tgz", - "integrity": "sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.0.tgz", + "integrity": "sha512-HxDMKIhmcguGTiP5TsLNolwBUK3nGGUEoV/BO9ldUBoMLBssvh4J0X8pf11i1fTV7WShWItB1bKAKjX4RQeYmg==", "cpu": [ "arm64" ], @@ -712,9 +712,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.1.tgz", - "integrity": "sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.0.tgz", + "integrity": "sha512-xItlIAZZaiG/u0wooGzRsx11rokP4qyc/79LkAOdznGRAbOFc+SfEdfUOszG1odsHNgwippUJavag/+W/Etc6Q==", "cpu": [ "ia32" ], @@ -725,9 +725,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.1.tgz", - "integrity": "sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.0.tgz", + "integrity": "sha512-xNo5fV5ycvCCKqiZcpB65VMR11NJB+StnxHz20jdqRAktfdfzhgjTiJ2doTDQE/7dqGaV5I7ZGqKpgph6lCIag==", "cpu": [ "x64" ], @@ -744,9 +744,9 @@ "dev": true }, "node_modules/@vitest/coverage-v8": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.0.3.tgz", - "integrity": "sha512-53d+6jXFdYbasXBmsL6qaGIfcY5eBQq0sP57AjdasOcSiGNj4qxkkpDKIitUNfjxcfAfUfQ8BD0OR2fSey64+g==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.0.4.tgz", + "integrity": "sha512-i4lx/Wpg5zF1h2op7j0wdwuEQxaL/YTwwQaKuKMHYj7MMh8c7I4W7PNfOptZBCSBZI0z1qwn64o0pM/pA8Tz1g==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.3.0", @@ -759,7 +759,6 @@ "magic-string": "^0.30.10", "magicast": "^0.3.4", "std-env": "^3.7.0", - "strip-literal": "^2.1.0", "test-exclude": "^7.0.1", "tinyrainbow": "^1.2.0" }, @@ -767,17 +766,17 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "2.0.3" + "vitest": "2.0.4" } }, "node_modules/@vitest/expect": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.3.tgz", - "integrity": "sha512-X6AepoOYePM0lDNUPsGXTxgXZAl3EXd0GYe/MZyVE4HzkUqyUVC6S3PrY5mClDJ6/7/7vALLMV3+xD/Ko60Hqg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.4.tgz", + "integrity": "sha512-39jr5EguIoanChvBqe34I8m1hJFI4+jxvdOpD7gslZrVQBKhh8H9eD7J/LJX4zakrw23W+dITQTDqdt43xVcJw==", "dev": true, "dependencies": { - "@vitest/spy": "2.0.3", - "@vitest/utils": "2.0.3", + "@vitest/spy": "2.0.4", + "@vitest/utils": "2.0.4", "chai": "^5.1.1", "tinyrainbow": "^1.2.0" }, @@ -786,9 +785,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.3.tgz", - "integrity": "sha512-URM4GLsB2xD37nnTyvf6kfObFafxmycCL8un3OC9gaCs5cti2u+5rJdIflZ2fUJUen4NbvF6jCufwViAFLvz1g==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.4.tgz", + "integrity": "sha512-RYZl31STbNGqf4l2eQM1nvKPXE0NhC6Eq0suTTePc4mtMQ1Fn8qZmjV4emZdEdG2NOWGKSCrHZjmTqDCDoeFBw==", "dev": true, "dependencies": { "tinyrainbow": "^1.2.0" @@ -798,12 +797,12 @@ } }, "node_modules/@vitest/runner": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.3.tgz", - "integrity": "sha512-EmSP4mcjYhAcuBWwqgpjR3FYVeiA4ROzRunqKltWjBfLNs1tnMLtF+qtgd5ClTwkDP6/DGlKJTNa6WxNK0bNYQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.4.tgz", + "integrity": "sha512-Gk+9Su/2H2zNfNdeJR124gZckd5st4YoSuhF1Rebi37qTXKnqYyFCd9KP4vl2cQHbtuVKjfEKrNJxHHCW8thbQ==", "dev": true, "dependencies": { - "@vitest/utils": "2.0.3", + "@vitest/utils": "2.0.4", "pathe": "^1.1.2" }, "funding": { @@ -811,12 +810,12 @@ } }, "node_modules/@vitest/snapshot": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.3.tgz", - "integrity": "sha512-6OyA6v65Oe3tTzoSuRPcU6kh9m+mPL1vQ2jDlPdn9IQoUxl8rXhBnfICNOC+vwxWY684Vt5UPgtcA2aPFBb6wg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.4.tgz", + "integrity": "sha512-or6Mzoz/pD7xTvuJMFYEtso1vJo1S5u6zBTinfl+7smGUhqybn6VjzCDMhmTyVOFWwkCMuNjmNNxnyXPgKDoPw==", "dev": true, "dependencies": { - "@vitest/pretty-format": "2.0.3", + "@vitest/pretty-format": "2.0.4", "magic-string": "^0.30.10", "pathe": "^1.1.2" }, @@ -825,9 +824,9 @@ } }, "node_modules/@vitest/spy": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.3.tgz", - "integrity": "sha512-sfqyAw/ypOXlaj4S+w8689qKM1OyPOqnonqOc9T91DsoHbfN5mU7FdifWWv3MtQFf0lEUstEwR9L/q/M390C+A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.4.tgz", + "integrity": "sha512-uTXU56TNoYrTohb+6CseP8IqNwlNdtPwEO0AWl+5j7NelS6x0xZZtP0bDWaLvOfUbaYwhhWp1guzXUxkC7mW7Q==", "dev": true, "dependencies": { "tinyspy": "^3.0.0" @@ -837,12 +836,12 @@ } }, "node_modules/@vitest/utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.3.tgz", - "integrity": "sha512-c/UdELMuHitQbbc/EVctlBaxoYAwQPQdSNwv7z/vHyBKy2edYZaFgptE27BRueZB7eW8po+cllotMNTDpL3HWg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.4.tgz", + "integrity": "sha512-Zc75QuuoJhOBnlo99ZVUkJIuq4Oj0zAkrQ2VzCqNCx6wAwViHEh5Fnp4fiJTE9rA+sAoXRf00Z9xGgfEzV6fzQ==", "dev": true, "dependencies": { - "@vitest/pretty-format": "2.0.3", + "@vitest/pretty-format": "2.0.4", "estree-walker": "^3.0.3", "loupe": "^3.1.1", "tinyrainbow": "^1.2.0" @@ -1262,12 +1261,6 @@ "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/js-tokens": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", - "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", - "dev": true - }, "node_modules/loupe": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", @@ -1537,9 +1530,9 @@ } }, "node_modules/rollup": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.1.tgz", - "integrity": "sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.19.0.tgz", + "integrity": "sha512-5r7EYSQIowHsK4eTZ0Y81qpZuJz+MUuYeqmmYmRMl1nwhdmbiYqt5jwzf6u7wyOzJgYqtCRMtVRKOtHANBz7rA==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -1552,22 +1545,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.18.1", - "@rollup/rollup-android-arm64": "4.18.1", - "@rollup/rollup-darwin-arm64": "4.18.1", - "@rollup/rollup-darwin-x64": "4.18.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.18.1", - "@rollup/rollup-linux-arm-musleabihf": "4.18.1", - "@rollup/rollup-linux-arm64-gnu": "4.18.1", - "@rollup/rollup-linux-arm64-musl": "4.18.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.18.1", - "@rollup/rollup-linux-riscv64-gnu": "4.18.1", - "@rollup/rollup-linux-s390x-gnu": "4.18.1", - "@rollup/rollup-linux-x64-gnu": "4.18.1", - "@rollup/rollup-linux-x64-musl": "4.18.1", - "@rollup/rollup-win32-arm64-msvc": "4.18.1", - "@rollup/rollup-win32-ia32-msvc": "4.18.1", - "@rollup/rollup-win32-x64-msvc": "4.18.1", + "@rollup/rollup-android-arm-eabi": "4.19.0", + "@rollup/rollup-android-arm64": "4.19.0", + "@rollup/rollup-darwin-arm64": "4.19.0", + "@rollup/rollup-darwin-x64": "4.19.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.19.0", + "@rollup/rollup-linux-arm-musleabihf": "4.19.0", + "@rollup/rollup-linux-arm64-gnu": "4.19.0", + "@rollup/rollup-linux-arm64-musl": "4.19.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.19.0", + "@rollup/rollup-linux-riscv64-gnu": "4.19.0", + "@rollup/rollup-linux-s390x-gnu": "4.19.0", + "@rollup/rollup-linux-x64-gnu": "4.19.0", + "@rollup/rollup-linux-x64-musl": "4.19.0", + "@rollup/rollup-win32-arm64-msvc": "4.19.0", + "@rollup/rollup-win32-ia32-msvc": "4.19.0", + "@rollup/rollup-win32-x64-msvc": "4.19.0", "fsevents": "~2.3.2" } }, @@ -1754,18 +1747,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-literal": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", - "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", - "dev": true, - "dependencies": { - "js-tokens": "^9.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -1890,9 +1871,9 @@ } }, "node_modules/vite-node": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.3.tgz", - "integrity": "sha512-14jzwMx7XTcMB+9BhGQyoEAmSl0eOr3nrnn+Z12WNERtOvLN+d2scbRUvyni05rT3997Bg+rZb47NyP4IQPKXg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.4.tgz", + "integrity": "sha512-ZpJVkxcakYtig5iakNeL7N3trufe3M6vGuzYAr4GsbCTwobDeyPJpE4cjDhhPluv8OvQCFzu2LWp6GkoKRITXA==", "dev": true, "dependencies": { "cac": "^6.7.14", @@ -1912,18 +1893,18 @@ } }, "node_modules/vitest": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.3.tgz", - "integrity": "sha512-o3HRvU93q6qZK4rI2JrhKyZMMuxg/JRt30E6qeQs6ueaiz5hr1cPj+Sk2kATgQzMMqsa2DiNI0TIK++1ULx8Jw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.4.tgz", + "integrity": "sha512-luNLDpfsnxw5QSW4bISPe6tkxVvv5wn2BBs/PuDRkhXZ319doZyLOBr1sjfB5yCEpTiU7xCAdViM8TNVGPwoog==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.3.0", - "@vitest/expect": "2.0.3", - "@vitest/pretty-format": "^2.0.3", - "@vitest/runner": "2.0.3", - "@vitest/snapshot": "2.0.3", - "@vitest/spy": "2.0.3", - "@vitest/utils": "2.0.3", + "@vitest/expect": "2.0.4", + "@vitest/pretty-format": "^2.0.4", + "@vitest/runner": "2.0.4", + "@vitest/snapshot": "2.0.4", + "@vitest/spy": "2.0.4", + "@vitest/utils": "2.0.4", "chai": "^5.1.1", "debug": "^4.3.5", "execa": "^8.0.1", @@ -1934,8 +1915,8 @@ "tinypool": "^1.0.0", "tinyrainbow": "^1.2.0", "vite": "^5.0.0", - "vite-node": "2.0.3", - "why-is-node-running": "^2.2.2" + "vite-node": "2.0.4", + "why-is-node-running": "^2.3.0" }, "bin": { "vitest": "vitest.mjs" @@ -1949,8 +1930,8 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "2.0.3", - "@vitest/ui": "2.0.3", + "@vitest/browser": "2.0.4", + "@vitest/ui": "2.0.4", "happy-dom": "*", "jsdom": "*" }, diff --git a/internal/mode/static/nginx/modules/package.json b/internal/mode/static/nginx/modules/package.json index 715543fb58..1f0607d8ee 100644 --- a/internal/mode/static/nginx/modules/package.json +++ b/internal/mode/static/nginx/modules/package.json @@ -10,7 +10,7 @@ "clean": "rm -rf node_modules coverage" }, "devDependencies": { - "@vitest/coverage-v8": "^2.0.3", + "@vitest/coverage-v8": "^2.0.4", "prettier": "3.3.3", "vitest": "^2.0.1" }, From 536ab0fa421be81a55cf1e21f8891b633654c08c Mon Sep 17 00:00:00 2001 From: nginx-bot <68849795+nginx-bot@users.noreply.github.com> Date: Wed, 24 Jul 2024 11:50:46 -0700 Subject: [PATCH 2/8] NFR Test Results for NGF version edge (#2262) Co-authored-by: Luca Comellini --- tests/results/dp-perf/edge/edge-oss.md | 42 +- tests/results/dp-perf/edge/edge-plus.md | 44 +- tests/results/ngf-upgrade/edge/edge-oss.md | 26 +- tests/results/ngf-upgrade/edge/edge-plus.md | 28 +- tests/results/ngf-upgrade/edge/http-oss.png | Bin 4346 -> 4339 bytes tests/results/ngf-upgrade/edge/http-plus.png | Bin 4346 -> 4334 bytes tests/results/ngf-upgrade/edge/https-oss.png | Bin 4346 -> 4339 bytes tests/results/ngf-upgrade/edge/https-plus.png | Bin 4346 -> 4334 bytes .../edge/TestScale_HTTPRoutes/cpu-oss.png | Bin 8310 -> 8397 bytes .../edge/TestScale_HTTPRoutes/cpu-plus.png | Bin 7447 -> 8175 bytes .../edge/TestScale_HTTPRoutes/memory-oss.png | Bin 7124 -> 7184 bytes .../edge/TestScale_HTTPRoutes/memory-plus.png | Bin 7290 -> 6956 bytes .../edge/TestScale_HTTPRoutes/ttr-oss.png | Bin 6763 -> 6477 bytes .../edge/TestScale_HTTPRoutes/ttr-plus.png | Bin 6821 -> 6754 bytes .../edge/TestScale_HTTPSListeners/cpu-oss.png | Bin 7174 -> 6908 bytes .../TestScale_HTTPSListeners/cpu-plus.png | Bin 7124 -> 6887 bytes .../TestScale_HTTPSListeners/memory-oss.png | Bin 6108 -> 6116 bytes .../TestScale_HTTPSListeners/memory-plus.png | Bin 5913 -> 6143 bytes .../edge/TestScale_HTTPSListeners/ttr-oss.png | Bin 8814 -> 8571 bytes .../TestScale_HTTPSListeners/ttr-plus.png | Bin 9072 -> 9057 bytes .../edge/TestScale_Listeners/cpu-oss.png | Bin 6869 -> 6792 bytes .../edge/TestScale_Listeners/cpu-plus.png | Bin 6911 -> 6796 bytes .../edge/TestScale_Listeners/memory-oss.png | Bin 6095 -> 6104 bytes .../edge/TestScale_Listeners/memory-plus.png | Bin 6122 -> 6136 bytes .../edge/TestScale_Listeners/ttr-oss.png | Bin 8684 -> 8509 bytes .../edge/TestScale_Listeners/ttr-plus.png | Bin 8858 -> 9095 bytes .../TestScale_UpstreamServers/cpu-oss.png | Bin 6383 -> 6427 bytes .../TestScale_UpstreamServers/cpu-plus.png | Bin 6939 -> 6295 bytes .../TestScale_UpstreamServers/memory-oss.png | Bin 5308 -> 5425 bytes .../TestScale_UpstreamServers/memory-plus.png | Bin 5619 -> 5406 bytes .../TestScale_UpstreamServers/ngf-plus.log | 2723 ----------------- .../TestScale_UpstreamServers/nginx-plus.log | 1044 ------- tests/results/scale/edge/edge-oss.md | 96 +- tests/results/scale/edge/edge-plus.md | 116 +- 34 files changed, 176 insertions(+), 3943 deletions(-) delete mode 100644 tests/results/scale/edge/TestScale_UpstreamServers/ngf-plus.log delete mode 100644 tests/results/scale/edge/TestScale_UpstreamServers/nginx-plus.log diff --git a/tests/results/dp-perf/edge/edge-oss.md b/tests/results/dp-perf/edge/edge-oss.md index f542ae2f0c..ce2cd0ea24 100755 --- a/tests/results/dp-perf/edge/edge-oss.md +++ b/tests/results/dp-perf/edge/edge-oss.md @@ -7,19 +7,19 @@ NGINX Plus: false GKE Cluster: - Node count: 12 -- k8s version: v1.29.4-gke.1043004 +- k8s version: v1.29.6-gke.1038001 - vCPUs per node: 16 - RAM per node: 65855012Ki - Max pods per node: 110 -- Zone: us-east1-b +- Zone: us-west1-b - Instance Type: n2d-standard-16 ## Test1: Running latte path based routing ```text -Requests [total, rate, throughput] 30000, 1000.01, 999.98 -Duration [total, attack, wait] 30.001s, 30s, 986.95µs -Latencies [min, mean, 50, 90, 95, 99, max] 562.91µs, 940.576µs, 912.579µs, 1.141ms, 1.212ms, 1.375ms, 12.402ms +Requests [total, rate, throughput] 30000, 1000.03, 1000.01 +Duration [total, attack, wait] 30s, 29.999s, 624.318µs +Latencies [min, mean, 50, 90, 95, 99, max] 496.907µs, 666.131µs, 651.971µs, 742.531µs, 778.713µs, 872.635µs, 11.772ms Bytes In [total, mean] 4770000, 159.00 Bytes Out [total, mean] 0, 0.00 Success [ratio] 100.00% @@ -30,35 +30,35 @@ Error Set: ## Test2: Running coffee header based routing ```text -Requests [total, rate, throughput] 29999, 1000.00, 999.97 -Duration [total, attack, wait] 30s, 29.999s, 947.18µs -Latencies [min, mean, 50, 90, 95, 99, max] 602.01µs, 984.263µs, 961.474µs, 1.162ms, 1.221ms, 1.367ms, 16.033ms -Bytes In [total, mean] 4799840, 160.00 +Requests [total, rate, throughput] 30000, 1000.03, 1000.00 +Duration [total, attack, wait] 30s, 29.999s, 697.125µs +Latencies [min, mean, 50, 90, 95, 99, max] 520.741µs, 681.361µs, 670.45µs, 761.428µs, 795.946µs, 884.223µs, 9.626ms +Bytes In [total, mean] 4800000, 160.00 Bytes Out [total, mean] 0, 0.00 Success [ratio] 100.00% -Status Codes [code:count] 200:29999 +Status Codes [code:count] 200:30000 Error Set: ``` ## Test3: Running coffee query based routing ```text -Requests [total, rate, throughput] 29999, 1000.03, 1000.00 -Duration [total, attack, wait] 29.999s, 29.998s, 875.67µs -Latencies [min, mean, 50, 90, 95, 99, max] 596.74µs, 998.15µs, 983.222µs, 1.188ms, 1.249ms, 1.386ms, 11.616ms -Bytes In [total, mean] 5039832, 168.00 +Requests [total, rate, throughput] 30000, 1000.02, 999.99 +Duration [total, attack, wait] 30s, 29.999s, 753.834µs +Latencies [min, mean, 50, 90, 95, 99, max] 523.903µs, 693.564µs, 681.217µs, 776.952µs, 817.06µs, 913.016µs, 6.02ms +Bytes In [total, mean] 5040000, 168.00 Bytes Out [total, mean] 0, 0.00 Success [ratio] 100.00% -Status Codes [code:count] 200:29999 +Status Codes [code:count] 200:30000 Error Set: ``` ## Test4: Running tea GET method based routing ```text -Requests [total, rate, throughput] 30000, 1000.01, 999.97 -Duration [total, attack, wait] 30.001s, 30s, 1.139ms -Latencies [min, mean, 50, 90, 95, 99, max] 611.07µs, 1.005ms, 983.916µs, 1.193ms, 1.257ms, 1.41ms, 19.537ms +Requests [total, rate, throughput] 30000, 1000.02, 1000.00 +Duration [total, attack, wait] 30s, 29.999s, 680.402µs +Latencies [min, mean, 50, 90, 95, 99, max] 511.054µs, 680.638µs, 669.25µs, 763.254µs, 800.238µs, 900.815µs, 5.474ms Bytes In [total, mean] 4710000, 157.00 Bytes Out [total, mean] 0, 0.00 Success [ratio] 100.00% @@ -69,9 +69,9 @@ Error Set: ## Test5: Running tea POST method based routing ```text -Requests [total, rate, throughput] 30000, 1000.04, 1000.00 -Duration [total, attack, wait] 30s, 29.999s, 967.36µs -Latencies [min, mean, 50, 90, 95, 99, max] 595.57µs, 999.204µs, 982.831µs, 1.192ms, 1.255ms, 1.392ms, 14.948ms +Requests [total, rate, throughput] 30000, 1000.01, 999.98 +Duration [total, attack, wait] 30.001s, 30s, 726.41µs +Latencies [min, mean, 50, 90, 95, 99, max] 511.128µs, 684.525µs, 671.866µs, 765.429µs, 801.43µs, 904.838µs, 10.938ms Bytes In [total, mean] 4710000, 157.00 Bytes Out [total, mean] 0, 0.00 Success [ratio] 100.00% diff --git a/tests/results/dp-perf/edge/edge-plus.md b/tests/results/dp-perf/edge/edge-plus.md index 9b3867f19e..74b3931c00 100755 --- a/tests/results/dp-perf/edge/edge-plus.md +++ b/tests/results/dp-perf/edge/edge-plus.md @@ -7,20 +7,20 @@ NGINX Plus: true GKE Cluster: - Node count: 12 -- k8s version: v1.29.4-gke.1043004 +- k8s version: v1.29.6-gke.1038001 - vCPUs per node: 16 - RAM per node: 65855012Ki - Max pods per node: 110 -- Zone: us-east1-b +- Zone: us-west1-b - Instance Type: n2d-standard-16 ## Test1: Running latte path based routing ```text Requests [total, rate, throughput] 30000, 1000.01, 999.98 -Duration [total, attack, wait] 30.001s, 30s, 997.807µs -Latencies [min, mean, 50, 90, 95, 99, max] 711.69µs, 957.047µs, 931.487µs, 1.041ms, 1.089ms, 1.247ms, 18.096ms -Bytes In [total, mean] 4800000, 160.00 +Duration [total, attack, wait] 30.001s, 30s, 766.8µs +Latencies [min, mean, 50, 90, 95, 99, max] 535.083µs, 732.524µs, 709.951µs, 801.487µs, 837.721µs, 978.661µs, 19.138ms +Bytes In [total, mean] 4770000, 159.00 Bytes Out [total, mean] 0, 0.00 Success [ratio] 100.00% Status Codes [code:count] 200:30000 @@ -30,10 +30,10 @@ Error Set: ## Test2: Running coffee header based routing ```text -Requests [total, rate, throughput] 30000, 1000.04, 1000.01 -Duration [total, attack, wait] 30s, 29.999s, 899.626µs -Latencies [min, mean, 50, 90, 95, 99, max] 726.964µs, 985.028µs, 967.197µs, 1.079ms, 1.118ms, 1.252ms, 19.94ms -Bytes In [total, mean] 4830000, 161.00 +Requests [total, rate, throughput] 30000, 1000.02, 1000.00 +Duration [total, attack, wait] 30s, 29.999s, 750.962µs +Latencies [min, mean, 50, 90, 95, 99, max] 569.894µs, 751.471µs, 737.453µs, 830.219µs, 865.522µs, 975.891µs, 13.021ms +Bytes In [total, mean] 4800000, 160.00 Bytes Out [total, mean] 0, 0.00 Success [ratio] 100.00% Status Codes [code:count] 200:30000 @@ -43,10 +43,10 @@ Error Set: ## Test3: Running coffee query based routing ```text -Requests [total, rate, throughput] 30000, 1000.04, 1000.01 -Duration [total, attack, wait] 30s, 29.999s, 917.947µs -Latencies [min, mean, 50, 90, 95, 99, max] 721.266µs, 993.472µs, 973.023µs, 1.101ms, 1.164ms, 1.321ms, 20.914ms -Bytes In [total, mean] 5070000, 169.00 +Requests [total, rate, throughput] 30000, 1000.00, 999.98 +Duration [total, attack, wait] 30.001s, 30s, 795.267µs +Latencies [min, mean, 50, 90, 95, 99, max] 566.893µs, 746.284µs, 731.685µs, 821.144µs, 856.146µs, 949.534µs, 18.228ms +Bytes In [total, mean] 5040000, 168.00 Bytes Out [total, mean] 0, 0.00 Success [ratio] 100.00% Status Codes [code:count] 200:30000 @@ -56,23 +56,23 @@ Error Set: ## Test4: Running tea GET method based routing ```text -Requests [total, rate, throughput] 29999, 1000.00, 999.97 -Duration [total, attack, wait] 30s, 29.999s, 1.08ms -Latencies [min, mean, 50, 90, 95, 99, max] 708.277µs, 986.926µs, 970.493µs, 1.103ms, 1.15ms, 1.274ms, 19.021ms -Bytes In [total, mean] 4739842, 158.00 +Requests [total, rate, throughput] 30000, 1000.01, 999.98 +Duration [total, attack, wait] 30.001s, 30s, 733.608µs +Latencies [min, mean, 50, 90, 95, 99, max] 545.997µs, 736.79µs, 725.161µs, 816.5µs, 852.368µs, 950.282µs, 9.048ms +Bytes In [total, mean] 4710000, 157.00 Bytes Out [total, mean] 0, 0.00 Success [ratio] 100.00% -Status Codes [code:count] 200:29999 +Status Codes [code:count] 200:30000 Error Set: ``` ## Test5: Running tea POST method based routing ```text -Requests [total, rate, throughput] 30000, 1000.02, 999.98 -Duration [total, attack, wait] 30s, 29.999s, 1.022ms -Latencies [min, mean, 50, 90, 95, 99, max] 724.839µs, 981.279µs, 965.573µs, 1.107ms, 1.169ms, 1.299ms, 6.315ms -Bytes In [total, mean] 4740000, 158.00 +Requests [total, rate, throughput] 30000, 1000.01, 999.98 +Duration [total, attack, wait] 30.001s, 30s, 743.446µs +Latencies [min, mean, 50, 90, 95, 99, max] 553.99µs, 726.832µs, 715.508µs, 802.061µs, 835.171µs, 926.755µs, 8.575ms +Bytes In [total, mean] 4710000, 157.00 Bytes Out [total, mean] 0, 0.00 Success [ratio] 100.00% Status Codes [code:count] 200:30000 diff --git a/tests/results/ngf-upgrade/edge/edge-oss.md b/tests/results/ngf-upgrade/edge/edge-oss.md index 41dbb54dd4..4c10cbb320 100755 --- a/tests/results/ngf-upgrade/edge/edge-oss.md +++ b/tests/results/ngf-upgrade/edge/edge-oss.md @@ -7,39 +7,39 @@ NGINX Plus: false GKE Cluster: - Node count: 12 -- k8s version: v1.29.4-gke.1043004 +- k8s version: v1.29.6-gke.1038001 - vCPUs per node: 16 - RAM per node: 65855012Ki - Max pods per node: 110 -- Zone: us-east1-b +- Zone: us-west1-b - Instance Type: n2d-standard-16 -## Test: Send http /coffee traffic +## Test: Send https /tea traffic ```text Requests [total, rate, throughput] 6000, 100.02, 100.01 -Duration [total, attack, wait] 59.991s, 59.991s, 878.01µs -Latencies [min, mean, 50, 90, 95, 99, max] 687.75µs, 1.202ms, 1.174ms, 1.401ms, 1.463ms, 1.613ms, 12.928ms -Bytes In [total, mean] 960000, 160.00 +Duration [total, attack, wait] 59.991s, 59.99s, 799.917µs +Latencies [min, mean, 50, 90, 95, 99, max] 450.094µs, 821.717µs, 823.258µs, 951.13µs, 997.824µs, 1.126ms, 11.934ms +Bytes In [total, mean] 920025, 153.34 Bytes Out [total, mean] 0, 0.00 Success [ratio] 100.00% Status Codes [code:count] 200:6000 Error Set: ``` -![http.png](http.png) +![https.png](https.png) -## Test: Send https /tea traffic +## Test: Send http /coffee traffic ```text -Requests [total, rate, throughput] 6000, 100.02, 100.01 -Duration [total, attack, wait] 59.991s, 59.99s, 966.11µs -Latencies [min, mean, 50, 90, 95, 99, max] 603.69µs, 1.182ms, 1.153ms, 1.384ms, 1.449ms, 1.623ms, 12.779ms -Bytes In [total, mean] 920039, 153.34 +Requests [total, rate, throughput] 6000, 100.02, 100.02 +Duration [total, attack, wait] 59.991s, 59.99s, 794.113µs +Latencies [min, mean, 50, 90, 95, 99, max] 618.014µs, 872.17µs, 856.784µs, 991.181µs, 1.038ms, 1.148ms, 12.075ms +Bytes In [total, mean] 960000, 160.00 Bytes Out [total, mean] 0, 0.00 Success [ratio] 100.00% Status Codes [code:count] 200:6000 Error Set: ``` -![https.png](https.png) +![http.png](http.png) diff --git a/tests/results/ngf-upgrade/edge/edge-plus.md b/tests/results/ngf-upgrade/edge/edge-plus.md index 45d87ceea5..260fc190f2 100755 --- a/tests/results/ngf-upgrade/edge/edge-plus.md +++ b/tests/results/ngf-upgrade/edge/edge-plus.md @@ -7,39 +7,39 @@ NGINX Plus: true GKE Cluster: - Node count: 12 -- k8s version: v1.29.4-gke.1043004 +- k8s version: v1.29.6-gke.1038001 - vCPUs per node: 16 - RAM per node: 65855012Ki - Max pods per node: 110 -- Zone: us-east1-b +- Zone: us-west1-b - Instance Type: n2d-standard-16 -## Test: Send http /coffee traffic +## Test: Send https /tea traffic ```text -Requests [total, rate, throughput] 6000, 100.02, 100.01 -Duration [total, attack, wait] 59.992s, 59.99s, 1.631ms -Latencies [min, mean, 50, 90, 95, 99, max] 908.3µs, 1.36ms, 1.329ms, 1.511ms, 1.57ms, 1.795ms, 14.259ms -Bytes In [total, mean] 955989, 159.33 +Requests [total, rate, throughput] 6000, 100.02, 100.02 +Duration [total, attack, wait] 59.991s, 59.99s, 867.428µs +Latencies [min, mean, 50, 90, 95, 99, max] 653.414µs, 901.844µs, 879.015µs, 1.006ms, 1.051ms, 1.18ms, 12.8ms +Bytes In [total, mean] 919993, 153.33 Bytes Out [total, mean] 0, 0.00 Success [ratio] 100.00% Status Codes [code:count] 200:6000 Error Set: ``` -![http-plus.png](http-plus.png) +![https-plus.png](https-plus.png) -## Test: Send https /tea traffic +## Test: Send http /coffee traffic ```text -Requests [total, rate, throughput] 6000, 100.02, 100.01 -Duration [total, attack, wait] 59.992s, 59.99s, 1.671ms -Latencies [min, mean, 50, 90, 95, 99, max] 968.82µs, 1.388ms, 1.338ms, 1.558ms, 1.632ms, 1.973ms, 14.346ms -Bytes In [total, mean] 912000, 152.00 +Requests [total, rate, throughput] 6000, 100.02, 100.02 +Duration [total, attack, wait] 59.991s, 59.99s, 839.172µs +Latencies [min, mean, 50, 90, 95, 99, max] 421.992µs, 816.859µs, 820.308µs, 942.646µs, 983.206µs, 1.111ms, 11.939ms +Bytes In [total, mean] 960000, 160.00 Bytes Out [total, mean] 0, 0.00 Success [ratio] 100.00% Status Codes [code:count] 200:6000 Error Set: ``` -![https-plus.png](https-plus.png) +![http-plus.png](http-plus.png) diff --git a/tests/results/ngf-upgrade/edge/http-oss.png b/tests/results/ngf-upgrade/edge/http-oss.png index 65ab78b08d8df3fb088eca32829bbe54d613e2ba..1a6f1a5c29117fe886972919cd5ae271dc3bed89 100644 GIT binary patch delta 2864 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 e|M3<0XhLnZp$(%kh5rR8VH*|z diff --git a/tests/results/ngf-upgrade/edge/http-plus.png b/tests/results/ngf-upgrade/edge/http-plus.png index 825c5e1856adf9150c65d0153095c3a2100300be..519185636ce7442106e2c76f8d28c86cdf36d3c5 100644 GIT binary patch delta 2859 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 E0BQRM{Qv*} delta 2854 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 diff --git a/tests/results/ngf-upgrade/edge/https-oss.png b/tests/results/ngf-upgrade/edge/https-oss.png index 65ab78b08d8df3fb088eca32829bbe54d613e2ba..1a6f1a5c29117fe886972919cd5ae271dc3bed89 100644 GIT binary patch delta 2864 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 e|M3<0XhLnZp$(%kh5rR8VH*|z diff --git a/tests/results/ngf-upgrade/edge/https-plus.png b/tests/results/ngf-upgrade/edge/https-plus.png index 825c5e1856adf9150c65d0153095c3a2100300be..519185636ce7442106e2c76f8d28c86cdf36d3c5 100644 GIT binary patch delta 2859 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 E0BQRM{Qv*} delta 2854 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 diff --git a/tests/results/scale/edge/TestScale_HTTPRoutes/cpu-oss.png b/tests/results/scale/edge/TestScale_HTTPRoutes/cpu-oss.png index edbf9751cb1a63c9cd76552facc4cb7ba519f444..efe44381bb393705b78b0123c5061afda565af46 100644 GIT binary patch delta 8094 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 N)6u-GQK5DZ_dlzFq;UWM delta 8006 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 diff --git a/tests/results/scale/edge/TestScale_HTTPRoutes/cpu-plus.png b/tests/results/scale/edge/TestScale_HTTPRoutes/cpu-plus.png index 4d6404cea34149f2b03ffb30f8e5d1588dc1cf9f..8e016eeb620a4e1dc31d3d6a3d7d64eb36104997 100644 GIT binary patch delta 7870 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 RB8}c>85@|NF4K3R{twH16zb2m^FA1U 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 Jr3x0o{{!ZMqrLzD literal 7290 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 WXTtoQr_9>^>N*+*>Sb#7*#8BvO;eEo diff --git a/tests/results/scale/edge/TestScale_HTTPRoutes/ttr-oss.png b/tests/results/scale/edge/TestScale_HTTPRoutes/ttr-oss.png index 9ffbc37b890db39439ad4f0704b40767380dd52b..a2f3461f009ca29f22cb45aa07238c4e11a00e6f 100644 GIT binary patch literal 6477 zcmeHLXH*mIww{Cz29P314G0!gntXuN&^|y)ET|}uP}EQ92!cS62ucx@08&JxiDE&6 z3L-U$p;rMVAiW8Z-Z27mC!pt?b=O(|^Oib*^kt0@CR+lba3Jnc? z@ZiC_ckjq#a#K^&*w`54Vop_+Fhh9N^=kOn~BfD6!PsBDa^ zV$9jC?=ib~dqYbBfab`SNr1UT5NK%wg%ZKg<8ydCXaX?sSLw+?bKhbsirqd$@GLL) zX5o?G6JRE6=04ETm(@o&jymn8gckzvLPB^Hbl~xhWV|DYXRaRwWjs-ZxV~N;A0t2coh-WMyULz`y_&ig^Gq z8$ZXAFhA1XotBa|Y%jVomL0Z(5~r9ilh*#{d?{_g+;8M!pm~|+K)gnJM_jVk?!~8p zk&`tqTgJX%fb+4Q{hR7#^1_Q>X$va$8F1B>M(nrpFM}aC&bo#AYNay9dSEPFd!6CY zSiCll&%NuVrL+R)clmKvCpHngnS8|Or;ls#Dt^>`^yV>7dVe20LH}HUm2`=lWS#zb z**PIXRjprC2P@YZ1;T6FJRzEYE_5 zm4q$?DFG%p??%#!9aYk3MopJZ4z$ZmE5(9uLMNP`^!3%K=cju1+--%O)9ClZOtEFv z7v3khQ4#dkACY+6OXQD4yAx(jBNb9lxCK15aouax7{EFIuAld&x_aHT|M~$Wwia3J zQ^i6Te?MKbY|$zC{;rn`VKx{RwR0FZf6A3aduL%G(ume)m&>dc%Ph0~f%{y|M{Pfw z7NTg{)BRdL;D`N}>$A?fnbnN9B6v|fM7=NZyVl|Or#dy6HAq?@VY2Bb!#tyolOB|W z8*1p#G3%%3vyKKbMjA1|E>6El0FzK^@_dpNP)dC*DfizXfIpQeQae{1VAOSH9Kc(Y z7E_dV&-avxeruF4yuyLkuewiEsUYeSFqd{U0k-F6Z%AdjMvVVyjZeBJe{+0Ub)Nz! zxuF!kICuR>++RE31@p4V_#^;OuMBuoLzFzk;jM6SMPh z?r3w_=t$4*{KTV-`>cCyVg?sf5bzLQ|M2Q`GK)Z`b#Di? zy5-x1kwEJ4cumG`>|O~cLt{!rbojF7Aq9a{&6`qWA`%I(O|gxJ_6hS6$hYpW!s72k zr&|?xK37M(6`Hh)oyX z+7NMt^`EO+GI^@=N4em#2ih!$#O}^=9gUAhAHy9&+HCCkkiuJf?&sPCl;(wsz;(pp zWPdeBnXUe{d!)tLmQXMEoB}ZS`0~TG(l3j_rM6!4-70nZSNb;wrY`1DR`tMzGP7RN zsK&qvMt@5AOVBPdQ#$wT#tZ+_LTV*eoJ8s?L_|r4$84^6aw^7dUWpNG4%b;vPIISO zfE@xAn;PKbvC2HqEz(2WJ?ch%)Ifi=GWHw4*7u5!#;qa{?5xD6MsbV=r{ITRdf#WO zS^2%ZJP`iV)VoxAvBWhy%-2cS($g#92$c$6^uSR`2LnK?T^;EXBze`;je3N=&4yeR zyu@qf=c`|llB#(KBE&>5q#W9|G5yCZPUEHgF25LHr&DP-W%irCZHsEN32{S{d;Q)R z3n|Y_J=!Ljt~9H$2~2Rdjd4=27~`6-MX@e4U)GUKlI>2E=-<%)f2 z?LFbq)G#jL=rne1w(;RGUnea?zQGY2wJuS1(x!)$;S`Z$E>J;iYHsAAUXb>-+EI`W zTk@EM=)|7num~dXej=2zYu{}QZ7JE{l0kYad>3=KPuN-8SQrpxEn@K}1fvr)$COtg z3erCx9);~Z0pauWA6b@{#3@XKZn;md7@P2~7Yc-x@$ zeY^*)&jHaXoqzWB_F~^7I^!rNp}`ugB7cH~Yz~Jsh5w*A>-y#25WRhCA|-ZhlGmxS zX($kdMh)6Pv9wj!=aHI>{6=0L-kYKqK$|RF$b1)Ex{#un90lLo|M)3|(dL1pYdGwt zZY;k~3@&{gkB{2#IIOE6KBW^o(wgG@N`%7q52_VXB6{b=wz+omNQX9ZzVY_mU+nQ< zS$GxmN2!v=xMz53@(Zl8kFD~2U^K7QGPA^`@s-+oD?&t8$_q@v;mVGr;K|P~_c(e9 z-VR)GVPx>tAQiY%ug7(!qumzgEn^nF|r8FH%PT%zwn%cWcw!j zJoM%BYu5zDPa9Udvt#6Q@X@Q!yb2cA9;zCmw)m_q=3aS8g+W~c^h~dXKg!_=&m3v# zY3Jfhztd1Fo!jvtkaIZTyp0n$(Xhd!h#+KkF%%$tQp zzg>O19-3=F>CBcr(c?INz&BNjZ2BC>YPU9h)t8mk+GN^Dr($t&joQKY^&hU5U9viO zI~r@p{XYFhdc%Vy500^DLwtk{hg?&m*&{qzI$H~ABpQJdnOtJ#fMMrZJJ+#?y9Y8; zV94=OTx{sfCKsvU=)QfLhsTI6RBp0MII?Crv zpOMBoPtO)%p>3Mtj`CyMX3&Z5YOzJBJ%YFM&O%hM!OYBj9E|vI*t4B^-)FtB!<)lH zN423H<5|tMIOb?*;*1SHT{+gdwHo6wQ8|+J%`NL!3aF}^qKdw2%^z)Zm7+ayFG!4D>{fb9yYKgov2*`{KZijJq@kDKLl381CatU(LM2ez;Kie`HYVTem)h-w2zGZ-@^2XGoV1q}TlXni^$i0>Eg3NRgCOWujv83#J%ey=a2n z)I=loBEs;`6qq7N{B{_fZNbV4ZNqB#EtN$^M?k6V69YXwZ*bao3H!S8OT7kSkD~VlDr>v$Mb1id!dS9u|0T;+!(jpR^cR!%-nWFj{c23&|&8H>@ zl?#Qx+H0{oAs&(aQrk?oxn~gOd)pw$7ut%g{^gll0W~QcBE$}!TG&7PbYVni$xoxM zd!Krux8>>%ds(cGXgFD#iebV=7~v0=^o9H`TqlmOAGQ4r>M1rTASfu56>9j=o+W?h z?Ev;7hgx?2W{Lr11o$`5{_vUg-(LT16JLSfh7b~&z??^*!D3rKR^Z!i!tiEHT7Sf# z05L-p@E>#PZwJEvo9t|*$U{7Ts{{9!dbHST2O(YfAI)~NkJvrFZ3T;ditumn@uqI< zV>Ld_>~#w%_l7o07j8oHVD5H*%{O3<8tg4Z)TLsijSNIAn793!_I$33xIKBIfa23q zJIzjaL|88#WA15Ahw;$V({&bj&I_n6UJiL4ZKw3dIhMEn!_NA;_!jRsvVYHwe~;Gx zd^lj-!#-I%m;=&1f+2VmdK5r9F0>h0JiUzZL9wdH^7v`Kwi#8RKI90%eq6qW;4%RWJ&Xm7SGc1^!==B)U~!(wB&qPNd?>Q2SJ)U zl{~XuYjsMe-zH;JZ$LwBWnPt#LzFN2cGX19Jptd0FkVUFgt~U9Q42Ro69)ev0rKCu67$}xz(gPhkQ@&#aA(3T5krcjpz?qu);aMKG{NkeOJ)W`bnk*K}sWYnvL|Fa7jVE@z4j7V#lGwvLO%la+K{dEU zv^^%Wz+L_I!zQHwxaMI>AMH$?jt&3ppR zeJNs1lQmExJU_-Gm)~CGS+joqOHEzY(f9e3ki@)4K#L_#EG+-8H=Ww`w0H)gX3lA0 zHFLB&ObUJ#938U;{`wZknQ*YKbTo(LU-{mr+Rx!T4#!(}{`7l1Zh&jByozWD|^k{a;uV`Wx7MQVly`Sq}lbuBdVWhg{s?_&-=FIEnCf3HU4IRV&3wV#n AWB>pF literal 6763 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 literal 6821 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 diff --git a/tests/results/scale/edge/TestScale_HTTPSListeners/cpu-oss.png b/tests/results/scale/edge/TestScale_HTTPSListeners/cpu-oss.png index 330f011350f26c6c9330096f74e85374eb4a8360..94b9e52aa4d0b3cdbd684913f6d111780a5ed8e3 100644 GIT binary patch literal 6908 zcmbW5c{tSn_xH!lWJZNCDUr-DB7H*kC1ys_kWg7dKBO$6Y-Je?CbFg(k+RE@G9=29 zC2JvN4cW5qyBXVvx!=?GcVE}{y6*dr`?_6Yyx)&G=lyz}=Q*!4Ua!cjh6L_|LI*)0 z5VxN0#p@st1Pua#&EXJ$6uj}g00MEyU%g_Y!(y=jl97?Y{!*1223(I5~$7{m%@1+jkSoH+xy;zv6GKOrF@1qB5I0|N&KhoGRK z#Kgo8A3oI9)_(u~eQIh77-Cgkp1Mpe_%*$1x;n~YEe}6pmDUw5FSGhUz-S;l;5|qz zT1+PT#^3vBK|yz5Dj?90@U{gIdx|VjTPKS@jumuuH8_~117Zey&L#M*PCuzGb14ry zw6QUi5sYT#fR-OE$Ah|uGlr>G@un`a!Tg|Le*R!Q@CpvTRU3SZ70jMLo|OT-Zm}}l zS+%t+ARbojkFvB?)@nxSk2+S}kJ|SEEPMtF{rU6fk&zJ_8yge~g~Q>})6;8eYEp#E z@`0GS+;uG;fIvKr>|c)O|L~jufdt+4E^3+hrYsFddeKym<84h~dsXV8(7m!%^C}SM zxJ^Qbcg+KdBjd+~d3~T?M_+RQ5BfiUf?tNUoxZdCdakGW$;dkL6-?Lp~o5gdH$sHu=N>ivx9=Z zk+eqF%g=3fXK|p*@44&-oSj*|M_XT7w;LBE1_oVr_#G{0e6+Q!;L}_khSRP55=Dv$`zX!_|+$r z7sTYgjy2br3D`vH^sZN{t3Q1JX1fA;+%Iz4>X!%I32XN&;17OKt6jULJThljjk;r+ zzr1m#cRTtC=5*71fdq5sgA;7%oy|Kx)~)xg9*ALsaINWA_G&!xD@#TMy(_d6pc7%X z5LLzdX8l{MkXr>ad#CfD&WPu1wvB|IM=^zb6+^2Ag5{tDmL<9``wEEa=_$ z18YsG)AuWq7w>7K-wXv<1iv;-j|&lkLrWAMfS2gsQ+g&D(&P-!T=IASdFZ2WsrPS7 z-{ARmATyXjn zT_p#dc;=6UN3E^sKO-XHp7i^$cLw(maCwA!$OGsj#^aSyelnVvArD{gCqjPKjq@iMMQPJsN;5kqZEh|H;PUpV-!Vg#cDZE&})oKYMhs z7PhtS2LKBpmjE1U!p7)+wzX~$0A6N?Tg9%c^jXzLbVsX`ovUByRP!x0s&U z7l=8VgAE4K6O;P6bl%;wdTA=Cv-#ROX`9FHcbM~xG;KKB^xONmr!kD(a#?Cv>cd65 zj;7RP^Y*#EOaW^YNdB2GO0>5f=iOCc!IF3SDZPdjaU~`Cs66uhS5ZEWfU4u+=gG4% z@~(FMXpe##B{IfX1rp9gw-#ixi>F_EP9Z4Qg(mh!ikZkBwD;u`}O4e!014_C_ zTd}d|AR9NcmGl(^l!VL70N|DVFi-&Rs{o78=R}|YGCWs8@QCZ1z(l~`*ae_^fB_i4 z4rLqjcLK&#d0=qp^-F;9xr2guI8-aX3&5eb+4!m~*9fqbb|)larsU%dza&S0js7<>Lz#Sf{Uo3m&eQjq zYM(BDVP*0W#@OJ$t0N+lfenDkyJ?ru6M9^`&e;FblQo6 ze0I$OHI9!jy2PhjeP%(sJb}kdrTd-w`MHw3`=D46y*_%4B1ShSZ$aBn{NHv~m#|); zF^Qy0$(EhbD*#39`57pdlG<8C`%F@4@D`w_-fnw7=Pq=hO zydA)1JMuG$eu zzv_b;kG|nE!PC6_0PAY0IR2)RcaCO$x!?7Za_?~TCE@41=q_W|0@v3Hu0&ZgY3G#? zV^@zHCXgb5S?!9*lB$?8`y(_ShG?}+f;?Sq&PsrG@Gv?h?&$+Yr@NuLVP{h)W={1I zN?{D!TpYJNW3U2!rpSERf}1KG!~Alt1r@uWpGufO=VVb}Yq>*)s#nd`nZC%hxcy%+ z+aol0#+o=urO;`xSL3&b=R&3jhLbA5!#@roRe59}{24{{q@#Tv~pN`{|LkV4jJ0eMknx4<2NcURWPn(SU6D<^7S1H)d6tFE+3P}{E zrhC$?VL#peRRm)w+UuCPJRobbJj4{LwS@=v*}FSug~q5&Qctr(G-PxM)V1_innAJ& z%isNii3an%Z}yZ(T;g1l9(vnSWy1`;viU#7xUcha2lwQhesmnJY#$b-La9xt$=soV zcXRD+u(_FGpPs-gZ8$-bmCtvfc#$9^FoE2$iAC#FV$fd7PiOkEqu|IV8lTbFsnQzt zt9Peg<(M|bX<~FQG*A3fZ|r&>SHQ@(}x{VLY zLi%mGUf?rDDTQhUIn2c{nnAv6C0R+vZ)_d3dT4$7a>NGxwq*72RvjD(BSviht8Zj8 zeR6kOwIvEKhUOJ*cbQvg9`*b_q0}D)G^i~MuUxy!+hvgzdn;hkCfWPD(v^wePl80% z(L9L~G_NG|I&9s&(LTr-FVY4`ztcPcv)askIJtI2X4hDGeVgyao|GW*&y&{u_-GA{ z(PCVV7_Tf~nAqHKWQ@z0`^8=h2hn$8Q?7&WSWIDTIANWZbkS1r^FBjw3s5TkJ5>oHV{l4{`S6t$6}3vn-CCUqej-#nsM247TYO7a$Z-}U4sH=4 zg^J@)c0Y?FpYw21GqMHlpSwS@EZZH}n(6TbTaUEabW}$*wx1}5H$s^3Clqqq2@>>c zEF)hoI8~bBs{z_+)rs~y~lAP3JcyHH6 z!gC5n6gvJCyDVm|f8O3-lcey`dzai+ClDjeERV61PQ`BgStHIcr*-axU|lh!qqL=p z-tH*^SL0DgGwGLJJ1=P{0$;3+@)4sBbu<;g#Z?#{|A1Q#Lz=7M;<5}61#rtj(vZO) zS8IjeSv^2X!cJ0m^<;$|2c-~L+cSVDgIux$9c^130hes~86LQuFSO^|*4D?knGtnT zh)dMtvlz~up5dN_0q!yxAqHQ_pG@w&6047*U{31kY}B}#%}1>!^M_Nj7#^7cDvTKc zGzww{MOTCU)wdx1ervMh?Oxg;asY)x{McL*UbfGL<+siyU_}iZAtMx+5d_sovpY5eX#wCz zi65MLI>pK5w?UD*`(|+tI|0-Q{IvFBA-{4QbUXrk8yOhfcE_ha#mYY(|0j#`#?Hm5 zklnsF4Ej*RGJ}nl5h8ffEaq752A$Flvy~h^&x~kYxoO~=*r&otZ3co^!Gz?wl{Rs6 zHFA&|CH~b95A^n?KjiSGB|D-ETbekB9op0I`xjB2T6#@q_0(2wp?pR&xm7YK{1FhjhH{u8daRRxY$ShteV;qo zoP8bYrsVV*G7*Svh{Mas1!t2Vbah`uMN+Lda}%+1z3ojy$YwRB?ql~OwB+Bna-O!A zaaYb(bP&#jI`Z?-rwF?Zaa#2<6=x2kTM#u-Ik{sYWl2yS)Eok(xALjN|1KjIG3Q^z zoI6`LLBHQ1Qy~U`u}We=QrogBF6Z1(=0Y9l88WxTr0M3vomq^O@aZduN!dE@6E=AR zd5$2PMVY!!Zb_TUT4N6+;h%O8ZbMz>Ry%y=87T~W^gB+7u5(InSHcToLk4BCygKSj zECW4@(S$xjFm);2mfxhxw9W;KH`_}0RIjbeA0yxEBt)fHPj3`c4AD0kvEp@>1Dd|- zuc&zCS&Ttdk2oJARsyUCf#_z!#km--rsK9#5j>eB?Q9?cHO&&60 zYSG7GO!AYG2oGvnA zv4B%JRvukd;a{aA5CL3S=-+gMb$*GK;e+V%KwX?@_Z;_xFTRke0IUzxS*q7~_xKSX z->8@ccM?Rz3vV0P{1L{)%T#DEV!52qA~zPkK_d6yt4HIpI>z_F;a#*UfTE1;~(O{C}F@Z6Y5FE zdQPe#IwcZneA*nz*mdOXJv+%gVTf)5@Nw05|0wMGBvG1#5=^m~w?wJrp9iKBKLc!^ z{%03btXBTU&7RyC2z9ULGA_FXYB@?CB4dkn(7-wg;A`fd#n?cRA`soLaB)>;vmiP2 z63PNY?U=>5K#|8Gy1(J#XPM2yWT47FVW`wuj6W2KB-v5$;M<@U6ggBIbpTDhHJb&6 zA`g?|gYg$^K~i8c^a9ErO+7c8g@7VCN&JuSk8Xja4v<6fs4r+LXf{h2I*uaohqAlJ zBSeJHVe~0c#K>&cY3R5hDgH5DBa2duh_E?~ek_V8oXt{%jvpcMhvNe>DdUI;!eR83 zC?aS!3lAOVCdEhKt6ou%d=avT(K=!XquH!0&~X@vKMG%!LAlNsA;7qH2E0b*$To+L zbCBYr@qq-?0StAdlTZhrbOZ**P;EL1o$yHl82IB z2*u$#>La~012^$kv@i!sz-zTK;cq=yn4uZhxN2P97IpUlb#Uw`oblSWf|-`+tzUqY!$?2TjZBLsLv@l#=nLZ1Y?jz7_WqOINTazzIkF{w zk2q&0Y$co}S4p5wJX9XdT)BWU9s3b=fpJX$%$G^2Ktvpd=-R_Cj*j4%Z@9?;b0gY| zO=N$*=8^rqtf$U=%}V2MgvlwH+=ynb@!CiD&AX6)pv9Mje~D6I1GRi$rwGVQ9&f0! zd(Jfexaw-IB}9}bAg3OG7cxRSix>~SqDk)H6#mHv_o%(L23!VSb4RoG`Cx&j4(N{@ zMp1`C6-SM=$mj0W*2sfjaYLVx(Ai|FJWr@CWNbT>n2uDgXBa7$9?Af7f~C3Gi7VcrD%1 zIbX!MBR#J2gofh0RK8@Pv%sf8)lTGmgOn~j}}H5%K?vg zML7W%ALWkRSDBIJAEMqtXBwPEldK_pOWBYTzUuFXOqw((Fd)_Ys#oDA1YmI!{vI)G zoczxj81*%KFWhu7x1x_*J6FUFCpg`Z5QNgxNbQ*q3;FQDj_zj^h3ehsp*5{fHK?aP z|I?zL{^C!+daCKfzFmxuU=0a%G7e`kLuWem477c-?RhpgXzQ2iV{y^#x6Amg-OY^~ z0VTh>EehPW*E3q@s?6fX!%J!!=8FQh-Wxie3My`!ITcje#;Ql9<-fi`${O4!MsEXS z^cm55z0G)N32{?;KVOgJM|QEM1wQ!wMxVbIq*~aQy=}YH*SK|uPcuKnLg}edZ%dWX z3&#a_vt^?Mvppu^ol$RRRT9dqpxr{rke1LPKiH-$0#-}up>y`1sNtE}NaDxk51%xn z=rG>%IP|E(JXH(7PW7v&Jl~BgA#LT+Bdr35%tbKf_t-sV^Enc&XBC(#|Thw`0r9htl#Vh)XMb4Gn%H z2ze^e*K#wk4MIF@`xKDcMwutDZQ()h2rhrm=jlyu!Ut#J^!zxYl1w`gN1$JEzGXr| z-&Q=%fG~KAx$9$A!*UTE6%~sBr zfA%DvqkUa#QBS-vv3@W0$G5c>q0&M5Hd(sJciN6^4>QGd;-fREV8JVEX@Mmdetxcd zC7?*sOP#jCZ6osIlb?AzYkE9<<8#9u0W-hFg#fd0$%O#xb;pHyTQ!`;#AVg*gej}^ z{Al7{vGaXLKwK_^rkNXs9}0RK?H`t=*I?3mm|?Q*ZR$bhg?c*;mLwH+-aq@B&wN0# zSHUyf%^6;o@ohVUoBu5I8GkYA{ZbWZS)%;G)4b%rPMz78SHt=UrDKxSXSv-V|~R&ms^$Vd5* zxiGoMuet}$O5&f6lyvuJ^v*l{S@VN-(k*%_E5FC>b(ScRuM~h2Ej#GXzwN#aovH_W zSM7cJR;W_MU<|TN0?;a#i+SwQ(l{wQQ6F0M#+J$}PINEKxJl!Zl}nkF%Cm8#m-^`( za``Gn({uLsQD4bpV?_$<^R~ibVNE*2-aZztsL~flAfDbr&6@`ew6_js$hF$%v;&6# zT3T(8qCtV+CTkJ$S%C%I;ZPESe_De&XPSShY^nUQ(yWKo@#&x>;t~C=aPrG#k86q< zh#A0C$z_8Pdx!2pol0_~A85PcQ_frOff%)F{d&~>>ECnkzgiyLK$TE(`XBZC@v-mq NbPO-PyKw8#{{lRR+;ji{ literal 7174 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 QrRi;5w1HN!hHd!&0Nb6XvH$=8 diff --git a/tests/results/scale/edge/TestScale_HTTPSListeners/cpu-plus.png b/tests/results/scale/edge/TestScale_HTTPSListeners/cpu-plus.png index 3ff3ee4739f066834c86ffe20d019509ba3038a2..57601dc9cb50ff694af17517bb0e8aa3b7fd9313 100644 GIT binary patch literal 6887 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 NrfqN~`_kQ@{{e)i0Db@f literal 7124 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 ABme*a diff --git a/tests/results/scale/edge/TestScale_HTTPSListeners/memory-plus.png b/tests/results/scale/edge/TestScale_HTTPSListeners/memory-plus.png index 9f04fb0fe1ec0ef5b49347240519668a9861abeb..a78c7cefb8788e49b9e01ed7051ac48f164c5d47 100644 GIT binary patch delta 5270 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 YI5v;aD_VPE`mp1gzKI@1*E#Bc068YtmjD0& delta 5122 zcmZu#2{@Ep`+sNV!N@lDWSI%6kfp^|7)8eZCPem_HiIEc8O)@}zD5gCk;*!hp<#q% zCWVk8gDivW86s={$J_tCuJ609@42q$cV^CW?)%*L?>_haob&uvf1pOb0U?UVn;9F~ zUC)^tum5>9$mu-` z`Zb@)nX1~|lb9LgtSXA%6M^pkF^E76ms?9o)~lRClMMC7-|0C#ry>w@cLVnxD4in` zU)L`>=*k*QzB?WkNe}YM$&vPP;x^8%x77Y*)%x%WzV~-aN?ye4zg&!-zn<%@$XVP< z?QOk07*p}>{Mbg?{6;VHsOR@pL)~I}=(;=q+n%Mw3jWw@)I~3ib)CMEUSId?aK8@)b9ENVQzf4dx#E>v*yP#oxZ@L?h>;9gG`N)N zA)Y$Ue*wwW<|Tibe(PX&A>l1=*KdTDZ((NHPkyM237kPL)x_O8K@ng=9#oShi%pp) zsEV^AaMy0#oo zr;-e}RAJVl4&%q7DPIF^jgc>vbp>_M<3HM)H!yf2@v%xFGAV zi!L!ExqH_8oXo5SRfGE_Lp0d zio?4{kla-tC_+cv@2>8*moLXhWrlld(yY-Wp{D7cT6Y)n3bn~V;bVW}e&DWsrS?n;M+aC|c@<7$oc*I$_UNau)%q7Q|0 zzD`nn#1L=SVAa0)Is49H)xNY~;Z%{}3XeMuA^lv(y$EOtC=?EdqfjUkiS!rrpFiyr z-FAqbu(4V4n87Rv2KGZ z`?^Y-z!A9d5KtwiYFj*DIq#|uP;e6aG~g{LRG?gq?8sI?Wuo?6fivcWlVkvPOYCU_ zXrP6$mkPl4i)|@{Ga?X4P&h-DeA=EL@WE8sp$;*_`eu+A6=G0x_ipN zk3JtwtDH zsmlr24|rc=k6FVR%=>7+Xc8_le1H$~6|_bYT6st*HG3~ATOJwuYKzoUYR~+>y}uml zTthpu7g-H<1v9mWVjQnO3%$Hx$)L~S3_Vys-WQiOk-#}@o4jpeG5Z;w(|2r_q6F zDb5P02Mjt*IMtFpHU!7Wfvzi{oEY>$;Z#-j*gPB~sFcc5KuIy^Tf(V9?0hJoD7*IJ zFNj$SU<-q$$A{b9Bo)Xb?NO+>`{-#jx+^usoQOzOWamo&io9ztxFBYYfUN*DofQ7% z7D*9>{E0#>-bX8+L_bYSd5B1LWaldbiV|xtc0uBr0b5C^$enPz7?SZ`WYu2O8HTAZ z9K)}aI*mw$v-1rAMd;cKA;_AnC?*=t=wO&8!5QTY)69P{1vJ4J9Z5W8plpJU{DVz^ ztqPRG$2oHd%7JmtsQ-(gj`wiJId=Xn+aGk*}>+r8={#P4&q4=3reh>TbbS-3MjQU#|8|3Gy(FrWggqMoSf@ zEzX>tOB0+e{u@ozxJ7i7jKsM=WLyD@@fBzZo

|VL41}9^nS!ZF8Jj0CLARlHa$m*oUl5QvQ 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 GqW%x9dTVk3 diff --git a/tests/results/scale/edge/TestScale_HTTPSListeners/ttr-oss.png b/tests/results/scale/edge/TestScale_HTTPSListeners/ttr-oss.png index 42b5b22305be2b93fa37a432edf3150a09f878b1..db82bcb89be392137817cf9833d461ed05eb7244 100644 GIT binary patch literal 8571 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 W&2=v5yXtb=?S^`0x-WIkLH`HsXi(h% literal 8814 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 diff --git a/tests/results/scale/edge/TestScale_Listeners/cpu-oss.png b/tests/results/scale/edge/TestScale_Listeners/cpu-oss.png index 15069b0f4517cad6af8ccad8cd0ac65ca38d858c..1ab4257d8cce8bedd087d483afee03d658fb7019 100644 GIT binary patch literal 6792 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 literal 6869 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 ou`t`4on8As#r-?U{zsY1PmbZkTaAEV{?3;+NC diff --git a/tests/results/scale/edge/TestScale_Listeners/cpu-plus.png b/tests/results/scale/edge/TestScale_Listeners/cpu-plus.png index 7547acdf2ad2c105fc36b2a980f7adc908617f75..128a37b59c5c53b3b83bded4c5adfc71db6c6d81 100644 GIT binary patch literal 6796 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 N{v{*b_d0hX{tI!4y_Ns~ literal 6911 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 diff --git a/tests/results/scale/edge/TestScale_Listeners/memory-oss.png b/tests/results/scale/edge/TestScale_Listeners/memory-oss.png index 257bb8b251a19808b0458dcf7c974fabb802df43..a666d3f1b2aa21254233552e14dabdfd8ec04586 100644 GIT binary patch literal 6104 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 delta 5183 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 delta 5341 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 literal 8684 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 diff --git a/tests/results/scale/edge/TestScale_Listeners/ttr-plus.png b/tests/results/scale/edge/TestScale_Listeners/ttr-plus.png index 733c33659bbe6ab2be1225a3f1f5978a10825e49..b3252887ba75aead3046596f0da51dc076deaefe 100644 GIT binary patch literal 9095 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 literal 8858 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 diff --git a/tests/results/scale/edge/TestScale_UpstreamServers/cpu-oss.png b/tests/results/scale/edge/TestScale_UpstreamServers/cpu-oss.png index 363f5c27bd9520a16467217ea479318124eadbf4..f7f4ec13ad55b28ba6a053a3ebdfbc9176669146 100644 GIT binary patch literal 6427 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 y`P9v@VtO;}EY%RZsPOTOECvjN- diff --git a/tests/results/scale/edge/TestScale_UpstreamServers/cpu-plus.png b/tests/results/scale/edge/TestScale_UpstreamServers/cpu-plus.png index 7ef41192587b8bf6dbec683b98b1ecf240db3f9b..75916fe6b3f60f9225a2e24f82431d405aad9517 100644 GIT binary patch delta 5594 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 Jde$NIe*i_LdU^l= literal 6939 zcmbVQdpy(a``;LbFd`+jX_P1=r&2S*h8z+(AJTD7AyF*mkVm9VPC10i6v?6FJf~t) zMol7zD04~{8!=+PkNQ4O&+qm7=lA-0&3pIfx_5o<`?{|8ecktU-?Xv9h>6IFfIuKI zGpw;K2*i&7f%qJu{D9=?;~*mt2&`#y+|Go@;{lTV{QQltW)O(LYXEv!5H~@mRyrysDNm7K_&h0!9O!1u$|~;x4sB zhhNW$+qMM&QvreKe|61(Hm1k}b-m+Br|=?e<_H9y32227G@TwcH*t$n?Nbvcy0|!$ zPeAal1Wz7eWBzDfKJfA6fJ?i_C}zlz?%YoRxn<9X&(r1<3?RT*v0_U#g zT|T@+CGBTLVp-s;(v4{R-#>!B*Z}m*YUxZH?Ur@rT@TpWm;)*TRQW*G`HK1N>rJw( zn~I3$9u2|PweSG&^kG#fbZ%j4HRTY(S@{zBeU0f4SA~PlwYs+rww2t=RZ(r9%(xzo zIB+`SQRH^R68o|9i9rT7A8OzhxTj|8{fXy}m$_PGO)ov7)jZvLkn9zqLO1c)iJd(o^JG;LR-JZWR#fMu zmj41P≀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 D`lgNr diff --git a/tests/results/scale/edge/TestScale_UpstreamServers/memory-plus.png b/tests/results/scale/edge/TestScale_UpstreamServers/memory-plus.png index 24485201e2d7a2eb240759622e8f755c7aac4cbd..4f18ecba914f28e8d4bac08fc855bc1f31b90a14 100644 GIT binary patch delta 4388 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 Date: Wed, 24 Jul 2024 12:02:28 -0700 Subject: [PATCH 3/8] Avoid cloning the repo/downloading dependencies (#2280) Problem: The VM clones the repo every time it's created and downloads the go dependencies. This is time consuming. Solution: Clone the repo in the base image and run `go mod download` so that most of the dependencies are already present. When the VM starts and the repo is nginxinc it will just do a git fetch on the repo to sync it. --- .github/workflows/nfr.yml | 1 - tests/scripts/create-and-setup-gcp-vm.sh | 16 +++++++++++++++- tests/scripts/create-gke-cluster.sh | 3 ++- tests/scripts/vars.env-example | 2 +- tests/suite/upgrade_test.go | 2 +- 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/.github/workflows/nfr.yml b/.github/workflows/nfr.yml index 8c078f5ab4..7ad7eff852 100644 --- a/.github/workflows/nfr.yml +++ b/.github/workflows/nfr.yml @@ -102,7 +102,6 @@ jobs: echo "GKE_SVC_ACCOUNT=${{ secrets.GCP_SERVICE_ACCOUNT }}" >> vars.env echo "GKE_NODES_SERVICE_ACCOUNT=${{ secrets.GKE_NODES_SERVICE_ACCOUNT }}" >> vars.env echo "NETWORK_TAGS=nfr-tests-${{ github.run_id }}-${{ matrix.type }}" >> vars.env - echo "NGF_REPO=nginxinc" >> vars.env echo "NGF_BRANCH=${{ github.ref_name }}" >> vars.env echo "SOURCE_IP_RANGE=$(curl -sS -4 icanhazip.com)/32" >> vars.env echo "ADD_VM_IP_AUTH_NETWORKS=true" >> vars.env diff --git a/tests/scripts/create-and-setup-gcp-vm.sh b/tests/scripts/create-and-setup-gcp-vm.sh index 00a9aecec2..a783c80f1a 100644 --- a/tests/scripts/create-and-setup-gcp-vm.sh +++ b/tests/scripts/create-and-setup-gcp-vm.sh @@ -44,5 +44,19 @@ for ((i=1; i<=MAX_RETRIES; i++)); do done gcloud compute scp --zone ${GKE_CLUSTER_ZONE} --project=${GKE_PROJECT} ${SCRIPT_DIR}/vars.env username@${RESOURCE_NAME}:~ + +if [ -n "${NGF_REPO}" ] && [ "${NGF_REPO}" != "nginxinc" ]; then + gcloud compute ssh --zone ${GKE_CLUSTER_ZONE} --project=${GKE_PROJECT} username@${RESOURCE_NAME} \ + --command="bash -i < GKE_SVC_ACCOUNT= GKE_NODES_SERVICE_ACCOUNT= NETWORK_TAGS= -NGF_REPO=nginxinc +NGF_REPO= NGF_BRANCH=main GINKGO_LABEL= GINKGO_FLAGS= diff --git a/tests/suite/upgrade_test.go b/tests/suite/upgrade_test.go index c16248719a..6539fffd96 100644 --- a/tests/suite/upgrade_test.go +++ b/tests/suite/upgrade_test.go @@ -257,7 +257,7 @@ var _ = Describe("Upgrade testing", Label("nfr", "upgrade"), func() { Expect(framework.WriteMetricsResults(resultsFile, res.metrics)).To(Succeed()) - link := fmt.Sprintf("\n\n![%[1]v.png](%[1]v.png)\n", res.scheme) + link := fmt.Sprintf("\n\n![%[1]v-oss.png](%[1]v-oss.png)\n", res.scheme) if *plusEnabled { link = fmt.Sprintf("\n\n![%[1]v-plus.png](%[1]v-plus.png)\n", res.scheme) } From ea485b4ef122ee36546701ea97e29a1d7ac05f2c Mon Sep 17 00:00:00 2001 From: sauln Date: Wed, 24 Jul 2024 21:28:55 +0200 Subject: [PATCH 4/8] docs: adds info on setting up host network access (#2263) Problem: The documentation on getting a local cluster up in kind could be more friendly. Solution: Have updated the docs. --- site/content/installation/running-on-kind.md | 50 +++++++++++++++++++- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/site/content/installation/running-on-kind.md b/site/content/installation/running-on-kind.md index f318c56036..69edefc5ec 100644 --- a/site/content/installation/running-on-kind.md +++ b/site/content/installation/running-on-kind.md @@ -40,13 +40,59 @@ To install NGINX Gateway Fabric, choose the appropriate installation guide that - [Installation with Helm]({{< relref "installation/installing-ngf/helm.md" >}}) - [Installation with Kubernetes manifests]({{< relref "installation/installing-ngf/manifests.md" >}}) +## Set up a NodePort + +When using kind clusters, be aware that NodePort services require [additional setup](https://kind.sigs.k8s.io/docs/user/configuration/#nodeport-with-port-mappings). + +For example, the following will automatically set up port forwarding into a local cluster (intended for development): + +```yaml +kind: Cluster +apiVersion: kind.x-k8s.io/v1alpha4 +nodes: +- role: control-plane + extraPortMappings: + - containerPort: 31437 + hostPort: 8080 + protocol: TCP + - containerPort: 31438 + hostPort: 8443 + protocol: TCP +--- +apiVersion: v1 +kind: Service +metadata: + name: nginx-gateway + namespace: nginx-gateway # must be same namespace as your gateway + labels: + app.kubernetes.io/name: nginx-gateway + app.kubernetes.io/instance: nginx-gateway + app.kubernetes.io/version: "edge" +spec: + type: NodePort + selector: + app.kubernetes.io/name: nginx-gateway + app.kubernetes.io/instance: nginx-gateway + ports: # Update the following ports to match your Gateway Listener ports + - name: http + port: 80 + protocol: TCP + targetPort: 80 + nodePort: 31437 # See https://kind.sigs.k8s.io/docs/user/configuration/#nodeport-with-port-mappings + - name: https + port: 443 + protocol: TCP + targetPort: 443 + nodePort: 31438 +``` + {{}} -When using kind clusters, be aware that NodePort services require [additional setup](https://kind.sigs.k8s.io/docs/user/configuration/#nodeport-with-port-mappings). Also, for LoadBalancer services, you’ll need a [third-party controller](https://kind.sigs.k8s.io/docs/user/loadbalancer/) like MetalLB to assign external IPs. The default Helm chart creates a LoadBalancer service; however, you can disable this by adding `--set service.create=false` to your Helm command. Afterward, you can [configure port forwarding](#configure-port-forwarding) as described below to access the examples. +For LoadBalancer services, you’ll need a [third-party controller](https://kind.sigs.k8s.io/docs/user/loadbalancer/) like MetalLB to assign external IPs. The default Helm chart creates a LoadBalancer service; however, you can disable this by adding `--set service.create=false` to your Helm command. Afterward, you can [configure port forwarding](#configure-port-forwarding) as described below to access the examples. {{}} ## Configure Port Forwarding {#configure-port-forwarding} -Once NGINX Gateway Fabric has been installed, you need to configure port forwarding from local ports **8080** and **8443** to ports **80** and **443** on the **nginx-gateway** Pod. +Once NGINX Gateway Fabric has been installed, if you don't have port forwarding set with both the `NodePort` and `extraPortMappings`, you need to configure port forwarding from local ports **8080** and **8443** to ports **80** and **443** on the **nginx-gateway** Pod. To configure port forwarding, run the following command: From d76d8eb455f0ff0ebbce489637aa619376596f87 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Jul 2024 14:39:13 -0600 Subject: [PATCH 5/8] Bump github.com/nginxinc/nginx-prometheus-exporter from 1.2.0 to 1.3.0 (#2281) Bumps [github.com/nginxinc/nginx-prometheus-exporter](https://github.com/nginxinc/nginx-prometheus-exporter) from 1.2.0 to 1.3.0. - [Release notes](https://github.com/nginxinc/nginx-prometheus-exporter/releases) - [Changelog](https://github.com/nginxinc/nginx-prometheus-exporter/blob/main/CHANGELOG.md) - [Commits](https://github.com/nginxinc/nginx-prometheus-exporter/compare/v1.2.0...v1.3.0) --- updated-dependencies: - dependency-name: github.com/nginxinc/nginx-prometheus-exporter dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index fe4eb4d734..f82fa29a09 100644 --- a/go.mod +++ b/go.mod @@ -8,8 +8,8 @@ require ( github.com/go-logr/logr v1.4.2 github.com/google/go-cmp v0.6.0 github.com/maxbrunsfeld/counterfeiter/v6 v6.8.1 - github.com/nginxinc/nginx-plus-go-client v1.2.1 - github.com/nginxinc/nginx-prometheus-exporter v1.2.0 + github.com/nginxinc/nginx-plus-go-client v1.2.2 + github.com/nginxinc/nginx-prometheus-exporter v1.3.0 github.com/nginxinc/telemetry-exporter v0.1.0 github.com/onsi/ginkgo/v2 v2.19.0 github.com/onsi/gomega v1.33.1 diff --git a/go.sum b/go.sum index 7bd5026f72..7dc3dd84b7 100644 --- a/go.sum +++ b/go.sum @@ -97,10 +97,10 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/nginxinc/nginx-plus-go-client v1.2.1 h1:65L9xgPDNbEbd23FTTCcaZ2qF9TX5/Z6vkkEl7RKiVo= -github.com/nginxinc/nginx-plus-go-client v1.2.1/go.mod h1:n8OFLzrJulJ2fur28Cwa1Qp5DZNS2VicLV+Adt30LQ4= -github.com/nginxinc/nginx-prometheus-exporter v1.2.0 h1:jmu63tEm3hcupIpaIH72NEdwuNgGaQ/9q0IrnNqaPto= -github.com/nginxinc/nginx-prometheus-exporter v1.2.0/go.mod h1:y8KANg4+7e/9HxT3vZDetjETLR5YhU0zv2WhZquo7C0= +github.com/nginxinc/nginx-plus-go-client v1.2.2 h1:sl7HqNDDZq2EVu0eQQVoZ6PKYGa4h2dB/Qr5Ib0YKGw= +github.com/nginxinc/nginx-plus-go-client v1.2.2/go.mod h1:n8OFLzrJulJ2fur28Cwa1Qp5DZNS2VicLV+Adt30LQ4= +github.com/nginxinc/nginx-prometheus-exporter v1.3.0 h1:1JtdxsZH0Uwhu1nL/j/QyOXytP5V5j68AEo2X+DFWb0= +github.com/nginxinc/nginx-prometheus-exporter v1.3.0/go.mod h1:hXoH+X6aIKSyQuO6QTIiPKH3eZyxqy/wW8GYiE3dflU= github.com/nginxinc/telemetry-exporter v0.1.0 h1:wF71jYx4PQpHv5ML0Ba4qN/o37ZNLfiHENXMZsVO7EQ= github.com/nginxinc/telemetry-exporter v0.1.0/go.mod h1:Hcb/Fz6TvTZLxF/p9Fa1YDmdScnZ9Azdl8isO4Hd9v4= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= From 5b3ac4fa2c728380b883bc4e472f46ae28856438 Mon Sep 17 00:00:00 2001 From: Alan Dooley Date: Thu, 25 Jul 2024 11:47:42 +0000 Subject: [PATCH 6/8] Update documentation for style consistency (#2256) This commit updates most of the documentation set to adhere to some contemporary documentation style standards: - Sentence case for titles and headings - Initial headings for how-to guides as "Overview" and "Before you begin" - Moving any frontmatter descriptions to the body of text - Removing unnecessary frontmatter data altogether - Removing unnecessary custom style tag (Incorporated into the theme by default) It also collapses a few single document directories (Adding an unnecessary "hop" for users) and re-orders some sections. --- site/config/api/pkg.tpl | 7 +++-- site/content/how-to/_index.md | 7 +---- site/content/how-to/configuration/_index.md | 9 ------ .../control-plane-configuration.md | 7 +++-- site/content/how-to/maintenance/_index.md | 9 ------ site/content/how-to/monitoring/_index.md | 9 ++---- site/content/how-to/monitoring/dashboard.md | 5 ++-- site/content/how-to/monitoring/prometheus.md | 8 ++--- site/content/how-to/monitoring/tracing.md | 4 +-- .../how-to/monitoring/troubleshooting.md | 3 -- .../how-to/traffic-management/_index.md | 9 ++---- .../traffic-management/advanced-routing.md | 29 ++++++++++--------- .../traffic-management/client-settings.md | 5 ++-- .../traffic-management/https-termination.md | 15 ++++++---- .../integrating-cert-manager.md | 13 +++++---- .../redirects-and-rewrites.md | 15 ++++++---- .../traffic-management/response-headers.md | 18 +++++++----- .../routing-traffic-to-your-app.md | 15 +++++----- .../securing-backend-traffic.md | 18 +++++++----- .../upgrade-apps-without-downtime.md | 5 ++-- .../installation/jwt-password-note.md | 2 +- .../expose-nginx-gateway-fabric.md | 3 -- .../installation/installing-ngf/_index.md | 4 +-- .../installation/installing-ngf/helm.md | 7 +++-- .../installation/installing-ngf/manifests.md | 7 +++-- .../ngf-images/building-the-images.md | 4 +-- .../ngf-images/jwt-token-docker-secret.md | 5 ++-- .../ngf-images/pulling-ngf-image.md | 7 ++--- site/content/installation/running-on-kind.md | 11 +++---- site/content/installation/usage-reporting.md | 5 ++-- .../overview/gateway-api-compatibility.md | 3 +- site/content/overview/gateway-architecture.md | 8 +++-- site/content/overview/nginx-plus.md | 2 +- site/content/overview/product-telemetry.md | 5 ++-- site/content/overview/resource-validation.md | 6 ++-- site/content/reference/api.md | 5 ++-- site/content/reference/cli-help.md | 11 ++++--- .../reference/technical-specifications.md | 2 +- 38 files changed, 148 insertions(+), 159 deletions(-) delete mode 100644 site/content/how-to/configuration/_index.md rename site/content/how-to/{configuration => }/control-plane-configuration.md (94%) delete mode 100644 site/content/how-to/maintenance/_index.md rename site/content/how-to/{maintenance => }/upgrade-apps-without-downtime.md (98%) diff --git a/site/config/api/pkg.tpl b/site/config/api/pkg.tpl index 7ca2d3ed56..c5250235f7 100644 --- a/site/config/api/pkg.tpl +++ b/site/config/api/pkg.tpl @@ -1,11 +1,14 @@ {{ define "packages" }} --- -title: "API Reference" -description: "NGINX Gateway API Reference" +title: "API reference" weight: 100 toc: false --- +## Overview + +NGINX Gateway API Reference + {{ with .packages}}

Packages:

    diff --git a/site/content/how-to/_index.md b/site/content/how-to/_index.md index 969045d4d8..4239eabfe5 100644 --- a/site/content/how-to/_index.md +++ b/site/content/how-to/_index.md @@ -1,9 +1,4 @@ --- -title: "How-To Guides" -description: +title: "How-to guides" weight: 300 -linkTitle: "Guides" -menu: - docs: - parent: NGINX Gateway Fabric --- diff --git a/site/content/how-to/configuration/_index.md b/site/content/how-to/configuration/_index.md deleted file mode 100644 index cd5e67c0e8..0000000000 --- a/site/content/how-to/configuration/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Configuration" -description: -weight: 200 -linkTitle: "Configuration" -menu: - docs: - parent: How-To Guides ---- diff --git a/site/content/how-to/configuration/control-plane-configuration.md b/site/content/how-to/control-plane-configuration.md similarity index 94% rename from site/content/how-to/configuration/control-plane-configuration.md rename to site/content/how-to/control-plane-configuration.md index 03f9376469..293679185a 100644 --- a/site/content/how-to/configuration/control-plane-configuration.md +++ b/site/content/how-to/control-plane-configuration.md @@ -1,11 +1,12 @@ --- -title: "Control Plane Configuration" -description: "Learn how to dynamically update the Gateway Fabric control plane configuration." -weight: 100 +title: "Control plane configuration" +weight: 300 toc: true docs: "DOCS-1416" --- +Learn how to dynamically update the Gateway Fabric control plane configuration. + ## Overview NGINX Gateway Fabric can dynamically update the control plane configuration without restarting. The control plane configuration is stored in the NginxGateway custom resource, created during the installation of NGINX Gateway Fabric. diff --git a/site/content/how-to/maintenance/_index.md b/site/content/how-to/maintenance/_index.md deleted file mode 100644 index dd64b81b48..0000000000 --- a/site/content/how-to/maintenance/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Maintenance and Upgrades" -description: -weight: 500 -linkTitle: "Maintenance and Upgrades" -menu: - docs: - parent: How-To Guides ---- diff --git a/site/content/how-to/monitoring/_index.md b/site/content/how-to/monitoring/_index.md index c649a3153b..4f947a883a 100644 --- a/site/content/how-to/monitoring/_index.md +++ b/site/content/how-to/monitoring/_index.md @@ -1,9 +1,4 @@ --- -title: "Monitoring and Troubleshooting" -description: -weight: 400 -linkTitle: "Monitoring and Troubleshooting" -menu: - docs: - parent: How-To Guides +title: "Monitoring and troubleshooting" +weight: 200 --- diff --git a/site/content/how-to/monitoring/dashboard.md b/site/content/how-to/monitoring/dashboard.md index 8ff5dc79c4..835363d65e 100644 --- a/site/content/how-to/monitoring/dashboard.md +++ b/site/content/how-to/monitoring/dashboard.md @@ -1,12 +1,11 @@ --- -title: "NGINX Plus Dashboard" -description: "Learn how to view the NGINX Plus dashboard to see real-time metrics." +title: "NGINX Plus dashboard" weight: 300 toc: true docs: "DOCS-1417" --- -{{}} +Learn how to view the NGINX Plus dashboard to see real-time metrics. ## Overview diff --git a/site/content/how-to/monitoring/prometheus.md b/site/content/how-to/monitoring/prometheus.md index d0238051e2..d95b2bba64 100644 --- a/site/content/how-to/monitoring/prometheus.md +++ b/site/content/how-to/monitoring/prometheus.md @@ -1,16 +1,14 @@ --- -title: "Prometheus Metrics" -description: "This document describes how to monitor NGINX Gateway Fabric using Prometheus and Grafana. It explains installation and configuration, as well as what metrics are available." +title: "Prometheus metrics" weight: 100 toc: true docs: "DOCS-1418" --- -{{}} +This document describes how to monitor NGINX Gateway Fabric using Prometheus and Grafana. It explains installation and configuration, as well as what metrics are available. ## Overview - NGINX Gateway Fabric metrics are displayed in [Prometheus](https://prometheus.io/) format. These metrics are served through a metrics server orchestrated by the controller-runtime package on HTTP port `9113`. When installed, Prometheus automatically scrapes this port and collects metrics. [Grafana](https://grafana.com/) can be used for rich visualization of these metrics. {{}} @@ -98,7 +96,7 @@ Provided by the [controller-runtime](https://github.com/kubernetes-sigs/controll - Go runtime metrics such as the number of Go routines, garbage collection duration, and Go version. - Controller-specific metrics, including reconciliation errors per controller, length of the reconcile queue, and reconciliation latency. -## How to change the default metrics configuration +## Change the default metrics configuration You can configure monitoring metrics for NGINX Gateway Fabric using Helm or Manifests. diff --git a/site/content/how-to/monitoring/tracing.md b/site/content/how-to/monitoring/tracing.md index bc39f48406..72bc90bbf9 100644 --- a/site/content/how-to/monitoring/tracing.md +++ b/site/content/how-to/monitoring/tracing.md @@ -17,7 +17,7 @@ This guide explains how to enable tracing on HTTPRoutes using NGINX Gateway Fabr Tracing cannot be enabled for [HTTPRoute matches](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteMatch) with `headers`, `params`, or `method` matchers defined. It will be added in a future release. {{< /important >}} -## Install the Collectors +## Install the collectors The first step is to install the collectors. NGINX Gateway Fabric will be configured to export to the OpenTelemetry Collector, which is configured to export to Jaeger. This model allows the visualization collector (Jaeger) to be swapped with something else, or to add more collectors without needing to reconfigure NGINX Gateway Fabric. It is also possible to configure NGINX Gateway Fabric to export directly to Jaeger. @@ -333,7 +333,7 @@ Select a trace to view the attributes. The trace includes the attribute from the global NginxProxy resource as well as the attribute from the ObservabilityPolicy. -## Further Reading +## Further reading - [Custom policies]({{< relref "overview/custom-policies.md" >}}): learn about how NGINX Gateway Fabric custom policies work. - [API reference]({{< relref "reference/api.md" >}}): all configuration fields for the policies mentioned in this guide diff --git a/site/content/how-to/monitoring/troubleshooting.md b/site/content/how-to/monitoring/troubleshooting.md index e15bee6a1c..efb2457011 100644 --- a/site/content/how-to/monitoring/troubleshooting.md +++ b/site/content/how-to/monitoring/troubleshooting.md @@ -5,11 +5,8 @@ toc: true docs: "DOCS-1419" --- -{{< custom-styles >}} - This topic describes possible issues when using NGINX Gateway Fabric and general troubleshooting techniques. When possible, suggested workarounds are provided. - ### General troubleshooting When investigating a problem or requesting help, there are important data points that can be collected to help understand what issues may exist. diff --git a/site/content/how-to/traffic-management/_index.md b/site/content/how-to/traffic-management/_index.md index 8bf8679eac..eb4895183f 100644 --- a/site/content/how-to/traffic-management/_index.md +++ b/site/content/how-to/traffic-management/_index.md @@ -1,9 +1,4 @@ --- -title: "Traffic Management" -description: -weight: 300 -linkTitle: "Traffic Management" -menu: - docs: - parent: How-To Guides +title: "Traffic management" +weight: 100 --- diff --git a/site/content/how-to/traffic-management/advanced-routing.md b/site/content/how-to/traffic-management/advanced-routing.md index 0e318614cf..4ccf1e0bac 100644 --- a/site/content/how-to/traffic-management/advanced-routing.md +++ b/site/content/how-to/traffic-management/advanced-routing.md @@ -1,20 +1,23 @@ --- -title: "Routing to Applications Using HTTP Matching Conditions" -description: "Learn how to deploy multiple applications and HTTPRoutes with request conditions such as paths, methods, headers, and query parameters" +title: "Application routes using HTTP matching conditions" weight: 200 toc: true docs: "DOCS-1422" --- +Learn how to deploy multiple applications and HTTPRoutes with request conditions such as paths, methods, headers, and query parameters + +## Overview + In this guide we will configure advanced routing rules for multiple applications. These rules will showcase request matching by path, headers, query parameters, and method. For an introduction to exposing your application, we recommend that you follow the [basic guide]({{< relref "/how-to/traffic-management/routing-traffic-to-your-app.md" >}}) first. The following image shows the traffic flow that we will be creating with these rules. -{{Traffic Flow Diagram}} +{{}} The goal is to create a set of rules that will result in client requests being sent to specific backends based on the request attributes. In this diagram, we have two versions of the `coffee` service. Traffic for v1 needs to be directed to the old application, while traffic for v2 needs to be directed towards the new application. We also have two `tea` services, one that handles GET operations and one that handles POST operations. Both the `tea` and `coffee` applications share the same Gateway. -## Prerequisites +## Before you begin - [Install]({{< relref "/installation/" >}}) NGINX Gateway Fabric. - [Expose NGINX Gateway Fabric]({{< relref "installation/expose-nginx-gateway-fabric.md" >}}) and save the public IP @@ -27,9 +30,9 @@ The goal is to create a set of rules that will result in client requests being s {{< note >}}In a production environment, you should have a DNS record for the external IP address that is exposed, and it should refer to the hostname that the gateway will forward for.{{< /note >}} -## Coffee Applications +## Coffee applications -### Deploy the Coffee Applications +### Deploy the Coffee applications Begin by deploying the `coffee-v1` and `coffee-v2` applications: @@ -37,7 +40,7 @@ Begin by deploying the `coffee-v1` and `coffee-v2` applications: kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.3.0/examples/advanced-routing/coffee.yaml ``` -### Deploy the Gateway API Resources for the Coffee Applications +### Deploy the Gateway API Resources for the Coffee applications The [gateway](https://gateway-api.sigs.k8s.io/api-types/gateway/) resource is typically deployed by the [cluster operator](https://gateway-api.sigs.k8s.io/concepts/roles-and-personas/#roles-and-personas_1). To deploy the gateway: @@ -111,7 +114,7 @@ This HTTPRoute has a few important properties: If you want both conditions to be required, you can define headers and queryParams in the same match object. -### Send Traffic to Coffee +### Send traffic to Coffee Using the external IP address and port for NGINX Gateway Fabric, we can send traffic to our coffee applications. @@ -147,17 +150,17 @@ Server address: 10.244.0.9:8080 Server name: coffee-v2-68bd55f798-s9z5q ``` -## Tea Applications +## Tea applications Let's deploy a different set of applications now called `tea` and `tea-post`. These applications will have their own set of rules, but will still attach to the same gateway listener as the `coffee` apps. -### Deploy the Tea Applications +### Deploy the Tea applications ```shell kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.3.0/examples/advanced-routing/tea.yaml ``` -### Deploy the HTTPRoute for the Tea Services +### Deploy the HTTPRoute for the Tea services We are reusing the previous gateway for these applications, so all we need to create is the HTTPRoute. @@ -199,7 +202,7 @@ The properties of this HTTPRoute include: - The first rule defines that a POST request to the `/tea` path is routed to the `tea-post` Service. - The second rule defines that a GET request to the `/tea` path is routed to the `tea` Service. -### Send Traffic to Tea +### Send traffic to Tea Using the external IP address and port for NGINX Gateway Fabric, we can send traffic to our tea applications. @@ -332,7 +335,7 @@ If you have any issues while sending traffic, try the following to debug your co Check for any error messages in the conditions. -## Further Reading +## Further reading To learn more about the Gateway API and the resources we created in this guide, check out the following Kubernetes documentation resources: diff --git a/site/content/how-to/traffic-management/client-settings.md b/site/content/how-to/traffic-management/client-settings.md index 0ce78942f0..43aaeefd1e 100644 --- a/site/content/how-to/traffic-management/client-settings.md +++ b/site/content/how-to/traffic-management/client-settings.md @@ -1,5 +1,5 @@ --- -title: "Client Settings Policy" +title: "Client Settings Policy API" weight: 800 toc: true docs: "DOCS-000" @@ -148,7 +148,6 @@ Events: Next, test that the policy is configured by sending a POST request to the coffee and tea applications exceeding the client's max body size of 50 bytes. - ```shell curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/coffee -X POST --data "this payload is greater than fifty bytes by four bytes" ``` @@ -279,7 +278,7 @@ spec: EOF ``` -## Further Reading +## Further reading - [Custom policies]({{< relref "overview/custom-policies.md" >}}): learn about how NGINX Gateway Fabric custom policies work. - [API reference]({{< relref "reference/api.md" >}}): all configuration fields for the `ClientSettingsPolicy` API. diff --git a/site/content/how-to/traffic-management/https-termination.md b/site/content/how-to/traffic-management/https-termination.md index 67f5df7543..971de72ba6 100644 --- a/site/content/how-to/traffic-management/https-termination.md +++ b/site/content/how-to/traffic-management/https-termination.md @@ -1,14 +1,17 @@ --- -title: "HTTPS Termination" -description: "Learn how to terminate HTTPS traffic using NGINX Gateway Fabric." -weight: 500 +title: "HTTPS termination" +weight: 600 toc: true docs: "DOCS-1421" --- +Learn how to terminate HTTPS traffic using NGINX Gateway Fabric. + +## Overview + In this guide, we will show how to configure HTTPS termination for your application, using an [HTTPRoute](https://gateway-api.sigs.k8s.io/api-types/httproute/) redirect filter, secret, and [ReferenceGrant](https://gateway-api.sigs.k8s.io/api-types/referencegrant/). -## Prerequisites +## Before you begin - [Install]({{< relref "installation/" >}}) NGINX Gateway Fabric. - [Expose NGINX Gateway Fabric]({{< relref "installation/expose-nginx-gateway-fabric.md" >}}) and save the public IP address and port of NGINX Gateway Fabric into shell variables: @@ -85,7 +88,7 @@ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/coffee ClusterIP 10.96.189.37 80/TCP 40s ``` -## Configure HTTPS Termination and Routing +## Configure HTTPS termination and routing For the HTTPS, we need a certificate and key that are stored in a secret. This secret will live in a separate namespace, so we will need a ReferenceGrant in order to access it. @@ -238,7 +241,7 @@ Server address: 10.244.0.6:80 Server name: coffee-6b8b6d6486-7fc78 ``` -## Further Reading +## Further reading To learn more about redirects using the Gateway API, see the following resource: diff --git a/site/content/how-to/traffic-management/integrating-cert-manager.md b/site/content/how-to/traffic-management/integrating-cert-manager.md index bbcba4f4df..09f0f8f169 100644 --- a/site/content/how-to/traffic-management/integrating-cert-manager.md +++ b/site/content/how-to/traffic-management/integrating-cert-manager.md @@ -1,11 +1,14 @@ --- -title: "Securing Traffic using Let's Encrypt and Cert-Manager" -description: "Learn how to issue and mange certificates using Let's Encrypt and cert-manager." +title: "Secure traffic using Let's Encrypt and cert-manager" weight: 300 toc: true docs: "DOCS-1425" --- +Learn how to issue and mange certificates using Let's Encrypt and cert-manager. + +## Overview + Securing client server communication is a crucial part of modern application architectures. One of the most important steps in this process is implementing HTTPS (HTTP over TLS/SSL) for all communications. This encrypts the data transmitted between the client and server, preventing eavesdropping and tampering. To do this, you need an SSL/TLS certificate from a trusted Certificate Authority (CA). However, issuing and managing certificates can be a complicated manual process. Luckily, there are many services and tools available to simplify and automate certificate issuance and management. Follow the steps in this guide to: @@ -14,14 +17,14 @@ Follow the steps in this guide to: - Use [Let’s Encrypt](https://letsencrypt.org) as the Certificate Authority (CA) issuing the TLS certificate. - Use [cert-manager](https://cert-manager.io) to automate the provisioning and management of the certificate. -## Prerequisities +## Before you begin - Administrator access to a Kubernetes cluster. - [Helm](https://helm.sh) and [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) must be installed locally. - [NGINX Gateway Fabric deployed]({{< relref "/installation/" >}}) in the Kubernetes cluster. - A DNS-resolvable domain name is required. It must resolve to the public endpoint of the NGINX Gateway Fabric deployment, and this public endpoint must be an external IP address or alias accessible over the internet. The process here will depend on your DNS provider. This DNS name will need to be resolvable from the Let’s Encrypt servers, which may require that you wait for the record to propagate before it will work. -## Overview +## Secure traffic using Let's Encrypt and cert-manage {{cert-manager ACME challenge and certificate management with Gateway API}} @@ -37,7 +40,7 @@ At a high level, the process looks like this: 1. When the client connects to `https://cafe.example.com/coffee`, the request is routed to the coffee-app application and the communication is secured using the signed keypair contained in the cafe-secret secret. 1. The certificate will be automatically renewed when it is close to expiry, the secret will be updated using the new certificate, and NGINX Gateway Fabric will dynamically update the keypair on the filesystem used by NGINX for HTTPS termination once the secret is updated. -## Securing Traffic +## Securing traffic ### Deploy cert-manager diff --git a/site/content/how-to/traffic-management/redirects-and-rewrites.md b/site/content/how-to/traffic-management/redirects-and-rewrites.md index 218dba7af4..184650f32a 100644 --- a/site/content/how-to/traffic-management/redirects-and-rewrites.md +++ b/site/content/how-to/traffic-management/redirects-and-rewrites.md @@ -1,11 +1,14 @@ --- -title: "HTTP Redirects and Rewrites" -description: "Learn how to redirect or rewrite your HTTP traffic using NGINX Gateway Fabric." +title: "HTTP redirects and rewrites" weight: 400 toc: true docs: "DOCS-1424" --- +Learn how to redirect or rewrite your HTTP traffic using NGINX Gateway Fabric. + +## Overview + [HTTPRoute](https://gateway-api.sigs.k8s.io/api-types/httproute/) filters can be used to configure HTTP redirects or rewrites. Redirects return HTTP 3XX responses to a client, instructing it to retrieve a different resource. Rewrites modify components of a client request (such as hostname and/or path) before proxying it upstream. {{< note >}}NGINX Gateway Fabric currently does not support path-based redirects.{{< /note >}} @@ -14,7 +17,7 @@ To see an example of a redirect using scheme and port, see the [HTTPS Terminatio In this guide, we will be configuring a path URL rewrite. -## Prerequisites +## Before you begin - [Install]({{< relref "installation/" >}}) NGINX Gateway Fabric. - [Expose NGINX Gateway Fabric]({{< relref "installation/expose-nginx-gateway-fabric.md" >}}) and save the public IP address and port of NGINX Gateway Fabric into shell variables: @@ -84,7 +87,7 @@ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/coffee ClusterIP 10.96.189.37 80/TCP 40s ``` -## Configure a Path Rewrite +## Configure a path rewrite To create the **cafe** gateway, copy and paste the following into your terminal: @@ -153,7 +156,7 @@ spec: EOF ``` -## Send Traffic +## Send traffic Using the external IP address and port for NGINX Gateway Fabric, we can send traffic to our coffee application. @@ -196,7 +199,7 @@ Server name: coffee-6b8b6d6486-7fc78 URI: /prices ``` -## Further Reading +## Further reading To learn more about redirects and rewrites using the Gateway API, see the following resource: diff --git a/site/content/how-to/traffic-management/response-headers.md b/site/content/how-to/traffic-management/response-headers.md index 03d6f60da0..62076861ed 100644 --- a/site/content/how-to/traffic-management/response-headers.md +++ b/site/content/how-to/traffic-management/response-headers.md @@ -1,18 +1,20 @@ --- -title: "HTTP Response Headers" -description: "Learn how to modify the response headers of your application using NGINX Gateway Fabric." -weight: 700 +title: "HTTP response headers" +weight: 500 toc: true --- +Learn how to modify the response headers of your application using NGINX Gateway Fabric. + +## Overview + [HTTP Header Modifiers](https://gateway-api.sigs.k8s.io/guides/http-header-modifier/?h=request#http-header-modifiers) can be used to add, modify or remove headers during the request-response lifecycle. The [ResponseHeaderModifier](https://gateway-api.sigs.k8s.io/guides/http-header-modifier/#http-response-header-modifier) is used to alter headers in a response to the client. In this guide we will modify the headers for HTTP responses when client requests are made. For an introduction to exposing your application, we recommend that you follow the [basic guide]({{< relref "/how-to/traffic-management/routing-traffic-to-your-app.md" >}}) first. We'll begin by configuring an app with custom headers and a straightforward HTTPRoute. We'll then observe the server response in relation to header responses. Next, we'll delve into modifying some of those headers using an HTTPRoute with filters to modify *response* headers. Our aim will be to verify whether the server responds with the modified headers. - -## Prerequisites +## Before you begin - [Install]({{< relref "/installation/" >}}) NGINX Gateway Fabric. - [Expose NGINX Gateway Fabric]({{< relref "installation/expose-nginx-gateway-fabric.md" >}}) and save the public IP @@ -99,7 +101,7 @@ This HTTPRoute has a few important properties: - `cafe.example.com` is the hostname that is matched for all requests to the backends defined in this HTTPRoute. - The `match` rule defines that all requests with the path prefix `/headers` are sent to the `headers` Service. -### Send Traffic to the Headers Application +### Send traffic to the Headers application We will use `curl` with the `-i` flag to access the application and include the response headers in the output: @@ -131,7 +133,7 @@ In the output above, you can see that the headers application adds the following In the next section we will modify these headers by adding a ResponseHeaderModifier filter to the headers HTTPRoute. -### Update the HTTPRoute to Modify the Response Headers +### Update the HTTPRoute to modify the Response headers Let's update the HTTPRoute by adding a `ResponseHeaderModifier` filter: @@ -176,7 +178,7 @@ Notice that this HTTPRoute has a `ResponseHeaderModifier` filter defined for the - Removes `X-Header-Remove` header. -### Send Traffic to the Modified Headers Application +### Send traffic to the modified Headers application We will send a curl request to the modified `headers` application and verify the response headers are modified. diff --git a/site/content/how-to/traffic-management/routing-traffic-to-your-app.md b/site/content/how-to/traffic-management/routing-traffic-to-your-app.md index cf310df780..2a19111bd6 100644 --- a/site/content/how-to/traffic-management/routing-traffic-to-your-app.md +++ b/site/content/how-to/traffic-management/routing-traffic-to-your-app.md @@ -1,16 +1,17 @@ --- -title: "Routing Traffic to Your Application" -description: "Learn how to route external traffic to your Kubernetes applications using NGINX Gateway Fabric." +title: "Routing traffic to applications" weight: 100 toc: true docs: "DOCS-1426" --- -{{}} +Learn how to route external traffic to your Kubernetes applications using NGINX Gateway Fabric. + +## Overview You can route traffic to your Kubernetes applications using the Gateway API and NGINX Gateway Fabric. Whether you're managing a web application or a REST backend API, you can use NGINX Gateway Fabric to expose your application outside the cluster. -## Prerequisites +## Before you begin - [Install]({{< relref "installation/" >}}) NGINX Gateway Fabric. - [Expose NGINX Gateway Fabric]({{< relref "installation/expose-nginx-gateway-fabric.md" >}}) and save the public IP address and port of NGINX Gateway Fabric into shell variables: @@ -24,7 +25,7 @@ You can route traffic to your Kubernetes applications using the Gateway API and The application we are going to use in this guide is a simple **coffee** application comprised of one service and two pods: -{{coffee app}} +{{}} Using this architecture, the **coffee** application is not accessible outside the cluster. We want to expose this application on the hostname "cafe.example.com" so that clients outside the cluster can access it. @@ -169,7 +170,7 @@ The [**rules**](https://gateway-api.sigs.k8s.io/references/spec/#gateway.network ## Test the configuration -To test the configuration, we will send a request to the public IP and port of NGINX Gateway Fabric that you saved in the [prerequisites](#prerequisites) section and verify that the response comes from one of the **coffee** pods. +To test the configuration, we will send a request to the public IP and port of NGINX Gateway Fabric that you saved in the [Before you begin](#before-you-begin) section and verify that the response comes from one of the **coffee** pods. {{< note >}}Your clients should be able to resolve the domain name "cafe.example.com" to the public IP of the NGINX Gateway Fabric. In this guide we will simulate that using curl's `--resolve` option. {{< /note >}} @@ -360,7 +361,7 @@ If you have any issues while testing the configuration, try the following to deb If your issue persists, [contact us](https://github.com/nginxinc/nginx-gateway-fabric#contacts). -## Further Reading +## Further reading To learn more about the Gateway API and the resources we created in this guide, check out the following resources: diff --git a/site/content/how-to/traffic-management/securing-backend-traffic.md b/site/content/how-to/traffic-management/securing-backend-traffic.md index edb0b1eaa3..cdbf618acb 100644 --- a/site/content/how-to/traffic-management/securing-backend-traffic.md +++ b/site/content/how-to/traffic-management/securing-backend-traffic.md @@ -1,14 +1,18 @@ --- -title: "Securing Traffic to Backends" -description: "Learn how to encrypt HTTP traffic between NGINX Gateway Fabric and your backend pods." -weight: 600 +title: "Securing backend traffic" +description: +weight: 700 toc: true docs: "DOCS-1423" --- +Learn how to encrypt HTTP traffic between NGINX Gateway Fabric and your backend pods. + +## Overview + In this guide, we will show how to specify the TLS configuration of the connection from the Gateway to a backend pod/s via the Service API object using a [BackendTLSPolicy](https://gateway-api.sigs.k8s.io/api-types/backendtlspolicy/). This covers the use-case where the service or backend owner is doing their own TLS and NGINX Gateway Fabric needs to know how to connect to this backend pod that has its own certificate over HTTPS. -## Prerequisites +## Before you begin - [Install]({{< relref "installation/" >}}) NGINX Gateway Fabric. Please note that the Gateway APIs from the experimental channel are required, and NGF must be deployed with the `--gateway-api-experimental-features` flag. - [Expose NGINX Gateway Fabric]({{< relref "installation/expose-nginx-gateway-fabric.md" >}}) and save the public IP address and port of NGINX Gateway Fabric into shell variables: @@ -122,7 +126,7 @@ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/secure-app ClusterIP 10.96.213.57 8443/TCP 9s ``` -## Configure Routing rules +## Configure routing rules First, we will create the Gateway resource with an HTTP listener: @@ -189,7 +193,7 @@ curl --resolve secure-app.example.com:$GW_PORT:$GW_IP http://secure-app.example. We can see we a status 400 Bad Request message from NGINX. -## Create the Backend TLS configuration +## Create the backend TLS configuration To configure the backend TLS terminationm, first we will create the ConfigMap that holds the `ca.crt` entry for verifying our self-signed certificates: @@ -305,7 +309,7 @@ curl --resolve secure-app.example.com:$GW_PORT:$GW_IP http://secure-app.example. hello from pod secure-app ``` -## Further Reading +## Further reading To learn more about configuring backend TLS termination using the Gateway API, see the following resources: diff --git a/site/content/how-to/maintenance/upgrade-apps-without-downtime.md b/site/content/how-to/upgrade-apps-without-downtime.md similarity index 98% rename from site/content/how-to/maintenance/upgrade-apps-without-downtime.md rename to site/content/how-to/upgrade-apps-without-downtime.md index 01763efe7d..a7cc07b67d 100644 --- a/site/content/how-to/maintenance/upgrade-apps-without-downtime.md +++ b/site/content/how-to/upgrade-apps-without-downtime.md @@ -1,12 +1,11 @@ --- title: "Upgrade applications without downtime" -description: "Learn how to use NGINX Gateway Fabric to upgrade applications without downtime." -weight: 100 +weight: 400 toc: true docs: "DOCS-1420" --- -{{}} +Learn how to use NGINX Gateway Fabric to upgrade applications without downtime. ## Overview diff --git a/site/content/includes/installation/jwt-password-note.md b/site/content/includes/installation/jwt-password-note.md index 2f12808252..4cfeec8b92 100644 --- a/site/content/includes/installation/jwt-password-note.md +++ b/site/content/includes/installation/jwt-password-note.md @@ -1,5 +1,5 @@ --- -docs: +docs: "DOCS-000" --- {{< note >}} For security, follow these practices with JSON Web Tokens (JWTs), passwords, and shell history: diff --git a/site/content/installation/expose-nginx-gateway-fabric.md b/site/content/installation/expose-nginx-gateway-fabric.md index 36671525be..2acbf349cd 100644 --- a/site/content/installation/expose-nginx-gateway-fabric.md +++ b/site/content/installation/expose-nginx-gateway-fabric.md @@ -1,13 +1,10 @@ --- title: "Expose NGINX Gateway Fabric" -description: "" weight: 300 toc: true docs: "DOCS-1427" --- -{{}} - ## Overview Gain access to NGINX Gateway Fabric by creating either a **NodePort** service or a **LoadBalancer** service in the same namespace as the controller. The service name is specified in the `--service` argument of the controller. diff --git a/site/content/installation/installing-ngf/_index.md b/site/content/installation/installing-ngf/_index.md index 7a23488b82..401f982246 100644 --- a/site/content/installation/installing-ngf/_index.md +++ b/site/content/installation/installing-ngf/_index.md @@ -1,8 +1,8 @@ --- -title: "Installing NGINX Gateway Fabric" +title: "Install NGINX Gateway Fabric" description: weight: 100 -linkTitle: "Installing NGINX Gateway Fabric" +linkTitle: "Install NGINX Gateway Fabric" menu: docs: parent: Installation diff --git a/site/content/installation/installing-ngf/helm.md b/site/content/installation/installing-ngf/helm.md index bf22bb6b39..4a70620763 100644 --- a/site/content/installation/installing-ngf/helm.md +++ b/site/content/installation/installing-ngf/helm.md @@ -1,14 +1,15 @@ --- title: "Installation with Helm" -description: "Learn how to install, upgrade, and uninstall NGINX Gateway Fabric in a Kubernetes cluster with Helm." weight: 100 toc: true docs: "DOCS-1430" --- -{{}} +## Overview -## Prerequisites +Learn how to install, upgrade, and uninstall NGINX Gateway Fabric in a Kubernetes cluster using Helm. + +## Before you begin To complete this guide, you'll need to install: diff --git a/site/content/installation/installing-ngf/manifests.md b/site/content/installation/installing-ngf/manifests.md index 2c41d1907a..3e5b37e9c2 100644 --- a/site/content/installation/installing-ngf/manifests.md +++ b/site/content/installation/installing-ngf/manifests.md @@ -1,14 +1,15 @@ --- title: "Installation with Kubernetes manifests" -description: "Learn how to install, upgrade, and uninstall NGINX Gateway Fabric using Kubernetes manifests." weight: 200 toc: true docs: "DOCS-1429" --- -{{}} +## Overview -## Prerequisites +Learn how to install, upgrade, and uninstall NGINX Gateway Fabric using Kubernetes manifests. + +## Before you begin To complete this guide, you'll need to install: diff --git a/site/content/installation/ngf-images/building-the-images.md b/site/content/installation/ngf-images/building-the-images.md index 92391caede..f80b72271b 100644 --- a/site/content/installation/ngf-images/building-the-images.md +++ b/site/content/installation/ngf-images/building-the-images.md @@ -1,12 +1,10 @@ --- -title: "Building NGINX Gateway Fabric and NGINX Images" +title: "Build NGINX Gateway Fabric and NGINX images" weight: 300 toc: true docs: "DOCS-1431" --- -{{}} - ## Overview While most users will install NGINX Gateway Fabric [with Helm]({{< relref "/installation/installing-ngf/helm.md" >}}) or [Kubernetes manifests]({{< relref "/installation/installing-ngf/manifests.md" >}}), manually building the [NGINX Gateway Fabric and NGINX images]({{< relref "/overview/gateway-architecture.md#the-nginx-gateway-fabric-pod" >}}) can be helpful for testing and development purposes. Follow the steps in this document to build the NGINX Gateway Fabric and NGINX images. diff --git a/site/content/installation/ngf-images/jwt-token-docker-secret.md b/site/content/installation/ngf-images/jwt-token-docker-secret.md index c32d708023..3fddec3cc2 100644 --- a/site/content/installation/ngf-images/jwt-token-docker-secret.md +++ b/site/content/installation/ngf-images/jwt-token-docker-secret.md @@ -1,6 +1,5 @@ --- -title: "Getting the NGINX Plus image using JWT" -description: "This document describes how to use a JWT token to get an NGINX Plus image for NGINX Gateway Fabric from the F5 Docker registry." +title: "Get the NGINX Plus image using JWT" weight: 100 doctypes: ["install"] toc: true @@ -9,6 +8,8 @@ docs: "DOCS-1432" ## Overview +This document describes how to use a JWT token to get an NGINX Plus image for NGINX Gateway Fabric from the F5 Docker registry. + Follow the steps in this document to pull the NGINX Plus image for NGINX Gateway Fabric from the F5 Docker registry into your Kubernetes cluster using your JWT token. To list available image tags using the Docker registry API, you will also need to download its certificate and key from [MyF5](https://my.f5.com). {{}}An NGINX Plus subscription will not work with these instructions. For NGINX Gateway Fabric, you must have an Connectivity Stack for Kubernetes subscription.{{}} diff --git a/site/content/installation/ngf-images/pulling-ngf-image.md b/site/content/installation/ngf-images/pulling-ngf-image.md index 741b6c7644..c7afc1233b 100644 --- a/site/content/installation/ngf-images/pulling-ngf-image.md +++ b/site/content/installation/ngf-images/pulling-ngf-image.md @@ -1,14 +1,14 @@ --- -title: "Pushing an NGINX Plus image to a private registry" -description: "This document describes how to pull a NGINX Plus image for NGINX Gateway Fabric from the official F5 Docker registry and upload it to your private registry." +title: "Push an NGINX Plus image to a private registry" weight: 200 doctypes: ["install"] toc: true docs: "DOCS-1433" --- -{{}} +## Overview +This document describes how to pull a NGINX Plus image for NGINX Gateway Fabric from the official F5 Docker registry and upload it to your private registry ## Before you begin @@ -17,7 +17,6 @@ Before you start, you'll need these installed on your machine: - [Docker v18.09 or higher](https://docs.docker.com/engine/release-notes/18.09/). - The certificate (**nginx-repo.crt**) and key (**nginx-repo.key**) for a Connectivity Stack for Kubernetes subscription, obtainable from [MyF5l](https://my.f5.com) An NGINX Plus certificate and key will not work. - ## Configuring Docker for the F5 Container Registry To configure Docker to communicate with the F5 Container Registry, first create a folder containing your certificate and key files: diff --git a/site/content/installation/running-on-kind.md b/site/content/installation/running-on-kind.md index 69edefc5ec..b63df6aa02 100644 --- a/site/content/installation/running-on-kind.md +++ b/site/content/installation/running-on-kind.md @@ -1,14 +1,15 @@ --- -title: "Deploying NGINX Gateway Fabric on a kind Cluster" -description: "Learn how to run NGINX Gateway Fabric on a kind (Kubernetes in Docker) cluster." +title: "Deploy NGINX Gateway Fabric on a kind Cluster" weight: 400 toc: true docs: "DOCS-1428" --- -{{< custom-styles >}} +## Overview -## Prerequisites +Learn how to run NGINX Gateway Fabric on a kind (Kubernetes in Docker) cluster. + +## Before you begin To complete the steps in this guide, you first need to install the following tools for Kubernetes management and development: @@ -102,6 +103,6 @@ kubectl -n nginx-gateway port-forward 8080:80 8443:443 {{< note >}}NGINX will only start listening on these ports after you set up a [Gateway](https://gateway-api.sigs.k8s.io/api-types/gateway/#gateway) resource with a valid listener.{{}} -## Getting Started with NGINX Gateway Fabric +## Get Started with NGINX Gateway Fabric Learn how to use NGINX Gateway Fabric by exploring the tutorials in the [examples](https://github.com/nginxinc/nginx-gateway-fabric/tree/v1.3.0/examples) directory. The guides provide practical instructions and scenarios to help you use NGINX Gateway Fabric effectively. diff --git a/site/content/installation/usage-reporting.md b/site/content/installation/usage-reporting.md index a3f1e5c96e..d23e296834 100644 --- a/site/content/installation/usage-reporting.md +++ b/site/content/installation/usage-reporting.md @@ -1,6 +1,5 @@ --- -title: "Enabling Usage Reporting for NGINX Plus" -description: "This page outlines how to enable Usage Reporting for NGINX Gateway Fabric and how to view the usage data through the API." +title: "Enable Usage Reporting for NGINX Plus" weight: 1000 toc: true docs: "DOCS-000" @@ -8,6 +7,8 @@ docs: "DOCS-000" ## Overview +This document describes how to enable Usage Reporting for NGINX Gateway Fabric and how to view the usage data through the API. + Usage Reporting connects to the NGINX Instance Manager and reports the number of Nodes and NGINX Gateway Fabric Pods in the cluster. To use Usage Reporting, you must have access to [NGINX Instance Manager](https://www.nginx.com/products/nginx-management-suite/instance-manager). Usage Reporting is a requirement of the new Flexible Consumption Program for NGINX Gateway Fabric, used to calculate costs. **This only applies if using NGINX Plus as the data plane.** Usage is reported every 24 hours. diff --git a/site/content/overview/gateway-api-compatibility.md b/site/content/overview/gateway-api-compatibility.md index 567b3c5af0..c2094de2ae 100644 --- a/site/content/overview/gateway-api-compatibility.md +++ b/site/content/overview/gateway-api-compatibility.md @@ -1,11 +1,12 @@ --- title: "Gateway API Compatibility" -description: "Learn which Gateway API resources NGINX Gateway Fabric supports and the extent of that support." weight: 200 toc: true docs: "DOCS-1412" --- +Learn which Gateway API resources NGINX Gateway Fabric supports and to which level. + ## Summary {{< bootstrap-table "table table-striped table-bordered" >}} diff --git a/site/content/overview/gateway-architecture.md b/site/content/overview/gateway-architecture.md index d87cd7f930..d2a197920b 100644 --- a/site/content/overview/gateway-architecture.md +++ b/site/content/overview/gateway-architecture.md @@ -1,19 +1,21 @@ --- -title: "Gateway Architecture" -description: "Learn about the architecture and design principles of NGINX Gateway Fabric." +title: "Gateway architecture" weight: 100 toc: true docs: "DOCS-1413" --- +Learn about the architecture and design principles of NGINX Gateway Fabric. + The intended audience for this information is primarily the two following groups: + - _Cluster Operators_ who would like to know how the software works and understand how it can fail. - _Developers_ who would like to [contribute](https://github.com/nginxinc/nginx-gateway-fabric/blob/main/CONTRIBUTING.md) to the project. The reader needs to be familiar with core Kubernetes concepts, such as pods, deployments, services, and endpoints. For an understanding of how NGINX itself works, you can read the ["Inside NGINX: How We Designed for Performance & Scale"](https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/) blog post. -## NGINX Gateway Fabric Overview +## Overview NGINX Gateway Fabric is an open source project that provides an implementation of the [Gateway API](https://gateway-api.sigs.k8s.io/) using [NGINX](https://nginx.org/) as the data plane. The goal of this project is to implement the core Gateway APIs -- _Gateway_, _GatewayClass_, _HTTPRoute_, _GRPCRoute_, _TCPRoute_, _TLSRoute_, and _UDPRoute_ -- to configure an HTTP or TCP/UDP load balancer, reverse proxy, or API gateway for applications running on Kubernetes. NGINX Gateway Fabric supports a subset of the Gateway API. diff --git a/site/content/overview/nginx-plus.md b/site/content/overview/nginx-plus.md index e2fd39e238..e79a97d1de 100644 --- a/site/content/overview/nginx-plus.md +++ b/site/content/overview/nginx-plus.md @@ -1,5 +1,5 @@ --- -title: "Advanced features of NGINX Plus" +title: "Advanced features with NGINX Plus" weight: 300 toc: true docs: "DOCS-1415" diff --git a/site/content/overview/product-telemetry.md b/site/content/overview/product-telemetry.md index f69b641718..4b222c5b6b 100644 --- a/site/content/overview/product-telemetry.md +++ b/site/content/overview/product-telemetry.md @@ -1,10 +1,11 @@ --- -title: "Product Telemetry" -description: "Learn how NGINX Gateway Fabric collects product telemetry to identify areas to focus development on improving." +title: "Product telemetry" weight: 500 toc: true --- +Learn why, what and how NGINX Gateway Fabric collects telemetry. + ## Overview NGINX Gateway Fabric collects telemetry by default, which allows its developers to understand what features are most popular with its user base. This data is used to triage development work, prioritizing features and functionality that will positively impact the most people. diff --git a/site/content/overview/resource-validation.md b/site/content/overview/resource-validation.md index 2483ef0151..533b64bb84 100644 --- a/site/content/overview/resource-validation.md +++ b/site/content/overview/resource-validation.md @@ -1,5 +1,5 @@ --- -title: "Resource Validation" +title: "Resource validation" weight: 400 toc: true docs: "DOCS-1414" @@ -9,7 +9,7 @@ docs: "DOCS-1414" This document describes how NGINX Gateway Fabric validates Gateway API and NGINX Gateway Fabric Kubernetes resources. -## Gateway API Resource Validation +## Gateway API resource validation NGINX Gateway Fabric validates Gateway API resources for several reasons: @@ -110,7 +110,7 @@ Status: {{< note>}}Make sure the reported observed generation is the same as the resource generation.{{< /note >}} -## NGINX Gateway Fabric Resource Validation +## NGINX Gateway Fabric Resource validation ### Step 1 - OpenAPI Scheme validation by Kubernetes API Server diff --git a/site/content/reference/api.md b/site/content/reference/api.md index b597e1a39e..d9dd3d2de2 100644 --- a/site/content/reference/api.md +++ b/site/content/reference/api.md @@ -1,9 +1,10 @@ --- -title: "API Reference" -description: "NGINX Gateway API Reference" +title: "API reference" weight: 100 toc: false --- +## Overview +NGINX Gateway API Reference

    Packages:

    • diff --git a/site/content/reference/cli-help.md b/site/content/reference/cli-help.md index f40c1067ba..8f53f5c7e9 100644 --- a/site/content/reference/cli-help.md +++ b/site/content/reference/cli-help.md @@ -1,16 +1,19 @@ --- -title: "Command-line Reference Guide" -description: "Learn about the commands available for the executable file of the NGINX Gateway Fabric container." +title: "Command-line reference guide" weight: 100 toc: true docs: "DOCS-1435" --- -## Static Mode +## Overview + +Learn about the commands available for the executable file of the NGINX Gateway Fabric container. + +## Static mode This command configures NGINX for a single NGINX Gateway Fabric resource. -_Usage_: +*Usage*: ```shell gateway static-mode [flags] diff --git a/site/content/reference/technical-specifications.md b/site/content/reference/technical-specifications.md index 03efd5fb68..bb403c0289 100644 --- a/site/content/reference/technical-specifications.md +++ b/site/content/reference/technical-specifications.md @@ -1,5 +1,5 @@ --- -title: "Technical Specifications" +title: "Technical specifications" draft: false description: "NGINX Gateway Fabric technical specifications." weight: 200 From 806f867dc159a30689ba36c5f3cef3e94687b851 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Jul 2024 09:57:07 -0700 Subject: [PATCH 7/8] Bump curlimages/curl from 8.8.0 to 8.9.0 in /tests/suite/manifests/longevity (#2287) Bump curlimages/curl in /tests/suite/manifests/longevity Bumps curlimages/curl from 8.8.0 to 8.9.0. --- updated-dependencies: - dependency-name: curlimages/curl dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/suite/manifests/longevity/cronjob.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/suite/manifests/longevity/cronjob.yaml b/tests/suite/manifests/longevity/cronjob.yaml index 6959ee845b..c145b94f70 100644 --- a/tests/suite/manifests/longevity/cronjob.yaml +++ b/tests/suite/manifests/longevity/cronjob.yaml @@ -40,7 +40,7 @@ spec: serviceAccountName: rollout-mgr containers: - name: coffee-rollout-mgr - image: curlimages/curl:8.8.0 + image: curlimages/curl:8.9.0 imagePullPolicy: IfNotPresent command: - /bin/sh @@ -69,7 +69,7 @@ spec: serviceAccountName: rollout-mgr containers: - name: coffee-rollout-mgr - image: curlimages/curl:8.8.0 + image: curlimages/curl:8.9.0 imagePullPolicy: IfNotPresent command: - /bin/sh From c2afc9d2d6b43c5c753241da2753fa3b328284c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Jul 2024 17:08:40 +0000 Subject: [PATCH 8/8] Bump github/codeql-action from 3.25.13 to 3.25.14 (#2288) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.13 to 3.25.14. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/2d790406f505036ef40ecba973cc774a50395aac...5cf07d8b700b67e235fbb65cbc84f69c0cf10464) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/codeql-analysis.yml | 4 ++-- .github/workflows/scorecards.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9b46c5970d..3892d200e2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -170,7 +170,7 @@ jobs: fail-build: false - name: Upload scan result to GitHub Security tab - uses: github/codeql-action/upload-sarif@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 + uses: github/codeql-action/upload-sarif@5cf07d8b700b67e235fbb65cbc84f69c0cf10464 # v3.25.14 continue-on-error: true with: sarif_file: ${{ steps.scan.outputs.sarif }} diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 29eed5c4f1..bbec385b0d 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -52,7 +52,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 + uses: github/codeql-action/init@5cf07d8b700b67e235fbb65cbc84f69c0cf10464 # v3.25.14 with: languages: ${{ matrix.language }} build-mode: ${{ matrix.build-mode }} @@ -64,6 +64,6 @@ jobs: # queries: security-extended,security-and-quality - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 + uses: github/codeql-action/analyze@5cf07d8b700b67e235fbb65cbc84f69c0cf10464 # v3.25.14 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 8a41ea5e52..cd90b90d6d 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -60,6 +60,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 + uses: github/codeql-action/upload-sarif@5cf07d8b700b67e235fbb65cbc84f69c0cf10464 # v3.25.14 with: sarif_file: results.sarif