diff --git a/.docforge/config.yaml b/.docforge/config.yaml index af5ab1730..cedafda78 100644 --- a/.docforge/config.yaml +++ b/.docforge/config.yaml @@ -19,6 +19,7 @@ content-files-formats: - ".gif" - ".ico" - ".webmanifest" +- ".webp" resources-download-path: content/__resources github-oauth-env-map: "github.com": GITHUB_OAUTH_TOKEN diff --git a/Makefile b/Makefile index b6226ca22..253cf7239 100644 --- a/Makefile +++ b/Makefile @@ -105,6 +105,26 @@ docker-preview: install: ## Install npm dependencies npm ci + +OPTIMIZE_DIR ?= website +OPTIMIZE_MIN_KB ?= 200 +OPTIMIZE_SKIP ?= favicon.png,favicon-16x16.png,favicon-32x32.png,favicon-96x96.png,apple-touch-icon.png,web-app-manifest-192x192.png,web-app-manifest-512x512.png,2025-07.png,og-gardener.png + +.PHONY: optimize-assets +optimize-assets: ## Dry run: show which PNG images would be converted to WebP + node scripts/optimize-assets.mjs \ + --dir $(OPTIMIZE_DIR) \ + --min-kb $(OPTIMIZE_MIN_KB) \ + --skip $(OPTIMIZE_SKIP) + +.PHONY: optimize-assets-write +optimize-assets-write: ## Convert large PNG images to WebP and update references + node scripts/optimize-assets.mjs \ + --dir $(OPTIMIZE_DIR) \ + --min-kb $(OPTIMIZE_MIN_KB) \ + --skip $(OPTIMIZE_SKIP) \ + --write + .PHONY: dev dev: npx vitepress dev diff --git a/package-lock.json b/package-lock.json index b6ae7240c..2a4f85a9d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "gray-matter": "4.0.3", "js-yaml": "4.1.1", "lodash-es": "4.18.1", + "sharp": "^0.34.5", "vitepress": "1.6.4", "vitepress-sidebar": "1.33.1", "vue": "3.5.16" @@ -18,7 +19,8 @@ "@types/js-yaml": "4.0.9", "@types/lodash-es": "4.17.12", "@types/markdown-it": "12.2.3", - "@types/node": "20.11.27" + "@types/node": "20.11.27", + "sharp": "^0.34.5" } }, "node_modules/@algolia/autocomplete-core": { @@ -340,6 +342,17 @@ } } }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", @@ -723,6 +736,496 @@ "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", "license": "MIT" }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, "node_modules/@isaacs/cliui": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", @@ -1772,6 +2275,16 @@ "node": ">=6" } }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", @@ -2529,6 +3042,64 @@ "node": ">=4" } }, + "node_modules/semver": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -2663,6 +3234,14 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "optional": true + }, "node_modules/typescript": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", diff --git a/package.json b/package.json index 3b2045f9b..d08108417 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "gray-matter": "4.0.3", "js-yaml": "4.1.1", "lodash-es": "4.18.1", + "sharp": "^0.34.5", "vitepress": "1.6.4", "vitepress-sidebar": "1.33.1", "vue": "3.5.16" @@ -17,6 +18,7 @@ "@types/js-yaml": "4.0.9", "@types/lodash-es": "4.17.12", "@types/markdown-it": "12.2.3", - "@types/node": "20.11.27" + "@types/node": "20.11.27", + "sharp": "^0.34.5" } } diff --git a/post-processing/part-1.js b/post-processing/part-1.js index 518119505..d4739902c 100644 --- a/post-processing/part-1.js +++ b/post-processing/part-1.js @@ -212,7 +212,7 @@ async function renameImagesToLowercase(basePath){ try { // Match any file with uppercase letters and image extensions - const regex = /[A-Z]+.*\.(png|jpg|jpeg|svg)$/i; + const regex = /[A-Z]+.*\.(png|jpg|jpeg|svg|webp)$/i; const files = await fs.readdir(directory); for (const file of files) { diff --git a/scripts/optimize-assets.mjs b/scripts/optimize-assets.mjs new file mode 100644 index 000000000..e5c22e4cc --- /dev/null +++ b/scripts/optimize-assets.mjs @@ -0,0 +1,182 @@ +/** + * Converts large PNG images to WebP and updates all references. + * Fully configurable via CLI arguments — no project-specific defaults. + * + * Usage: + * node scripts/optimize-assets.mjs --dir website --min-kb 200 ← dry run + * node scripts/optimize-assets.mjs --dir website --min-kb 200 --write + * + * Arguments: + * --dir Target directory to scan for images (required) + * --min-kb Only convert files above this size in KB (default: 0 = all) + * --skip Comma-separated list of filenames to skip + * --write Apply changes (default is dry run) + */ + +import sharp from 'sharp' +import { readdir, stat, unlink, readFile, writeFile } from 'fs/promises' +import { join, extname, basename, dirname } from 'path' +import { fileURLToPath } from 'url' + +const __dirname = dirname(fileURLToPath(import.meta.url)) +const ROOT = join(__dirname, '..') + +// parse args +const args = process.argv.slice(2) +const DRY_RUN = !args.includes('--write') + +function getArg(flag) { + const i = args.indexOf(flag) + return i !== -1 ? args[i + 1] : null +} + +const dirArg = getArg('--dir') +if (!dirArg) { + console.error('Error: --dir argument is required') + console.error('Usage: node scripts/optimize-assets.mjs --dir website --min-kb 200') + process.exit(1) +} + +const TARGET_DIR = join(ROOT, dirArg) +const MIN_SIZE_KB = parseFloat(getArg('--min-kb') ?? '0') +const skipArg = getArg('--skip') +const SKIP_FILENAMES = new Set(skipArg ? skipArg.split(',') : []) + +//config + +// Directories to search for references to update +const REF_DIRS = [ + TARGET_DIR, + join(ROOT, '.vitepress', 'theme'), +] + +const CONVERTIBLE = new Set(['.png']) +const REF_EXTENSIONS = new Set(['.md', '.vue', '.html', '.js', '.ts']) + +//helpers + +async function fileSizeKB(p) { + return ((await stat(p)).size / 1024).toFixed(1) +} + +async function* walk(dir) { + for (const entry of await readdir(dir, { withFileTypes: true })) { + const full = join(dir, entry.name) + if (entry.isDirectory()) yield* walk(full) + else yield full + } +} + +/** + * Find and optionally replace partialOld → partialNew in all ref files. + * Uses partial path (e.g. "images/foo.png") for more precise matching. + * Returns list of affected files. + */ +async function updateRefs(partialOld, partialNew) { + const affected = [] + for (const refDir of REF_DIRS) { + for await (const file of walk(refDir)) { + if (!REF_EXTENSIONS.has(extname(file))) continue + const content = await readFile(file, 'utf8') + if (!content.includes(partialOld)) continue + if (!DRY_RUN) { + await writeFile(file, content.replaceAll(partialOld, partialNew), 'utf8') + } + affected.push(file.replace(ROOT + '/', '')) + } + } + return affected +} + +//main + +async function main() { + if (DRY_RUN) { + console.log('DRY RUN — nothing will be changed. Pass --write to convert.\n') + } + + console.log(`Scanning: ${TARGET_DIR}`) + console.log(`Threshold: files over ${MIN_SIZE_KB}KB`) + if (SKIP_FILENAMES.size > 0) { + console.log(`Skipping: ${[...SKIP_FILENAMES].join(', ')}`) + } + console.log() + + let converted = 0 + let skippedSize = 0 + let skippedName = 0 + let totalBefore = 0 + let totalAfter = 0 + + for await (const src of walk(TARGET_DIR)) { + if (!CONVERTIBLE.has(extname(src).toLowerCase())) continue + + const name = basename(src) + + if (SKIP_FILENAMES.has(name)) { + skippedName++ + continue + } + + const kb = parseFloat(await fileSizeKB(src)) + + if (kb < MIN_SIZE_KB) { + skippedSize++ + continue + } + + const dest = src.replace(/\.png$/i, '.webp') + const relSrc = src.replace(ROOT + '/', '') + const partialOld = `images/${name}` + const partialNew = `images/${basename(dest)}` + totalBefore += kb + + if (DRY_RUN) { + console.log(` CONVERT ${relSrc} (${kb}KB) → ${basename(dest)}`) + const refs = await updateRefs(partialOld, partialNew) + for (const r of refs) { + console.log(` ref in: ${r}`) + } + continue + } + + // Convert PNG → WebP + await sharp(src).webp({ quality: 85 }).toFile(dest) + + const kbAfter = parseFloat(await fileSizeKB(dest)) + totalAfter += kbAfter + const saved = (((kb - kbAfter) / kb) * 100).toFixed(0) + + // Update references only for converted files + const refs = await updateRefs(partialOld, partialNew) + + // Delete original + await unlink(src) + + console.log(`${relSrc}`) + console.log(` ${kb}KB → ${kbAfter}KB (-${saved}%)`) + for (const r of refs) { + console.log(` ref: ${r}`) + } + + converted++ + } + + console.log('\n' + '─'.repeat(60)) + + if (DRY_RUN) { + console.log(`Skipped ${skippedSize} files under ${MIN_SIZE_KB}KB.`) + console.log(`Skipped ${skippedName} files by name.`) + console.log('\nRun with --write to apply changes.') + } else { + const savedMB = ((totalBefore - totalAfter) / 1024).toFixed(1) + console.log(`Converted: ${converted} file(s)`) + console.log(`Skipped: ${skippedSize} under ${MIN_SIZE_KB}KB + ${skippedName} by name`) + console.log(`Saved: ~${savedMB}MB (${totalBefore.toFixed(0)}KB → ${totalAfter.toFixed(0)}KB)`) + } +} + +main().catch(err => { + console.error('Error:', err.message) + process.exit(1) +}) \ No newline at end of file diff --git a/website/adopter/_index.md b/website/adopter/_index.md index 79abe264d..2f88034e5 100644 --- a/website/adopter/_index.md +++ b/website/adopter/_index.md @@ -11,23 +11,21 @@ aside: false | | | | --- | ----------- | -|SAP | SAP BTP, Kubernetes environment (internal) uses Gardener to deploy and manage Kubernetes clusters at scale in a uniform way across infrastructures (AWS, Azure, GCP, Alicloud, as well as generic interfaces to OpenStack and vSphere). Workloads include Databases (SAP HANA Cloud), Big Data (SAP Data Intelligence), Kyma, many other cloud native applications, and diverse business workloads. | -|OVHcloud| Gardener can now be run by customers on the Public Cloud Platform of the leading European Cloud Provider OVHcloud. | -|ScaleUp Technologies | ScaleUp Technologies runs Gardener within their public Openstack Clouds (Hamburg, Berlin, Düsseldorf). Their clients run all kinds of workloads on top of Gardener maintained Kubernetes clusters ranging from databases to Software-as-a-Service applications. | -|Finanz Informatik Technologie Services GmbH| Finanz Informatik Technologie Services GmbH uses Gardener to offer k8s as a service for customers in the financial industry in Germany. It is built on top of a "metal as a service" infrastructure implemented from scratch for k8s workloads in mind. The result is k8s on top of bare metal in minutes. | -|Beezlabs| Beezlabs uses Gardener to deliver Intelligent Process Automation platform, on multiple cloud providers and reduce costs and lock-in risks. | +|SAP | SAP BTP, Kubernetes environment (internal) uses Gardener to deploy and manage Kubernetes clusters at scale in a uniform way across infrastructures (AWS, Azure, GCP, Alicloud, as well as generic interfaces to OpenStack and vSphere). Workloads include Databases (SAP HANA Cloud), Big Data (SAP Data Intelligence), Kyma, many other cloud native applications, and diverse business workloads. | +|OVHcloud| Gardener can now be run by customers on the Public Cloud Platform of the leading European Cloud Provider OVHcloud. | +|ScaleUp Technologies | ScaleUp Technologies runs Gardener within their public Openstack Clouds (Hamburg, Berlin, Düsseldorf). Their clients run all kinds of workloads on top of Gardener maintained Kubernetes clusters ranging from databases to Software-as-a-Service applications. | +|Finanz Informatik Technologie Services GmbH| Finanz Informatik Technologie Services GmbH uses Gardener to offer k8s as a service for customers in the financial industry in Germany. It is built on top of a "metal as a service" infrastructure implemented from scratch for k8s workloads in mind. The result is k8s on top of bare metal in minutes. | +|Beezlabs| Beezlabs uses Gardener to deliver Intelligent Process Automation platform, on multiple cloud providers and reduce costs and lock-in risks. | |b’nerd| b’nerd uses Gardener as the core technology for its own managed Kubernetes as a Service solution and operates multiple Gardener installations for several cloud hosting service providers. | -|STACKIT| STACKIT is a digital brand of Europe's biggest retailer, the Schwarz Group, which includes Lidl, Kaufland, but also production and recycling companies. It uses Gardener to offer public and private Kubernetes as a service in own data centers in Europe and targets to become the cloud provider for German and European small and mid-sized companies. | -|T-Systems| Supporting and managing multiple application landscapes on-premises and across different hyperscaler infrastructures can be painful. At T-Systems we use Gardener both for internal usage and to manage clusters for our customers. We love the openness of the project, the flexibility and the architecture that allows us to manage clusters around the world with only one team from one single pane of glass and to meet industry specific certification standards. The sovereignty by design is another great value, the technology implicitly brings along. | -|23 Technologies| The German-based company 23 Technologies uses Gardener to offer an enterprise-class Kubernetes engine for industrial use cases as well as cloud service providers and offers managed and professional services for it. 23T is also the team behind okeanos.dev, a public service that can be used by anyone to try out Gardener. | -|B1 Systems GmbH| B1 Systems GmbH is a international provider of Linux & Open Source consulting, training, managed service & support. We are founded in 2004 and based in Germany. Our team of 140 Linux experts offers tailor-made solutions based on cloud & container technologies, virtualization & high availability as well as monitoring, system & configuration management. B1 is using Gardener internally and also set up solutions/environments for customers. | -|Codesphere| Codesphere is a Cloud IDE with integrated and automated deployment of web apps. It uses Gardener internally to manage clusters that host customer deployments and internal systems all over the world. -|plusserver| plusserver combines its own cloud offerings with hyperscaler platforms to provide individually tailored multi-cloud solutions. The plusserver Kubernetes Engine (PSKE) based on Gardener reduces the complexity in managing multi-cloud environments and enables companies to orchestrate their containers and cloud-native applications across a variety of platforms such as plusserver's pluscloud open or hyperscalers such as AWS, either by mouseclick or via an API. With PSKE, companies remain vendor-independent and profit from guaranteed data sovereignty and data security due to GDPR-compliant cloud platforms in the certified plusserver data centers in Germany. -|Cyso Cloud| Cyso Cloud uses Gardener as the basis for its Managed Kubernetes, a platform that simplifies the management of your k8s and provides insight into usage and performance. The other Cyso Cloud service can be added with a mouse click, and the choice of another cloud provider is a negotiable option. Cyso stands for Digital Sovereignty, Data Portability and GDPR compatibility. -|Metalstack Cloud| metalstack.cloud uses Gardener and is based on the open-source software metal-stack.io, which is developed for regulated financial institutions. The focus here is on the highest possible security and compliance conformity. This makes metalstack.cloud perfect for running enterprise-grade container applications and provides your workloads with the highest possible performance. -|Cleura| Cleura uses Gardener to power its Container Orchestration Engine for Cleura Public Cloud and Cleura Compliant Cloud. Cleura Container Orchestration Engine simplifies the creation and management of Kubernetes clusters through their user-friendly Cleura Cloud Management Panel or API, allowing users to focus on deploying applications instead of maintaining the underlying infrastructure. -|PITS Globale Datenrettungsdienste| PITS Globale Datenrettungsdienste is a data recovery company located in Germany specializing in recovering lost or damaged files from hard drives, solid-state drives, flash drives, and other storage media. Gardener is used to handle highly-loaded internal infrastructure and provide reliable, fully-managed K8 cluster solutions. -|exigo| exigo is a Swiss cloud provider with over 25 years of experience, offering secure, high-performance IT solutions from its Swiss-based data centers.
To enhance its Kubernetes services, exigo developed exikube, a fully managed Kubernetes platform powered by Gardener. Running exclusively on exigo’s Swiss infrastructure, exikube ensures automated cluster management, scalability, and security, allowing businesses to deploy and manage applications with ease while staying compliant. -| noris network | **[noris network](https://www.noris.de/)** delivers premium IT from high-security German data centers: colocation, networks, managed services and sovereign cloud platforms.

[noris Sovereign Cloud (nSC)](https://www.noris.de/noris-sovereign-cloud-2/) combines OpenStack + Gardener into a 100% open source platform compliant with the German Administrative Cloud Strategy. | +|STACKIT| STACKIT is a digital brand of Europe’s biggest retailer, the Schwarz Group, which includes Lidl, Kaufland, but also production and recycling companies. It uses Gardener to offer public and private Kubernetes as a service in own data centers in Europe and targets to become the cloud provider for German and European small and mid-sized companies. | +|T-Systems| Supporting and managing multiple application landscapes on-premises and across different hyperscaler infrastructures can be painful. At T-Systems we use Gardener both for internal usage and to manage clusters for our customers. We love the openness of the project, the flexibility and the architecture that allows us to manage clusters around the world with only one team from one single pane of glass and to meet industry specific certification standards. The sovereignty by design is another great value, the technology implicitly brings along. | +|23 Technologies| The German-based company 23 Technologies uses Gardener to offer an enterprise-class Kubernetes engine for industrial use cases as well as cloud service providers and offers managed and professional services for it. 23T is also the team behind okeanos.dev, a public service that can be used by anyone to try out Gardener. | +|B1 Systems GmbH| B1 Systems GmbH is a international provider of Linux & Open Source consulting, training, managed service & support. We are founded in 2004 and based in Germany. Our team of 140 Linux experts offers tailor-made solutions based on cloud & container technologies, virtualization & high availability as well as monitoring, system & configuration management. B1 is using Gardener internally and also set up solutions/environments for customers. | +|Codesphere| Codesphere is a Cloud IDE with integrated and automated deployment of web apps. It uses Gardener internally to manage clusters that host customer deployments and internal systems all over the world. +|plusserver| plusserver combines its own cloud offerings with hyperscaler platforms to provide individually tailored multi-cloud solutions. The plusserver Kubernetes Engine (PSKE) based on Gardener reduces the complexity in managing multi-cloud environments and enables companies to orchestrate their containers and cloud-native applications across a variety of platforms such as plusserver's pluscloud open or hyperscalers such as AWS, either by mouseclick or via an API. With PSKE, companies remain vendor-independent and profit from guaranteed data sovereignty and data security due to GDPR-compliant cloud platforms in the certified plusserver data centers in Germany.|Cyso Cloud| Cyso Cloud uses Gardener as the basis for its Managed Kubernetes, a platform that simplifies the management of your k8s and provides insight into usage and performance. The other Cyso Cloud service can be added with a mouse click, and the choice of another cloud provider is a negotiable option. Cyso stands for Digital Sovereignty, Data Portability and GDPR compatibility. +|Metalstack Cloud| metalstack.cloud uses Gardener and is based on the open-source software metal-stack.io, which is developed for regulated financial institutions. The focus here is on the highest possible security and compliance conformity. This makes metalstack.cloud perfect for running enterprise-grade container applications and provides your workloads with the highest possible performance. +|Cleura| Cleura uses Gardener to power its Container Orchestration Engine for Cleura Public Cloud and Cleura Compliant Cloud. Cleura Container Orchestration Engine simplifies the creation and management of Kubernetes clusters through their user-friendly Cleura Cloud Management Panel or API, allowing users to focus on deploying applications instead of maintaining the underlying infrastructure.|PITS Globale Datenrettungsdienste| PITS Globale Datenrettungsdienste is a data recovery company located in Germany specializing in recovering lost or damaged files from hard drives, solid-state drives, flash drives, and other storage media. Gardener is used to handle highly-loaded internal infrastructure and provide reliable, fully-managed K8 cluster solutions. +|exigo| exigo is a Swiss cloud provider with over 25 years of experience, offering secure, high-performance IT solutions from its Swiss-based data centers.
To enhance its Kubernetes services, exigo developed exikube, a fully managed Kubernetes platform powered by Gardener. Running exclusively on exigo’s Swiss infrastructure, exikube ensures automated cluster management, scalability, and security, allowing businesses to deploy and manage applications with ease while staying compliant. +| noris network | **[noris network](https://www.noris.de/)** delivers premium IT from high-security German data centers: colocation, networks, managed services and sovereign cloud platforms.

[noris Sovereign Cloud (nSC)](https://www.noris.de/noris-sovereign-cloud-2/) combines OpenStack + Gardener into a 100% open source platform compliant with the German Administrative Cloud Strategy. | ### If you’re using Gardener and you aren’t on this list, [submit a pull request!](https://github.dev/gardener/documentation/blob/master/website/adopter/_index.md) diff --git a/website/adopter/images/23technologies.png b/website/adopter/images/23technologies.png deleted file mode 100644 index 6fcf407c4..000000000 Binary files a/website/adopter/images/23technologies.png and /dev/null differ diff --git a/website/adopter/images/23technologies.webp b/website/adopter/images/23technologies.webp new file mode 100644 index 000000000..7f375fc8f Binary files /dev/null and b/website/adopter/images/23technologies.webp differ diff --git a/website/adopter/images/b1-systems.png b/website/adopter/images/b1-systems.png deleted file mode 100644 index 694a6b615..000000000 Binary files a/website/adopter/images/b1-systems.png and /dev/null differ diff --git a/website/adopter/images/b1-systems.webp b/website/adopter/images/b1-systems.webp new file mode 100644 index 000000000..71e4b24da Binary files /dev/null and b/website/adopter/images/b1-systems.webp differ diff --git a/website/adopter/images/beezlab.png b/website/adopter/images/beezlab.png deleted file mode 100644 index 410f1775a..000000000 Binary files a/website/adopter/images/beezlab.png and /dev/null differ diff --git a/website/adopter/images/beezlab.webp b/website/adopter/images/beezlab.webp new file mode 100644 index 000000000..97d37b962 Binary files /dev/null and b/website/adopter/images/beezlab.webp differ diff --git a/website/adopter/images/cleura-log-black.png b/website/adopter/images/cleura-log-black.png deleted file mode 100644 index 16951f802..000000000 Binary files a/website/adopter/images/cleura-log-black.png and /dev/null differ diff --git a/website/adopter/images/cleura-log-black.webp b/website/adopter/images/cleura-log-black.webp new file mode 100644 index 000000000..d0568cea2 Binary files /dev/null and b/website/adopter/images/cleura-log-black.webp differ diff --git a/website/adopter/images/codesphere.png b/website/adopter/images/codesphere.png deleted file mode 100644 index a34ead5d9..000000000 Binary files a/website/adopter/images/codesphere.png and /dev/null differ diff --git a/website/adopter/images/codesphere.webp b/website/adopter/images/codesphere.webp new file mode 100644 index 000000000..1198f7f17 Binary files /dev/null and b/website/adopter/images/codesphere.webp differ diff --git a/website/adopter/images/cyso-cloud-logo-transparent.png b/website/adopter/images/cyso-cloud-logo-transparent.png deleted file mode 100644 index 3dd79f50a..000000000 Binary files a/website/adopter/images/cyso-cloud-logo-transparent.png and /dev/null differ diff --git a/website/adopter/images/cyso-cloud-logo-transparent.webp b/website/adopter/images/cyso-cloud-logo-transparent.webp new file mode 100644 index 000000000..79f6996dd Binary files /dev/null and b/website/adopter/images/cyso-cloud-logo-transparent.webp differ diff --git a/website/adopter/images/exigo.png b/website/adopter/images/exigo.png deleted file mode 100644 index 7ff879879..000000000 Binary files a/website/adopter/images/exigo.png and /dev/null differ diff --git a/website/adopter/images/exigo.webp b/website/adopter/images/exigo.webp new file mode 100644 index 000000000..82dc1b14f Binary files /dev/null and b/website/adopter/images/exigo.webp differ diff --git a/website/adopter/images/fits.png b/website/adopter/images/fits.png deleted file mode 100644 index 952d8f531..000000000 Binary files a/website/adopter/images/fits.png and /dev/null differ diff --git a/website/adopter/images/fits.webp b/website/adopter/images/fits.webp new file mode 100644 index 000000000..c8633707a Binary files /dev/null and b/website/adopter/images/fits.webp differ diff --git a/website/adopter/images/metalstack.cloud.png b/website/adopter/images/metalstack.cloud.png deleted file mode 100644 index fb4412017..000000000 Binary files a/website/adopter/images/metalstack.cloud.png and /dev/null differ diff --git a/website/adopter/images/metalstack.cloud.webp b/website/adopter/images/metalstack.cloud.webp new file mode 100644 index 000000000..0905ba64f Binary files /dev/null and b/website/adopter/images/metalstack.cloud.webp differ diff --git a/website/adopter/images/noris_network.png b/website/adopter/images/noris_network.png deleted file mode 100644 index 81bc1598e..000000000 Binary files a/website/adopter/images/noris_network.png and /dev/null differ diff --git a/website/adopter/images/noris_network.webp b/website/adopter/images/noris_network.webp new file mode 100644 index 000000000..48b3d4499 Binary files /dev/null and b/website/adopter/images/noris_network.webp differ diff --git a/website/adopter/images/ovhcloud_master_logo_fullcolor_cmyk.png b/website/adopter/images/ovhcloud_master_logo_fullcolor_cmyk.png deleted file mode 100644 index 199d8e673..000000000 Binary files a/website/adopter/images/ovhcloud_master_logo_fullcolor_cmyk.png and /dev/null differ diff --git a/website/adopter/images/ovhcloud_master_logo_fullcolor_cmyk.webp b/website/adopter/images/ovhcloud_master_logo_fullcolor_cmyk.webp new file mode 100644 index 000000000..8d83d9459 Binary files /dev/null and b/website/adopter/images/ovhcloud_master_logo_fullcolor_cmyk.webp differ diff --git a/website/adopter/images/pingcap.png b/website/adopter/images/pingcap.png deleted file mode 100644 index b8c95bc9b..000000000 Binary files a/website/adopter/images/pingcap.png and /dev/null differ diff --git a/website/adopter/images/pingcap.webp b/website/adopter/images/pingcap.webp new file mode 100644 index 000000000..5c71cb691 Binary files /dev/null and b/website/adopter/images/pingcap.webp differ diff --git a/website/adopter/images/plusserver.png b/website/adopter/images/plusserver.png deleted file mode 100644 index 90cb0b72a..000000000 Binary files a/website/adopter/images/plusserver.png and /dev/null differ diff --git a/website/adopter/images/plusserver.webp b/website/adopter/images/plusserver.webp new file mode 100644 index 000000000..2b96e4fc3 Binary files /dev/null and b/website/adopter/images/plusserver.webp differ diff --git a/website/adopter/images/sap.png b/website/adopter/images/sap.png deleted file mode 100644 index 571705781..000000000 Binary files a/website/adopter/images/sap.png and /dev/null differ diff --git a/website/adopter/images/sap.webp b/website/adopter/images/sap.webp new file mode 100644 index 000000000..6e56a792e Binary files /dev/null and b/website/adopter/images/sap.webp differ diff --git a/website/adopter/images/scaleup.png b/website/adopter/images/scaleup.png deleted file mode 100644 index fd3c437e4..000000000 Binary files a/website/adopter/images/scaleup.png and /dev/null differ diff --git a/website/adopter/images/scaleup.webp b/website/adopter/images/scaleup.webp new file mode 100644 index 000000000..b34302b3d Binary files /dev/null and b/website/adopter/images/scaleup.webp differ diff --git a/website/adopter/images/stackit.png b/website/adopter/images/stackit.png deleted file mode 100644 index 9e88150a0..000000000 Binary files a/website/adopter/images/stackit.png and /dev/null differ diff --git a/website/adopter/images/stackit.webp b/website/adopter/images/stackit.webp new file mode 100644 index 000000000..7a6f5b54f Binary files /dev/null and b/website/adopter/images/stackit.webp differ diff --git a/website/adopter/images/tsystems.png b/website/adopter/images/tsystems.png deleted file mode 100644 index 7250d8f14..000000000 Binary files a/website/adopter/images/tsystems.png and /dev/null differ diff --git a/website/adopter/images/tsystems.webp b/website/adopter/images/tsystems.webp new file mode 100644 index 000000000..36887a675 Binary files /dev/null and b/website/adopter/images/tsystems.webp differ diff --git a/website/archived/blog/2018/06.11-Frontend-HTTPS.md b/website/archived/blog/2018/06.11-Frontend-HTTPS.md index c01f34fb5..9ba33406a 100644 --- a/website/archived/blog/2018/06.11-Frontend-HTTPS.md +++ b/website/archived/blog/2018/06.11-Frontend-HTTPS.md @@ -8,7 +8,7 @@ publishdate: 2018-06-11 archivedate: 2018-07-11 --- -![](./images/blog-https.png) +![](./images/blog-https.webp) For encrypted communication between the client and the load balancer, you need to specify a TLS private key and certificate to be used by the ingress controller. diff --git a/website/blog/2018/06/06.11-anti-patterns.md b/website/blog/2018/06/06.11-anti-patterns.md index b66434e59..bc043f9fe 100644 --- a/website/blog/2018/06/06.11-anti-patterns.md +++ b/website/blog/2018/06/06.11-anti-patterns.md @@ -10,7 +10,7 @@ tags: - technical-deep-dive - node-management --- -![](./images/blog-antipattern.png) +![](./images/blog-antipattern.webp) ## Running as Root User diff --git a/website/blog/2018/06/06.11-big-things-come-in-small-packages.md b/website/blog/2018/06/06.11-big-things-come-in-small-packages.md index fe8fb4912..3214c99e8 100644 --- a/website/blog/2018/06/06.11-big-things-come-in-small-packages.md +++ b/website/blog/2018/06/06.11-big-things-come-in-small-packages.md @@ -15,7 +15,7 @@ Switching your architecture from a monolith to microservices has many advantages ## General Purpose Technology Stack -![service-common-stack](./images/blog-service-common-stack.png) +![service-common-stack](./images/blog-service-common-stack.webp) There is a tendency to be more generalized in development and to apply this pattern to all services. One feels that a homogeneous image of the technology stack is good if it is the same for all services. @@ -25,6 +25,6 @@ One forgets, however, that a large percentage of the integrated infrastructure i Due to the lightweight nature of your service, you can run more containers on a physical server and virtual machines. The result is higher resource utilization. -![service-service-stack](./images/blog-service-service-stack.png) +![service-service-stack](./images/blog-service-service-stack.webp) Additionally, microservices are developed and deployed as containers independently of each another. This means that a development team can develop, optimize, and deploy a microservice without impacting other subsystems. diff --git a/website/blog/2018/06/06.11-kubernetes-is-available-in-docker-for-mac-17-12-ce.md b/website/blog/2018/06/06.11-kubernetes-is-available-in-docker-for-mac-17-12-ce.md index fe2191270..7dc561f64 100644 --- a/website/blog/2018/06/06.11-kubernetes-is-available-in-docker-for-mac-17-12-ce.md +++ b/website/blog/2018/06/06.11-kubernetes-is-available-in-docker-for-mac-17-12-ce.md @@ -12,7 +12,7 @@ tags:
- Enabling Kubernetes in Docker image + Enabling Kubernetes in Docker image
diff --git a/website/blog/2018/06/06.11-namespace-isolation.md b/website/blog/2018/06/06.11-namespace-isolation.md index c58b8d3a3..6af10d0c4 100644 --- a/website/blog/2018/06/06.11-namespace-isolation.md +++ b/website/blog/2018/06/06.11-namespace-isolation.md @@ -18,6 +18,6 @@ You can configure a **NetworkPolicy** to deny all traffic from other namespaces - Regulatory compliance - Ensure containers assigned to different environments (e.g. dev/staging/prod) cannot interfere with each another -![namespaceisolation](./images/blog-namespaceisolation.png) +![namespaceisolation](./images/blog-namespaceisolation.webp) Learn more on [Namespace Isolation](https://github.com/gardener/documentation/blob/master/website/documentation/guides/applications/network-isolation.md). diff --git a/website/blog/2018/06/06.11-readwritemany-dynamically-provisioned-persistent-volumes-using-amazon-efs.md b/website/blog/2018/06/06.11-readwritemany-dynamically-provisioned-persistent-volumes-using-amazon-efs.md index 33b8e02f2..2ecacca4b 100644 --- a/website/blog/2018/06/06.11-readwritemany-dynamically-provisioned-persistent-volumes-using-amazon-efs.md +++ b/website/blog/2018/06/06.11-readwritemany-dynamically-provisioned-persistent-volumes-using-amazon-efs.md @@ -14,7 +14,7 @@ tags: The efs-provisioner allows you to mount EFS storage as PersistentVolumes in Kubernetes. It consists of a container that has access to an AWS EFS resource. The container reads a configmap containing the EFS filesystem ID, the AWS region and the name identifying the efs-provisioner. This name will be used later when you create a storage class. -![](./images/blog-aws-efs.png) +![](./images/blog-aws-efs.webp) ## Why EFS diff --git a/website/blog/2018/06/06.11-shared-storage-with-s3-backend.md b/website/blog/2018/06/06.11-shared-storage-with-s3-backend.md index 3a2299ffd..64794e24d 100644 --- a/website/blog/2018/06/06.11-shared-storage-with-s3-backend.md +++ b/website/blog/2018/06/06.11-shared-storage-with-s3-backend.md @@ -15,7 +15,7 @@ The storage is definitely the most complex and important part of an application Mounting an S3 bucket into a pod using [FUSE](https://github.com/libfuse/libfuse) allows you to access data stored in S3 via the filesystem. The mount is a pointer to an S3 location, so the data is never synced locally. Once mounted, any pod can read or even write from that directory without the need for explicit keys. -![s3-shared-storage](./images/blog-s3-shared-storage.png) +![s3-shared-storage](./images/blog-s3-shared-storage.webp) Additionally, it can be used to import and parse large amounts of data into a database. diff --git a/website/blog/2018/06/06.11-watching-logs-of-several-pods.md b/website/blog/2018/06/06.11-watching-logs-of-several-pods.md index 6ec1eddb8..8adce5fb5 100644 --- a/website/blog/2018/06/06.11-watching-logs-of-several-pods.md +++ b/website/blog/2018/06/06.11-watching-logs-of-several-pods.md @@ -13,6 +13,6 @@ One thing that always bothered me was that I couldn't get the logs of several po This is something you really need a lot, at least if you run several instances of a pod behind a `deployment`and you don't have a log viewer service like Kibana set up. -![kubetail](./images/blog-kubetail.png) +![kubetail](./images/blog-kubetail.webp) In that case, kubetail comes to the rescue. It is a small bash script that allows you to aggregate the log files of several pods at the same time in a simple way. The script is called `kubetail` and is available at [GitHub](https://github.com/johanhaleby/kubetail). diff --git a/website/blog/2018/06/images/blog-antipattern.png b/website/blog/2018/06/images/blog-antipattern.png deleted file mode 100644 index 8b45098ea..000000000 Binary files a/website/blog/2018/06/images/blog-antipattern.png and /dev/null differ diff --git a/website/blog/2018/06/images/blog-antipattern.webp b/website/blog/2018/06/images/blog-antipattern.webp new file mode 100644 index 000000000..02d6e2751 Binary files /dev/null and b/website/blog/2018/06/images/blog-antipattern.webp differ diff --git a/website/blog/2018/06/images/blog-aws-efs.png b/website/blog/2018/06/images/blog-aws-efs.png deleted file mode 100644 index 9fd2f2069..000000000 Binary files a/website/blog/2018/06/images/blog-aws-efs.png and /dev/null differ diff --git a/website/blog/2018/06/images/blog-aws-efs.webp b/website/blog/2018/06/images/blog-aws-efs.webp new file mode 100644 index 000000000..3b4528572 Binary files /dev/null and b/website/blog/2018/06/images/blog-aws-efs.webp differ diff --git a/website/blog/2018/06/images/blog-https.png b/website/blog/2018/06/images/blog-https.png deleted file mode 100644 index 8c8a286ee..000000000 Binary files a/website/blog/2018/06/images/blog-https.png and /dev/null differ diff --git a/website/blog/2018/06/images/blog-https.webp b/website/blog/2018/06/images/blog-https.webp new file mode 100644 index 000000000..989c1065b Binary files /dev/null and b/website/blog/2018/06/images/blog-https.webp differ diff --git a/website/blog/2018/06/images/blog-kubernetes-enable.png b/website/blog/2018/06/images/blog-kubernetes-enable.png deleted file mode 100644 index 72a102871..000000000 Binary files a/website/blog/2018/06/images/blog-kubernetes-enable.png and /dev/null differ diff --git a/website/blog/2018/06/images/blog-kubernetes-enable.webp b/website/blog/2018/06/images/blog-kubernetes-enable.webp new file mode 100644 index 000000000..4e93b46b2 Binary files /dev/null and b/website/blog/2018/06/images/blog-kubernetes-enable.webp differ diff --git a/website/blog/2018/06/images/blog-kubetail.png b/website/blog/2018/06/images/blog-kubetail.png deleted file mode 100644 index 4c49d99dd..000000000 Binary files a/website/blog/2018/06/images/blog-kubetail.png and /dev/null differ diff --git a/website/blog/2018/06/images/blog-kubetail.webp b/website/blog/2018/06/images/blog-kubetail.webp new file mode 100644 index 000000000..3c84874da Binary files /dev/null and b/website/blog/2018/06/images/blog-kubetail.webp differ diff --git a/website/blog/2018/06/images/blog-namespaceisolation.png b/website/blog/2018/06/images/blog-namespaceisolation.png deleted file mode 100644 index f236c7872..000000000 Binary files a/website/blog/2018/06/images/blog-namespaceisolation.png and /dev/null differ diff --git a/website/blog/2018/06/images/blog-namespaceisolation.webp b/website/blog/2018/06/images/blog-namespaceisolation.webp new file mode 100644 index 000000000..3ae76cbdc Binary files /dev/null and b/website/blog/2018/06/images/blog-namespaceisolation.webp differ diff --git a/website/blog/2018/06/images/blog-s3-shared-storage.png b/website/blog/2018/06/images/blog-s3-shared-storage.png deleted file mode 100644 index 3f80b6b5b..000000000 Binary files a/website/blog/2018/06/images/blog-s3-shared-storage.png and /dev/null differ diff --git a/website/blog/2018/06/images/blog-s3-shared-storage.webp b/website/blog/2018/06/images/blog-s3-shared-storage.webp new file mode 100644 index 000000000..774744179 Binary files /dev/null and b/website/blog/2018/06/images/blog-s3-shared-storage.webp differ diff --git a/website/blog/2018/06/images/blog-service-common-stack.png b/website/blog/2018/06/images/blog-service-common-stack.png deleted file mode 100644 index 187402452..000000000 Binary files a/website/blog/2018/06/images/blog-service-common-stack.png and /dev/null differ diff --git a/website/blog/2018/06/images/blog-service-common-stack.webp b/website/blog/2018/06/images/blog-service-common-stack.webp new file mode 100644 index 000000000..32d11ab9f Binary files /dev/null and b/website/blog/2018/06/images/blog-service-common-stack.webp differ diff --git a/website/blog/2018/06/images/blog-service-service-stack.png b/website/blog/2018/06/images/blog-service-service-stack.png deleted file mode 100644 index e4b0ca34f..000000000 Binary files a/website/blog/2018/06/images/blog-service-service-stack.png and /dev/null differ diff --git a/website/blog/2018/06/images/blog-service-service-stack.webp b/website/blog/2018/06/images/blog-service-service-stack.webp new file mode 100644 index 000000000..6d6dd11fe Binary files /dev/null and b/website/blog/2018/06/images/blog-service-service-stack.webp differ diff --git a/website/blog/2019/06/images/teaser-1.png b/website/blog/2019/06/images/teaser-1.png deleted file mode 100644 index 0d0b12a8a..000000000 Binary files a/website/blog/2019/06/images/teaser-1.png and /dev/null differ diff --git a/website/blog/2019/06/images/teaser-1.webp b/website/blog/2019/06/images/teaser-1.webp new file mode 100644 index 000000000..be1c1697c Binary files /dev/null and b/website/blog/2019/06/images/teaser-1.webp differ diff --git a/website/blog/2019/06/images/teaser-2.png b/website/blog/2019/06/images/teaser-2.png deleted file mode 100644 index ad4579b9d..000000000 Binary files a/website/blog/2019/06/images/teaser-2.png and /dev/null differ diff --git a/website/blog/2019/06/images/teaser-2.webp b/website/blog/2019/06/images/teaser-2.webp new file mode 100644 index 000000000..a1e0076a8 Binary files /dev/null and b/website/blog/2019/06/images/teaser-2.webp differ diff --git a/website/blog/2020/05/05.11-new-website-same-green-flower.md b/website/blog/2020/05/05.11-new-website-same-green-flower.md index c2dbaf9e5..ef05a942b 100644 --- a/website/blog/2020/05/05.11-new-website-same-green-flower.md +++ b/website/blog/2020/05/05.11-new-website-same-green-flower.md @@ -31,5 +31,5 @@ I hope you will like it. Let us know what you think about it. Feel free to leave **Go ahead and help us spread the word: https://gardener.cloud** - + diff --git a/website/blog/2020/05/images/website-screen-L.png b/website/blog/2020/05/images/website-screen-L.png deleted file mode 100644 index 65e7c07e8..000000000 Binary files a/website/blog/2020/05/images/website-screen-L.png and /dev/null differ diff --git a/website/blog/2020/05/images/website-screen-l.webp b/website/blog/2020/05/images/website-screen-l.webp new file mode 100644 index 000000000..dcdf78468 Binary files /dev/null and b/website/blog/2020/05/images/website-screen-l.webp differ diff --git a/website/blog/2020/05/images/website-screen.png b/website/blog/2020/05/images/website-screen.png deleted file mode 100644 index 19f180154..000000000 Binary files a/website/blog/2020/05/images/website-screen.png and /dev/null differ diff --git a/website/blog/2020/05/images/website-screen.webp b/website/blog/2020/05/images/website-screen.webp new file mode 100644 index 000000000..9380285d5 Binary files /dev/null and b/website/blog/2020/05/images/website-screen.webp differ diff --git a/website/blog/2020/10/10.19-gardener-integrates-with-kubevirt.md b/website/blog/2020/10/10.19-gardener-integrates-with-kubevirt.md index e098e1093..5dbfb1d3d 100644 --- a/website/blog/2020/10/10.19-gardener-integrates-with-kubevirt.md +++ b/website/blog/2020/10/10.19-gardener-integrates-with-kubevirt.md @@ -29,21 +29,21 @@ Gardener enables Kubernetes consumers to centralize and operate efficiently homo Gardener is based on the idea of three types of clusters – *Garden cluster*, *Seed cluster* and *Shoot cluster* (see **Figure 1**). The Garden cluster is used to control the entire Kubernetes environment centrally in a highly scalable design. The highly available seed clusters are used to host the end users (shoot) clusters’ control planes. Finally, the shoot clusters consist only of worker nodes to host the cloud native applications. - +
Figure 1: Gardener Architecture
An integration of the Gardener open source project with a new cloud provider follows a standard [Gardener extensibility](https://github.com/gardener/gardener/blob/master/docs/extensions/overview.md) approach. The integration requires two new components: a [provider extension](https://github.com/gardener/gardener/blob/master/docs/extensions/overview.md) and a [Machine Controller Manager (MCM) extension](https://github.com/gardener/machine-controller-manager/blob/master/docs/development/cp_support_new.md). Both components together enable Gardener to instruct the new cloud provider. They run in the Gardener seed clusters that host the control planes of the shoots based on that cloud provider. The role of the provider extension is to manage the provider-specific aspects of the shoot clusters’ lifecycle, including infrastructure, control plane, worker nodes, and others. It works in cooperation with the MCM extension, which in particular is responsible to handle machines that are provisioned as worker nodes for the shoot clusters. To get this job done, the MCM extension leverages the VM management/API capabilities available with the respective cloud provider. Setting up a Kubernetes cluster always involves a flow of interdependent steps (see **Figure 2**), beginning with the generation of certificates and preparation of the infrastructure, continuing with the provisioning of the control plane and the worker nodes, and ending with the deployment of system components. Gardener can be configured to utilize the KubeVirt extensions in its generic workflow at the right extension points, and deliver the desired outcome of a KubeVirt backed cluster. - +
Figure 2: Generic cluster reconciliation flow with extension points
### Gardener Integration with KubeVirt in Detail Integration with KubeVirt follows the Gardener extensibility concept and introduces the two new components mentioned above: the [KubeVirt Provider Extension](https://github.com/gardener/gardener-extension-provider-kubevirt) and the [KubeVirt Machine Controller Manager (MCM) Extension](https://github.com/gardener/machine-controller-manager-provider-kubevirt). - +
Figure 3: Gardener integration with KubeVirt
The KubeVirt Provider Extension consists of three separate controllers that handle respectively the infrastructure, the control plane, and the worker nodes of the shoot cluster. @@ -169,7 +169,7 @@ When a new shoot cluster is created or when a new worker node is needed for an e The KubeVirt MCM Extension has two main components. The **MachinePlugin** is responsible for handling the machine objects, and the **PluginSPI** is in charge of making calls to the cloud provider interface, to manage its resources. - +
Figure 4: KubeVirt MCM extension workflow and architecture
As shown in **Figure 4**, the MachinePlugin receives a machine request from the MCM and starts its processing by decoding the request, doing partial validation, extracting the relevant information, and sending it to the PluginSPI. diff --git a/website/blog/2020/10/images/00-001.png b/website/blog/2020/10/images/00-001.png deleted file mode 100644 index c20b0e4b7..000000000 Binary files a/website/blog/2020/10/images/00-001.png and /dev/null differ diff --git a/website/blog/2020/10/images/00-001.webp b/website/blog/2020/10/images/00-001.webp new file mode 100644 index 000000000..18214e6d3 Binary files /dev/null and b/website/blog/2020/10/images/00-001.webp differ diff --git a/website/blog/2020/10/images/00-002.png b/website/blog/2020/10/images/00-002.png deleted file mode 100644 index 51184a0a6..000000000 Binary files a/website/blog/2020/10/images/00-002.png and /dev/null differ diff --git a/website/blog/2020/10/images/00-002.webp b/website/blog/2020/10/images/00-002.webp new file mode 100644 index 000000000..c39f986ef Binary files /dev/null and b/website/blog/2020/10/images/00-002.webp differ diff --git a/website/blog/2020/10/images/00-003.png b/website/blog/2020/10/images/00-003.png deleted file mode 100644 index fda1d1652..000000000 Binary files a/website/blog/2020/10/images/00-003.png and /dev/null differ diff --git a/website/blog/2020/10/images/00-003.webp b/website/blog/2020/10/images/00-003.webp new file mode 100644 index 000000000..fdb56303d Binary files /dev/null and b/website/blog/2020/10/images/00-003.webp differ diff --git a/website/blog/2020/10/images/00-004.png b/website/blog/2020/10/images/00-004.png deleted file mode 100644 index 4b406fa13..000000000 Binary files a/website/blog/2020/10/images/00-004.png and /dev/null differ diff --git a/website/blog/2020/10/images/00-004.webp b/website/blog/2020/10/images/00-004.webp new file mode 100644 index 000000000..0c1f1a8c3 Binary files /dev/null and b/website/blog/2020/10/images/00-004.webp differ diff --git a/website/blog/2020/12/12.03-stackit-kubernetes-engine-with-gardener.md b/website/blog/2020/12/12.03-stackit-kubernetes-engine-with-gardener.md index ff0fd7cba..a5bb04249 100644 --- a/website/blog/2020/12/12.03-stackit-kubernetes-engine-with-gardener.md +++ b/website/blog/2020/12/12.03-stackit-kubernetes-engine-with-gardener.md @@ -22,7 +22,7 @@ STACKIT started with colocation solutions for internal and external customers in With containers and Kubernetes becoming the lingua franca of the cloud, we are happy to announce the *STACKIT Kubernetes Engine (SKE)*, which has been released as Beta in November this year. We decided to use Gardener as the cluster management engine underneath SKE - for good reasons as you will see – and we would like to share our experiences with Gardener when working on the SKE Beta release, and serve as a testimonial for this technology. - +
Figure 1: STACKIT Component Diagram
## Why We Chose Gardener as a Cluster Management Tool @@ -42,7 +42,7 @@ After becoming familiar with Gardener, we started to look into its code base to - SKE uses a private image registry for the Gardener installation in order to resolve dependencies to public image registries and to have more control over the used Gardener versions. To install and run Gardener with the private image registry, some new configurations need to be introduced into Gardener. - Gardener is a first-class API based service what allowed us to smoothly integrate it into the STACKIT User Interface. We were also able to jump-start and utilize the Gardener Dashboard for our Beta release by merely adjusting the look-&-feel, i.e. colors, labels and icons. - +
Figure 2: Gardener Dashboard adapted to STACKIT UI style
## Experience with Gardener Operations diff --git a/website/blog/2020/12/images/00.png b/website/blog/2020/12/images/00.png deleted file mode 100644 index b5c8faed6..000000000 Binary files a/website/blog/2020/12/images/00.png and /dev/null differ diff --git a/website/blog/2020/12/images/00.webp b/website/blog/2020/12/images/00.webp new file mode 100644 index 000000000..950555c91 Binary files /dev/null and b/website/blog/2020/12/images/00.webp differ diff --git a/website/blog/2020/12/images/01.png b/website/blog/2020/12/images/01.png deleted file mode 100644 index 9ab7b5f6f..000000000 Binary files a/website/blog/2020/12/images/01.png and /dev/null differ diff --git a/website/blog/2020/12/images/01.webp b/website/blog/2020/12/images/01.webp new file mode 100644 index 000000000..35bde80d7 Binary files /dev/null and b/website/blog/2020/12/images/01.webp differ diff --git a/website/blog/2021/01/01.25-machine-controller-manager.md b/website/blog/2021/01/01.25-machine-controller-manager.md index b4a5db84e..05f8cf683 100644 --- a/website/blog/2021/01/01.25-machine-controller-manager.md +++ b/website/blog/2021/01/01.25-machine-controller-manager.md @@ -38,7 +38,7 @@ The Custom Resources `MachineDeployment`, `MachineSet` and `Machines` are very m ## Workings of MCM - +
Figure 1: In-Tree Machine Controller Manager
In MCM, there are two K8s clusters in the scope — a *Control Cluster* and a *Target Cluster*. The Control Cluster is the K8s cluster where the MCM is installed to manage the machine lifecycle of the Target Cluster. In other words, the Control Cluster is the one where the machine-* objects are stored. The Target Cluster is where all the node objects are registered. These clusters can be two distinct clusters or the same cluster, whichever fits. @@ -68,7 +68,7 @@ MCM supports declarative management of machines in a K8s Cluster on various clou Going ahead, having the implementation of the Machine Controller Manager supporting too many cloud providers would be too much upkeep from both a development and a maintenance point of view. Which is why the `Machine Controller` component of MCM has been moved to Out-of-Tree design, where the `Machine Controller` for each respective cloud provider runs as an independent executable, even though typically packaged under the same deployment. - +
Figure 2: Out-Of-Tree (OOT) Machine Controller Manager
This OOT Machine Controller will implement a common interface to manage the VMs on the respective cloud provider. Now, while the `Machine Controller` deals with the `Machine` objects, the Machine Controller Manager (MCM) deals with higher level objects such as the `MachineSet` and `MachineDeployment` objects. diff --git a/website/blog/2021/01/images/mcm-00.png b/website/blog/2021/01/images/mcm-00.png deleted file mode 100644 index f0a44005b..000000000 Binary files a/website/blog/2021/01/images/mcm-00.png and /dev/null differ diff --git a/website/blog/2021/01/images/mcm-00.webp b/website/blog/2021/01/images/mcm-00.webp new file mode 100644 index 000000000..71b21d3f9 Binary files /dev/null and b/website/blog/2021/01/images/mcm-00.webp differ diff --git a/website/blog/2021/01/images/mcm-01.png b/website/blog/2021/01/images/mcm-01.png deleted file mode 100644 index 468e20f95..000000000 Binary files a/website/blog/2021/01/images/mcm-01.png and /dev/null differ diff --git a/website/blog/2021/01/images/mcm-01.webp b/website/blog/2021/01/images/mcm-01.webp new file mode 100644 index 000000000..817e916fc Binary files /dev/null and b/website/blog/2021/01/images/mcm-01.webp differ diff --git a/website/blog/2021/02/02.01-happy-anniversary-gardener.md b/website/blog/2021/02/02.01-happy-anniversary-gardener.md index 855a1e622..e7b6a6e9b 100644 --- a/website/blog/2021/02/02.01-happy-anniversary-gardener.md +++ b/website/blog/2021/02/02.01-happy-anniversary-gardener.md @@ -50,7 +50,7 @@ Gardener offers managed and homogenous Kubernetes clusters on IaaS providers lik Some features mentioned above might sound familiar to you, simply because they’re squarely derived from Kubernetes. Concretely, if you explore a Gardener managed end-user cluster, you’ll never see the so-called “control plane components” (_Kube-Apiserver, Kube-Controller-Manager, Kube-Scheduler, etc._) The reason is that they run as Pods inside another, hosting/seeding Kubernetes cluster. Speaking in Gardener terms, the latter is called a _Seed_ cluster, and the end-user cluster is called a _Shoot_ cluster; and thus the botanical naming scheme for Gardener was born. Further assets like infrastructure components or worker machines are modelled as managed Kubernetes objects too. This allows Gardener to leverage all the great and production proven features of Kubernetes for managing Kubernetes clusters. Our [blog post](https://kubernetes.io/blog/2019/12/02/gardener-project-update/) on Kubernetes.io reveals more details about the architectural refinements. - +
Figure 1: Gardener architecture overview
End-users directly benefit from Gardener’s recursive architecture. Many of the requirements that we identified for the Gardener service turned out to be highly convenient for shoot owners. For instance, Seed clusters are usually equipped with _DNS_ and _x509_ services. At the same time, these service offerings can be extended to requests coming from the Shoot clusters i.e., end-users get domain names and certificates for their applications out of the box. @@ -66,7 +66,7 @@ Short spoiler alert: it initially involved a leap of faith. If we just look at o Coincidently, that was also when the _SAP Open Source Program Office (OSPO)_ was launched. It supported us making a case to develop Gardener completely as open source. Today, we can witness that this strategy has unfolded. It opened the gates not only for adoption, but for co-innovation, investment security, and user feedback directly in code. Below you can see an example of how the Gardener project benefits from this external community power as contributions are submitted right away. - +
Figure 2: Example immediate community contribution
## Differentiating Gardener from Other Kubernetes Management Solutions @@ -94,7 +94,7 @@ documentation. Even though once you are into Kubernetes and then Gardener, all c But here is the good part: Now that we are starting the installation subject, later we will have a much broader picture of what we need to install and maintain Gardener, and how we will build it. - + In a [community call](https://www.youtube.com/watch?v=pGlHpJle7Zk) last summer, we gave an overview of what we are building: diff --git a/website/blog/2021/02/images/gardener-01.png b/website/blog/2021/02/images/gardener-01.png deleted file mode 100644 index 979ed5fa9..000000000 Binary files a/website/blog/2021/02/images/gardener-01.png and /dev/null differ diff --git a/website/blog/2021/02/images/gardener-01.webp b/website/blog/2021/02/images/gardener-01.webp new file mode 100644 index 000000000..fa53e3d96 Binary files /dev/null and b/website/blog/2021/02/images/gardener-01.webp differ diff --git a/website/blog/2021/02/images/gardener-02.png b/website/blog/2021/02/images/gardener-02.png deleted file mode 100644 index a4f92f1bc..000000000 Binary files a/website/blog/2021/02/images/gardener-02.png and /dev/null differ diff --git a/website/blog/2021/02/images/gardener-02.webp b/website/blog/2021/02/images/gardener-02.webp new file mode 100644 index 000000000..174006780 Binary files /dev/null and b/website/blog/2021/02/images/gardener-02.webp differ diff --git a/website/blog/2021/02/images/gardener-03.png b/website/blog/2021/02/images/gardener-03.png deleted file mode 100644 index ac06b08ef..000000000 Binary files a/website/blog/2021/02/images/gardener-03.png and /dev/null differ diff --git a/website/blog/2021/02/images/gardener-03.webp b/website/blog/2021/02/images/gardener-03.webp new file mode 100644 index 000000000..4b36fc7bb Binary files /dev/null and b/website/blog/2021/02/images/gardener-03.webp differ diff --git a/website/blog/2024/04/04-05-kubecon-cloudnativecon-europe-2024-highlights.md b/website/blog/2024/04/04-05-kubecon-cloudnativecon-europe-2024-highlights.md index ed6338e95..179d2de26 100644 --- a/website/blog/2024/04/04-05-kubecon-cloudnativecon-europe-2024-highlights.md +++ b/website/blog/2024/04/04-05-kubecon-cloudnativecon-europe-2024-highlights.md @@ -12,7 +12,7 @@ tags: - community-event - security --- -![KubeCon EU 2024 Keynote Room](images/kubecon-eu2024.png "KubeCon EU 2024 Keynote Room") +![KubeCon EU 2024 Keynote Room](images/kubecon-eu2024.webp "KubeCon EU 2024 Keynote Room") KubeCon + CloudNativeCon Europe 2024, recently held in Paris, was a testament to the robustness of the open-source community and its pivotal role in driving advancements in AI and cloud-native technologies. With a record attendance of over +12,000 participants, the conference underscored the ubiquity of cloud-native architectures and the business opportunities they provide. diff --git a/website/blog/2024/04/04-22-gardener's-registry-cache-extension-another-cost-saving-win-and-more.md b/website/blog/2024/04/04-22-gardener's-registry-cache-extension-another-cost-saving-win-and-more.md index f45070dec..c2a6edba8 100644 --- a/website/blog/2024/04/04-22-gardener's-registry-cache-extension-another-cost-saving-win-and-more.md +++ b/website/blog/2024/04/04-22-gardener's-registry-cache-extension-another-cost-saving-win-and-more.md @@ -34,7 +34,7 @@ A pull-through cache registry is a registry that caches container images in its Imagine that you have a DaemonSet in your Kubernetes cluster. In a cluster without a pull-through cache, every Node must pull the same container image from the upstream registry. In a cluster with a pull-through cache, the image is pulled once from the upstream registry and served later for all Nodes. -![A Shoot cluster setup with a registry cache for Docker Hub (docker.io)](images/shoot-cluster-with-registry-cache.png) +![A Shoot cluster setup with a registry cache for Docker Hub (docker.io)](images/shoot-cluster-with-registry-cache.webp)

A Shoot cluster setup with a registry cache for Docker Hub (docker.io).

diff --git a/website/blog/2024/04/images/kubecon-eu2024.png b/website/blog/2024/04/images/kubecon-eu2024.png deleted file mode 100644 index 72e4ae534..000000000 Binary files a/website/blog/2024/04/images/kubecon-eu2024.png and /dev/null differ diff --git a/website/blog/2024/04/images/kubecon-eu2024.webp b/website/blog/2024/04/images/kubecon-eu2024.webp new file mode 100644 index 000000000..4af4b3da6 Binary files /dev/null and b/website/blog/2024/04/images/kubecon-eu2024.webp differ diff --git a/website/blog/2024/04/images/shoot-cluster-with-registry-cache.png b/website/blog/2024/04/images/shoot-cluster-with-registry-cache.png deleted file mode 100644 index 5d22c66ee..000000000 Binary files a/website/blog/2024/04/images/shoot-cluster-with-registry-cache.png and /dev/null differ diff --git a/website/blog/2024/04/images/shoot-cluster-with-registry-cache.webp b/website/blog/2024/04/images/shoot-cluster-with-registry-cache.webp new file mode 100644 index 000000000..f82b5edc6 Binary files /dev/null and b/website/blog/2024/04/images/shoot-cluster-with-registry-cache.webp differ diff --git a/website/blog/2025/06/06-17-taking-gardener-to-the-next-level-highlights-from-the-7th-gardener-community-hackathon-in-schelklingen.md b/website/blog/2025/06/06-17-taking-gardener-to-the-next-level-highlights-from-the-7th-gardener-community-hackathon-in-schelklingen.md index 1894cdfa0..d269eaf48 100644 --- a/website/blog/2025/06/06-17-taking-gardener-to-the-next-level-highlights-from-the-7th-gardener-community-hackathon-in-schelklingen.md +++ b/website/blog/2025/06/06-17-taking-gardener-to-the-next-level-highlights-from-the-7th-gardener-community-hackathon-in-schelklingen.md @@ -19,7 +19,7 @@ The latest "Hack The Garden" event, held in June 2025 at [Schlosshof in Schelkli The hackathon focused on a wide array of topics aimed at enhancing Gardener's capabilities, modernizing its stack, and improving user experience. You can find a [full summary of all topics on GitHub](https://github.com/gardener-community/hackathon/blob/main/2025-06_Schelklingen/README.md) and watch the [wrap-up presentations on YouTube](https://youtu.be/TCLXovw43HA). -![Group picture of the 7th Hack the Garden event in Schelklingen](./images/group-picture.png) +![Group picture of the 7th Hack the Garden event in Schelklingen](./images/group-picture.webp) Here's a look at some of the key achievements and ongoing efforts: diff --git a/website/blog/2025/06/06-30-getting-started-with-opentelemetry-on-gardener-shoot-cluster.md b/website/blog/2025/06/06-30-getting-started-with-opentelemetry-on-gardener-shoot-cluster.md index 8c3636c41..dfbfdb79d 100644 --- a/website/blog/2025/06/06-30-getting-started-with-opentelemetry-on-gardener-shoot-cluster.md +++ b/website/blog/2025/06/06-30-getting-started-with-opentelemetry-on-gardener-shoot-cluster.md @@ -29,13 +29,13 @@ To follow along with this guide, you will need: ## Component Overview of the Sample OpenTelemetry Stack -![OpenTelemetry Stack](./images/otel-gardener-shoot.png) +![OpenTelemetry Stack](./images/otel-gardener-shoot.webp) ## Setting Up a Gardener Shoot for mTLS Certificate Management Here we use a self managed mTLS architecture with an illustration purpose. In a production environment, you would typically use a managed certificate authority (CA) or a service mesh to handle mTLS certificates and encryption. However, there might be cases where you want to have flexibility in authentication and authorization mechanisms, for example, by leveraging Kubernetes RBAC to determine whether a service is authorized to connect to a backend or not. In our illustration, we will use a `kube-rbac-proxy` as a sidecar to the backends, to enforce the mTLS authentication and authorization. The `kube-rbac-proxy` is a reverse proxy that uses Kubernetes RBAC to control access to services, allowing us to define fine-grained access control policies. -![otel-mtls](./images/otel-mtls-kube-rbac-proxy.png) +![otel-mtls](./images/otel-mtls-kube-rbac-proxy.webp) The `kube-rbac-proxy` extracts the identity of the client (OpenTelemetry collector) from the CommonName (CN) field of the TLS certificate and uses it to perform authorization checks against the Kubernetes API server. This enables fine-grained access control policies based on client identity, ensuring that only authorized clients can connect to the backends. @@ -167,7 +167,7 @@ In this example, we use 2 receivers: - [k8s_cluster receiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/k8sclusterreceiver) to collect Kubernetes cluster metrics. Here is an example of Kubernetes events persited in the `victoria-logs` backend. It filters logs which represents events from `kube-system` namesapce related to a rollout restart of the target statefulset. Then it formats the UI to show the event reason and object name. -![otel-victoria-logs](./images/otel-victoria-logs.png) +![otel-victoria-logs](./images/otel-victoria-logs.webp) The collector features few important configurations related to reliability and performance. The collected metrics points are are sent in batches to the Prometheus backend using the corresponding OTLP exporter and the memory consumption of the collector is also limited. In general, it is always a good practice to set a memory limiter and batch processing in the collector pipeline. @@ -285,7 +285,7 @@ transform/metrics: ``` Here is a visualization of `container_network_transmit_bytes_total` metric collected from the `cadvisor` endpoint of the `kubelet` service, showing the network traffic in bytes transmitted by the `vpn-shoot` containers. -![otel-prometheus](./images/otel-prometheus.png) +![otel-prometheus](./images/otel-prometheus.webp) Similarly to the `k8s-events` collector, the `shoot-metrics` collector also emits its own telemetry data, including metrics and logs. The collector is configured to push its own metrics to the Prometheus backend using the `periodic` reader, avoiding the need for a separate Prometheus scrape configuration. It requires a corresponding set of permissions defined at [shoot-metrics rbac](./manifests/otel-collectors/shoot-metrics-rbac.yaml) manifest. diff --git a/website/blog/2025/06/images/group-picture.png b/website/blog/2025/06/images/group-picture.png deleted file mode 100644 index d445e0729..000000000 Binary files a/website/blog/2025/06/images/group-picture.png and /dev/null differ diff --git a/website/blog/2025/06/images/group-picture.webp b/website/blog/2025/06/images/group-picture.webp new file mode 100644 index 000000000..9d44c7daa Binary files /dev/null and b/website/blog/2025/06/images/group-picture.webp differ diff --git a/website/blog/2025/06/images/otel-gardener-shoot.png b/website/blog/2025/06/images/otel-gardener-shoot.png deleted file mode 100644 index 4d4803c0f..000000000 Binary files a/website/blog/2025/06/images/otel-gardener-shoot.png and /dev/null differ diff --git a/website/blog/2025/06/images/otel-gardener-shoot.webp b/website/blog/2025/06/images/otel-gardener-shoot.webp new file mode 100644 index 000000000..9ef5c5e08 Binary files /dev/null and b/website/blog/2025/06/images/otel-gardener-shoot.webp differ diff --git a/website/blog/2025/06/images/otel-mtls-kube-rbac-proxy.png b/website/blog/2025/06/images/otel-mtls-kube-rbac-proxy.png deleted file mode 100644 index 38e81de5d..000000000 Binary files a/website/blog/2025/06/images/otel-mtls-kube-rbac-proxy.png and /dev/null differ diff --git a/website/blog/2025/06/images/otel-mtls-kube-rbac-proxy.webp b/website/blog/2025/06/images/otel-mtls-kube-rbac-proxy.webp new file mode 100644 index 000000000..cbb0f65e0 Binary files /dev/null and b/website/blog/2025/06/images/otel-mtls-kube-rbac-proxy.webp differ diff --git a/website/blog/2025/06/images/otel-prometheus.png b/website/blog/2025/06/images/otel-prometheus.png deleted file mode 100644 index d312e584f..000000000 Binary files a/website/blog/2025/06/images/otel-prometheus.png and /dev/null differ diff --git a/website/blog/2025/06/images/otel-prometheus.webp b/website/blog/2025/06/images/otel-prometheus.webp new file mode 100644 index 000000000..609a344ba Binary files /dev/null and b/website/blog/2025/06/images/otel-prometheus.webp differ diff --git a/website/blog/2025/06/images/otel-victoria-logs.png b/website/blog/2025/06/images/otel-victoria-logs.png deleted file mode 100644 index bd657ecb6..000000000 Binary files a/website/blog/2025/06/images/otel-victoria-logs.png and /dev/null differ diff --git a/website/blog/2025/06/images/otel-victoria-logs.webp b/website/blog/2025/06/images/otel-victoria-logs.webp new file mode 100644 index 000000000..b30e36b0a Binary files /dev/null and b/website/blog/2025/06/images/otel-victoria-logs.webp differ diff --git a/website/blog/2025/08/08-13-keeping-track-of-your-resources-with-inventory.md b/website/blog/2025/08/08-13-keeping-track-of-your-resources-with-inventory.md index 1d0e859e3..3a7b9659f 100644 --- a/website/blog/2025/08/08-13-keeping-track-of-your-resources-with-inventory.md +++ b/website/blog/2025/08/08-13-keeping-track-of-your-resources-with-inventory.md @@ -181,7 +181,7 @@ First, we will configure Inventory and grant it access to our Gardener Project. In order to do that, navigate to the Gardener Dashboard, select your project and go to the `Members` section. Then add a new service account. -![Inventory Service Account](./images/inventory/inventory-sa.png) +![Inventory Service Account](./images/inventory/inventory-sa.webp) After the service account has been created, you should download its `kubeconfig`, which we will configure in the next step. This snippet represents @@ -477,7 +477,7 @@ also comes with a [pgadmin](https://www.pgadmin.org/) service, which you can use to query and inspect the schema, which is handy when you need to familiarize yourself with the existing schema. -![Inventory AWS Schema](./images/inventory/aws-schema.png) +![Inventory AWS Schema](./images/inventory/aws-schema.webp) In order to get better insights of the data collected by Inventory, you can connect your Inventory database with [Metabase](https://www.metabase.com/), @@ -497,23 +497,23 @@ about its inner workings, which can be scraped, for example, by The following screenshot shows a summary of some of the data collected from a Gardener landscape. -![Gardener Resources Summary](./images/inventory/gardener-stats.png) +![Gardener Resources Summary](./images/inventory/gardener-stats.webp) This screenshot here displays a map of resources identified by Inventory as being orphaned. -![AWS leaked resources map](./images/inventory/aws-leaked-map.png) +![AWS leaked resources map](./images/inventory/aws-leaked-map.webp) And here we can see some of the `worker` metrics, showing us information about the AWS-related tasks. -![Worker Metrics](./images/inventory/worker-metrics.png) +![Worker Metrics](./images/inventory/worker-metrics.webp) Hooking up Inventory with your alerting system allows for early notification of orphan resources as soon as they are being discovered. Here we can see Inventory posting an alert about orphan EC2 instances in Slack. -![Slack Alert](./images/inventory/slack-alert.png) +![Slack Alert](./images/inventory/slack-alert.webp) Ever since our team started using Inventory to track our hyperscaler resources, we have identified a significant number of virtual machines @@ -525,7 +525,7 @@ Reserved, but unused public IP addresses are also part of resources which we are actively tracking, and we've discovered more than a hundred public IPs in one of our environments, which we've cleaned up well. -![Load Balancers and Public IPs](./images/inventory/lbs-ips.png) +![Load Balancers and Public IPs](./images/inventory/lbs-ips.webp) Inventory helped with keeping our garden clean and cut some cloud costs. diff --git a/website/blog/2025/08/images/inventory/aws-leaked-map.png b/website/blog/2025/08/images/inventory/aws-leaked-map.png deleted file mode 100644 index f6e86d98c..000000000 Binary files a/website/blog/2025/08/images/inventory/aws-leaked-map.png and /dev/null differ diff --git a/website/blog/2025/08/images/inventory/aws-leaked-map.webp b/website/blog/2025/08/images/inventory/aws-leaked-map.webp new file mode 100644 index 000000000..e3b98af5c Binary files /dev/null and b/website/blog/2025/08/images/inventory/aws-leaked-map.webp differ diff --git a/website/blog/2025/08/images/inventory/aws-schema.png b/website/blog/2025/08/images/inventory/aws-schema.png deleted file mode 100644 index 93c270981..000000000 Binary files a/website/blog/2025/08/images/inventory/aws-schema.png and /dev/null differ diff --git a/website/blog/2025/08/images/inventory/aws-schema.webp b/website/blog/2025/08/images/inventory/aws-schema.webp new file mode 100644 index 000000000..a1d7d82f4 Binary files /dev/null and b/website/blog/2025/08/images/inventory/aws-schema.webp differ diff --git a/website/blog/2025/08/images/inventory/gardener-stats.png b/website/blog/2025/08/images/inventory/gardener-stats.png deleted file mode 100644 index 83e706c05..000000000 Binary files a/website/blog/2025/08/images/inventory/gardener-stats.png and /dev/null differ diff --git a/website/blog/2025/08/images/inventory/gardener-stats.webp b/website/blog/2025/08/images/inventory/gardener-stats.webp new file mode 100644 index 000000000..c779d54c0 Binary files /dev/null and b/website/blog/2025/08/images/inventory/gardener-stats.webp differ diff --git a/website/blog/2025/08/images/inventory/inventory-sa.png b/website/blog/2025/08/images/inventory/inventory-sa.png deleted file mode 100644 index 07e263e24..000000000 Binary files a/website/blog/2025/08/images/inventory/inventory-sa.png and /dev/null differ diff --git a/website/blog/2025/08/images/inventory/inventory-sa.webp b/website/blog/2025/08/images/inventory/inventory-sa.webp new file mode 100644 index 000000000..814641884 Binary files /dev/null and b/website/blog/2025/08/images/inventory/inventory-sa.webp differ diff --git a/website/blog/2025/08/images/inventory/lbs-ips.png b/website/blog/2025/08/images/inventory/lbs-ips.png deleted file mode 100644 index 81b356a4a..000000000 Binary files a/website/blog/2025/08/images/inventory/lbs-ips.png and /dev/null differ diff --git a/website/blog/2025/08/images/inventory/lbs-ips.webp b/website/blog/2025/08/images/inventory/lbs-ips.webp new file mode 100644 index 000000000..d424b21ec Binary files /dev/null and b/website/blog/2025/08/images/inventory/lbs-ips.webp differ diff --git a/website/blog/2025/08/images/inventory/slack-alert.png b/website/blog/2025/08/images/inventory/slack-alert.png deleted file mode 100644 index 4072c16b6..000000000 Binary files a/website/blog/2025/08/images/inventory/slack-alert.png and /dev/null differ diff --git a/website/blog/2025/08/images/inventory/slack-alert.webp b/website/blog/2025/08/images/inventory/slack-alert.webp new file mode 100644 index 000000000..6108d2e13 Binary files /dev/null and b/website/blog/2025/08/images/inventory/slack-alert.webp differ diff --git a/website/blog/2025/08/images/inventory/worker-metrics.png b/website/blog/2025/08/images/inventory/worker-metrics.png deleted file mode 100644 index f254ccd20..000000000 Binary files a/website/blog/2025/08/images/inventory/worker-metrics.png and /dev/null differ diff --git a/website/blog/2025/08/images/inventory/worker-metrics.webp b/website/blog/2025/08/images/inventory/worker-metrics.webp new file mode 100644 index 000000000..e86b5f919 Binary files /dev/null and b/website/blog/2025/08/images/inventory/worker-metrics.webp differ diff --git a/website/community/hackathons/2025-06.md b/website/community/hackathons/2025-06.md index b55b64f54..c5faa06e5 100644 --- a/website/community/hackathons/2025-06.md +++ b/website/community/hackathons/2025-06.md @@ -11,7 +11,7 @@ weight: -202506 - 📘 **Topics:** https://hackmd.io/ugrWYptbRAi9NPi78G-B9g - 🎤 **Review Meeting Summary:** https://gardener.cloud/community/review-meetings/2025-reviews/#_2025-06-11-hack-the-garden-wrap-up -![Group picture](./images/2025-06.png) +![Group picture](./images/2025-06.webp) ## ⚡️ Replace OpenVPN with Wireguard @@ -84,9 +84,9 @@ The OpenTelemetry collector instance can be configured to filter and fine tune t Introducing OpenTelemetry collector on shoot nodes is now part of the implementation plan for Observability 2.0. The community is invited to participate in this or any future initiative part of Gardener Observability 2.0 concept. -![OpenTelemetry transport flow](./images/2025-06/otel-transport-shoot-metrics/otel-flow.png) +![OpenTelemetry transport flow](./images/2025-06/otel-transport-shoot-metrics/otel-flow.webp) -![Prometheus chart using OpenTelemtry metrics](./images/2025-06/otel-transport-shoot-metrics/prometheus-chart.png) +![Prometheus chart using OpenTelemtry metrics](./images/2025-06/otel-transport-shoot-metrics/prometheus-chart.webp) ## 🔬 Cluster Network Observability @@ -112,7 +112,7 @@ https://github.com/microsoft/retina/issues/1654 **Code/Pull Requests:** https://github.com/microsoft/retina/pull/1657 -![Cluster Network Observability – Prometheus Traffic Chart](./images/2025-06/cluster-network-observability/prometheus-traffic-chart.png) +![Cluster Network Observability – Prometheus Traffic Chart](./images/2025-06/cluster-network-observability/prometheus-traffic-chart.webp) ## 📝 Signing of `ManagedResource` Secrets diff --git a/website/community/hackathons/2025-07.md b/website/community/hackathons/2025-07.md index db8aeacf5..c2de53758 100644 --- a/website/community/hackathons/2025-07.md +++ b/website/community/hackathons/2025-07.md @@ -10,7 +10,7 @@ weight: -202507 - 👤 **Organizer:** [SAP](https://www.sap.com/) - 📘 **Topics:** / -![Group picture](./images/2025-07.png) +![Group picture](./images/2025-07.webp) ## 🛡️ Viewer kubeconfigs expose requestor's identity (potential privilege leak) diff --git a/website/community/hackathons/2025-11.md b/website/community/hackathons/2025-11.md index bd17e4a0a..2ec52f9a4 100644 --- a/website/community/hackathons/2025-11.md +++ b/website/community/hackathons/2025-11.md @@ -250,7 +250,7 @@ Although we will not continue with this after the hackathon, this artifact can s * Hollow `gardenlet` WIP implementation: [acumino/gardener#hollow-gardenlet](https://github.com/acumino/gardener/tree/hollow-gardenlet) -![concept diagram for the gardener scale-out tests using hollow clusters and gardenlets to simulate load](images/2025-11/scale-out-tests/concept.png) +![concept diagram for the gardener scale-out tests using hollow clusters and gardenlets to simulate load](images/2025-11/scale-out-tests/concept.webp) ## ❤️‍🩹 `force-restore` Operation Annotation For `Shoot`s @@ -331,7 +331,7 @@ user 64m51.059s sys 6m42.249s ``` -![Prow CPU metrics without cache showing 12 CPUs being used during build](images/2025-11/prow-go-build-cache/prow-without-cache.png) +![Prow CPU metrics without cache showing 12 CPUs being used during build](images/2025-11/prow-go-build-cache/prow-without-cache.webp) ### kind e2e tests with cache @@ -341,7 +341,7 @@ user 2m33.118s sys 1m0.021s ``` -![Prow CPU metrics with cache showing 2 CPUs being used during build](images/2025-11/prow-go-build-cache/prow-with-cache.png) +![Prow CPU metrics with cache showing 2 CPUs being used during build](images/2025-11/prow-go-build-cache/prow-with-cache.webp) ## 🛠️ MCM: Update Machines Updates During In-Place Updates diff --git a/website/community/hackathons/2026-05.md b/website/community/hackathons/2026-05.md index 134fbc041..88e9c6321 100644 --- a/website/community/hackathons/2026-05.md +++ b/website/community/hackathons/2026-05.md @@ -13,7 +13,7 @@ outline: 2 - 🎤 **Review Meeting Summary:** https://gardener.cloud/community/review-meetings/2026-reviews/#_2026-05-13-hack-the-garden-wrap-up
- +
diff --git a/website/community/hackathons/images/2023-05/masterful-shoot/MasterfulShoot.png b/website/community/hackathons/images/2023-05/masterful-shoot/MasterfulShoot.png deleted file mode 100644 index 4b2fa3f9a..000000000 Binary files a/website/community/hackathons/images/2023-05/masterful-shoot/MasterfulShoot.png and /dev/null differ diff --git a/website/community/hackathons/images/2023-05/masterful-shoot/MasterfulShoot.webp b/website/community/hackathons/images/2023-05/masterful-shoot/MasterfulShoot.webp new file mode 100644 index 000000000..cf32556fb Binary files /dev/null and b/website/community/hackathons/images/2023-05/masterful-shoot/MasterfulShoot.webp differ diff --git a/website/community/hackathons/images/2023-11/gardener-operator-deploys-gardenlet/gardenlet-via-gardener-operator.png b/website/community/hackathons/images/2023-11/gardener-operator-deploys-gardenlet/gardenlet-via-gardener-operator.png deleted file mode 100644 index d3c13e45f..000000000 Binary files a/website/community/hackathons/images/2023-11/gardener-operator-deploys-gardenlet/gardenlet-via-gardener-operator.png and /dev/null differ diff --git a/website/community/hackathons/images/2023-11/gardener-operator-deploys-gardenlet/gardenlet-via-gardener-operator.webp b/website/community/hackathons/images/2023-11/gardener-operator-deploys-gardenlet/gardenlet-via-gardener-operator.webp new file mode 100644 index 000000000..237888e79 Binary files /dev/null and b/website/community/hackathons/images/2023-11/gardener-operator-deploys-gardenlet/gardenlet-via-gardener-operator.webp differ diff --git a/website/community/hackathons/images/2025-06.png b/website/community/hackathons/images/2025-06.png deleted file mode 100644 index d445e0729..000000000 Binary files a/website/community/hackathons/images/2025-06.png and /dev/null differ diff --git a/website/community/hackathons/images/2025-06.webp b/website/community/hackathons/images/2025-06.webp new file mode 100644 index 000000000..9d44c7daa Binary files /dev/null and b/website/community/hackathons/images/2025-06.webp differ diff --git a/website/community/hackathons/images/2025-06/cluster-network-observability/prometheus-traffic-chart.png b/website/community/hackathons/images/2025-06/cluster-network-observability/prometheus-traffic-chart.png deleted file mode 100644 index 26a233cb2..000000000 Binary files a/website/community/hackathons/images/2025-06/cluster-network-observability/prometheus-traffic-chart.png and /dev/null differ diff --git a/website/community/hackathons/images/2025-06/cluster-network-observability/prometheus-traffic-chart.webp b/website/community/hackathons/images/2025-06/cluster-network-observability/prometheus-traffic-chart.webp new file mode 100644 index 000000000..fa6127b32 Binary files /dev/null and b/website/community/hackathons/images/2025-06/cluster-network-observability/prometheus-traffic-chart.webp differ diff --git a/website/community/hackathons/images/2025-06/otel-transport-shoot-metrics/otel-flow.png b/website/community/hackathons/images/2025-06/otel-transport-shoot-metrics/otel-flow.png deleted file mode 100644 index 014bdb175..000000000 Binary files a/website/community/hackathons/images/2025-06/otel-transport-shoot-metrics/otel-flow.png and /dev/null differ diff --git a/website/community/hackathons/images/2025-06/otel-transport-shoot-metrics/otel-flow.webp b/website/community/hackathons/images/2025-06/otel-transport-shoot-metrics/otel-flow.webp new file mode 100644 index 000000000..b02469759 Binary files /dev/null and b/website/community/hackathons/images/2025-06/otel-transport-shoot-metrics/otel-flow.webp differ diff --git a/website/community/hackathons/images/2025-06/otel-transport-shoot-metrics/prometheus-chart.png b/website/community/hackathons/images/2025-06/otel-transport-shoot-metrics/prometheus-chart.png deleted file mode 100644 index fc81c0a94..000000000 Binary files a/website/community/hackathons/images/2025-06/otel-transport-shoot-metrics/prometheus-chart.png and /dev/null differ diff --git a/website/community/hackathons/images/2025-06/otel-transport-shoot-metrics/prometheus-chart.webp b/website/community/hackathons/images/2025-06/otel-transport-shoot-metrics/prometheus-chart.webp new file mode 100644 index 000000000..e1ac520af Binary files /dev/null and b/website/community/hackathons/images/2025-06/otel-transport-shoot-metrics/prometheus-chart.webp differ diff --git a/website/community/hackathons/images/2025-07.png b/website/community/hackathons/images/2025-07.png deleted file mode 100644 index a5bbdeead..000000000 Binary files a/website/community/hackathons/images/2025-07.png and /dev/null differ diff --git a/website/community/hackathons/images/2025-07.webp b/website/community/hackathons/images/2025-07.webp new file mode 100644 index 000000000..6eaaaf917 Binary files /dev/null and b/website/community/hackathons/images/2025-07.webp differ diff --git a/website/community/hackathons/images/2025-11/prow-go-build-cache/prow-with-cache.png b/website/community/hackathons/images/2025-11/prow-go-build-cache/prow-with-cache.png deleted file mode 100644 index db0a166b8..000000000 Binary files a/website/community/hackathons/images/2025-11/prow-go-build-cache/prow-with-cache.png and /dev/null differ diff --git a/website/community/hackathons/images/2025-11/prow-go-build-cache/prow-with-cache.webp b/website/community/hackathons/images/2025-11/prow-go-build-cache/prow-with-cache.webp new file mode 100644 index 000000000..e6ba285bb Binary files /dev/null and b/website/community/hackathons/images/2025-11/prow-go-build-cache/prow-with-cache.webp differ diff --git a/website/community/hackathons/images/2025-11/prow-go-build-cache/prow-without-cache.png b/website/community/hackathons/images/2025-11/prow-go-build-cache/prow-without-cache.png deleted file mode 100644 index e96e28548..000000000 Binary files a/website/community/hackathons/images/2025-11/prow-go-build-cache/prow-without-cache.png and /dev/null differ diff --git a/website/community/hackathons/images/2025-11/prow-go-build-cache/prow-without-cache.webp b/website/community/hackathons/images/2025-11/prow-go-build-cache/prow-without-cache.webp new file mode 100644 index 000000000..677fc2b91 Binary files /dev/null and b/website/community/hackathons/images/2025-11/prow-go-build-cache/prow-without-cache.webp differ diff --git a/website/community/hackathons/images/2025-11/scale-out-tests/concept.png b/website/community/hackathons/images/2025-11/scale-out-tests/concept.png deleted file mode 100644 index b03264ea3..000000000 Binary files a/website/community/hackathons/images/2025-11/scale-out-tests/concept.png and /dev/null differ diff --git a/website/community/hackathons/images/2025-11/scale-out-tests/concept.webp b/website/community/hackathons/images/2025-11/scale-out-tests/concept.webp new file mode 100644 index 000000000..a7513c51a Binary files /dev/null and b/website/community/hackathons/images/2025-11/scale-out-tests/concept.webp differ diff --git a/website/community/hackathons/images/2026-05_1.png b/website/community/hackathons/images/2026-05_1.png deleted file mode 100644 index 1d7b13490..000000000 Binary files a/website/community/hackathons/images/2026-05_1.png and /dev/null differ diff --git a/website/community/hackathons/images/2026-05_1.webp b/website/community/hackathons/images/2026-05_1.webp new file mode 100644 index 000000000..3346aaf66 Binary files /dev/null and b/website/community/hackathons/images/2026-05_1.webp differ diff --git a/website/contribute/contribution-process/images/cicd-overview.png b/website/contribute/contribution-process/images/cicd-overview.png deleted file mode 100644 index c619a53b3..000000000 Binary files a/website/contribute/contribution-process/images/cicd-overview.png and /dev/null differ diff --git a/website/contribute/contribution-process/images/cicd-overview.webp b/website/contribute/contribution-process/images/cicd-overview.webp new file mode 100644 index 000000000..fa2f17789 Binary files /dev/null and b/website/contribute/contribution-process/images/cicd-overview.webp differ diff --git a/website/contribute/contribution-process/roles.md b/website/contribute/contribution-process/roles.md index a2c2dd696..485d1bc87 100644 --- a/website/contribute/contribution-process/roles.md +++ b/website/contribute/contribution-process/roles.md @@ -67,8 +67,7 @@ Approvers share the requirements and responsibilities of [reviewers](#reviewer), - Sound technical judgment - Deep understanding of the Gardener codebase, features, and extensions - Strong operational experience with Gardener -- Active community engagement in the form of contributions to the [Gardener Community Review meeting](../../community/_index.md#review-meetings), [Slack](https://join.slack.com/t/gardener-cloud/shared_invite/zt-33c9daems-3oOorhnqOSnldZPWqGmIBw) discussions or similar - +- Active community engagement in the form of contributions to the [Gardener Community Review meeting](../../../community/_index.md#gardener-review-meetings), [Slack](https://join.slack.com/t/gardener-cloud/shared_invite/zt-33c9daems-3oOorhnqOSnldZPWqGmIBw) discussions or similar **Responsibilities** - General Responsiveness for subproject matters - Triage reviews and issues (status check, categorizing, prioritizing) diff --git a/website/contribute/documentation/organization.md b/website/contribute/documentation/organization.md index bc10d9f90..3cab60465 100644 --- a/website/contribute/documentation/organization.md +++ b/website/contribute/documentation/organization.md @@ -23,7 +23,7 @@ repositoryX |_ docs |_ usage | |_ images - | |_ 01.png + | |_ 01.webp | |_ hibernation.md |_ operations |_ deployment diff --git a/website/documentation/getting-started/architecture.md b/website/documentation/getting-started/architecture.md index c44d7465b..3029ac67d 100644 --- a/website/documentation/getting-started/architecture.md +++ b/website/documentation/getting-started/architecture.md @@ -24,7 +24,7 @@ In other terms: you use Kubernetes to run Kubernetes. ## Cluster Hierarchy in Gardener -![cluster-hierarchy](./images/cluster-hierarchy.png) +![cluster-hierarchy](./images/cluster-hierarchy.webp) Gardener uses many Kubernetes clusters to eventually provide you with your very own shoot cluster. @@ -36,7 +36,7 @@ Finally, there are the shoot clusters - what Gardener is all about. Shoot cluste ## Gardener Components Overview -![components](./images/components.png) +![components](./images/components.webp) From a very high level point of view, the important components of Gardener are: @@ -52,11 +52,11 @@ Inside each seed is one of the most important controllers in Gardener - the gard Kubernetes' API can be extended - either by CRDs or by API aggregation. -![api-endpoint-1](./images/api-endpoint-1.png) +![api-endpoint-1](./images/api-endpoint-1.webp) API aggregation involves setting up a so called extension-API-server and registering it with the main Kubernetes API server. The extension API server will then serve resources of custom-defined API groups on its own. While the main Kubernetes API server is still used to handle RBAC, authorization, namespacing, quotas, limits, etc., all custom resources will be delegated to the extension-API-server. This is done through an APIService resource in the main API server - it specifies that, e.g., the API group `core.gardener.cloud` is served by a dedicated extension-API-server and all requests concerning this API group should be forwarded the specified IP address or Kubernetes service name. Extension API servers can persist their resources in their very own etcd but they do not have to - instead, they can use the main API servers etcd as well. -![api-endpoint-2](./images/api-endpoint-2.png) +![api-endpoint-2](./images/api-endpoint-2.webp) Gardener uses its very own extension API server for its resources like Shoot, Seed, CloudProfile, SecretBinding, etc... However, Gardener does not set up a dedicated etcd for its own extension API server - instead, it reuses the existing etcd of the main Kubernetes API server. This is absolutely possible since the resources of Gardener's API are part of the API group `gardener.cloud` and thus will not interfere with any resources of the main Kubernetes API in etcd. @@ -68,7 +68,7 @@ In case you are interested, you can read more on: ## Gardener API Resources -![api-resources](./images/api-resources.png) +![api-resources](./images/api-resources.webp) Since Gardener's API endpoint is a regular Kubernetes cluster, it would theoretically serve all resources from the Kubernetes core API, including Pods, Deployments, etc. However, Gardener implements RBAC rules and disables certain controllers that make these resources inaccessible. Objects like Secrets, Namespaces, and ResourceQuotas are still available, though, as they play a vital role in Gardener. diff --git a/website/documentation/getting-started/ca-components.md b/website/documentation/getting-started/ca-components.md index 73b8653f9..a69b91050 100644 --- a/website/documentation/getting-started/ca-components.md +++ b/website/documentation/getting-started/ca-components.md @@ -13,7 +13,7 @@ So let's see what the mission control (control plane) of a Kubernetes cluster lo [Kubeception - Kubernetes in Kubernetes in Kubernetes](./architecture.md#kubeception) -![kubeception](./images/kubeception.png) +![kubeception](./images/kubeception.webp) In the classic setup, there is a dedicated host / VM to host the master components / control plane of a Kubernetes cluster. However, these are just normal programs that can easily be put into containers. Once in containers, we can make Kubernetes Deployments and StatefulSets (for the etcd) watch over them. And now we put all that into a separate, dedicated Kubernetes cluster - et voilà, we have Kubernetes in Kubernetes, aka Kubeception (named after the famous movie Inception with Leonardo DiCaprio). @@ -21,11 +21,11 @@ In Gardener's terminology, the cluster hosting the control plane components is c ## Control Plane Components on the Seed -![control-plane-components-1](./images/control-plane-components-1.png) +![control-plane-components-1](./images/control-plane-components-1.webp) All control-plane components of a shoot cluster run in a dedicated namespace on the seed. -![control-plane-components-2](./images/control-plane-components-2.png) +![control-plane-components-2](./images/control-plane-components-2.webp) A control plane has lots of components: @@ -45,7 +45,7 @@ There is also a set of components making our life easier (logging, monitoring) o ## Core Components -![core-components-1](./images/core-components-1.png) +![core-components-1](./images/core-components-1.webp) Let's take a close look at the API server as well as etcd. @@ -59,7 +59,7 @@ The kube API server (often called "kapi") scales both horizontally and verticall The kube API server is not directly exposed / reachable via its public hostname. Instead, Gardener runs a single LoadBalancer service backed by an istio gateway / envoy, which uses SNI to forward traffic. -![core-components-2](./images/core-components-2.png) +![core-components-2](./images/core-components-2.webp) The [kube-controller-manager](https://kubernetes.io/docs/concepts/overview/components/#kube-controller-manager) (aka [KCM](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/)) is the component that contains all the controllers for the core Kubernetes objects such as Deployments, Services, PVCs, etc. @@ -73,7 +73,7 @@ Without the cluster autoscaler, nodes could not be added or removed based on cur ## Gardener-Specific Components -![gardener-specific-components](./images/gardener-specific-components.png) +![gardener-specific-components](./images/gardener-specific-components.webp) **Shoot DNS service:** External DNS management for resources within the cluster. @@ -85,7 +85,7 @@ Without the cluster autoscaler, nodes could not be added or removed based on cur ## Machines -![machines](./images/machines.png) +![machines](./images/machines.webp) **Machine Controller Manager** (aka [MCM](https://github.com/gardener/machine-controller-manager)): @@ -95,7 +95,7 @@ For more information, see [MCM](https://github.com/gardener/machine-controller-m ## ManagedResources -![managed-resources](./images/managed-resources.png) +![managed-resources](./images/managed-resources.webp) **Gardener Resource Manager** (aka [GRM](https://github.com/gardener/gardener/blob/master/docs/concepts/resource-manager.md)): @@ -105,7 +105,7 @@ Enter the GRM - it reconciles on ManagedResources objects, which are description ## DNS Records - "Internal" and "External" -![dns-records](./images/dns-records.png) +![dns-records](./images/dns-records.webp) The internal domain name is used by all Gardener components to talk to the API server. Even though it is called "internal", it is still publicly routable. @@ -117,7 +117,7 @@ For more information, see [Contract: DNSRecord Resources](https://github.com/gar ## Features and Observability -![features-observability](./images/features-observability.png) +![features-observability](./images/features-observability.webp) Gardener runs various health checks to ensure that the cluster works properly. The Network Problem Detector gives information about connectivity within the cluster and to the API server. @@ -127,7 +127,7 @@ Gardener runs various health checks to ensure that the cluster works properly. T ## HA Control Plane -![ha-control-plane](./images/ha-control-plane.png) +![ha-control-plane](./images/ha-control-plane.webp) As the title indicates, the HA control plane feature is only about the control plane. Setting up the data plane to span multiple zones is part of the worker spec of a shoot. @@ -142,7 +142,7 @@ For detailed guidance and more information, see the [High Availability Guides](h ## Zonal HA Control Planes -![zonal-ha-control-planes](./images/zonal-ha-control-planes.png) +![zonal-ha-control-planes](./images/zonal-ha-control-planes.webp) Zonal HA is the most likely setup for shoots with `purpose: production`. @@ -158,13 +158,13 @@ To distribute those pods across zones, well-known concepts like PodTopologySprea ## kube-system Namespace -kube-system-namespace-1 +kube-system-namespace-1 For a fully functional cluster, a few components need to run on the data plane side of the diagram. They all exist in the kube-system namespace. Let's have a closer look at them. ### Networking -![kube-system-namespace-2](./images/kube-system-namespace-2.png) +![kube-system-namespace-2](./images/kube-system-namespace-2.webp) On each node we need a CNI (container network interface) plugin. Gardener offers Calico or Cilium as network provider for a shoot. When using Calico, a kube-proxy is deployed. Cilium does not need a kube-proxy, as it takes care of its tasks as well. @@ -182,7 +182,7 @@ When calico is failing on a node, no new pods can start there as they don't get ### DNS System -![kube-system-namespace-3](./images/kube-system-namespace-3.png) +![kube-system-namespace-3](./images/kube-system-namespace-3.webp) For a normal service in Kubernetes, a cluster-internal DNS record that resolves to the service's ClusterIP address is being created. In Gardener (similar to most other Kubernetes offerings) CoreDNS takes care of this aspect. To reduce the load when it comes to upstream DNS queries, Gardener deploys a DNS cache to each node by default. It will also forward queries outside the cluster's search domain directly to the upstream DNS server. For more information, see [NodeLocalDNS Configuration](https://github.com/gardener/gardener/blob/master/docs/usage/networking/node-local-dns.md) and [DNS autoscaling](https://github.com/gardener/gardener/blob/master/docs/usage/autoscaling/dns-autoscaling.md). @@ -194,7 +194,7 @@ A broken DNS system on any level will cause disruption / service degradation for ### Health Checks and Metrics -![kube-system-namespace-4](./images/kube-system-namespace-4.png) +![kube-system-namespace-4](./images/kube-system-namespace-4.webp) Gardener deploys probes checking the health of individual nodes. In a similar fashion, a network health check probes connectivity within the cluster (node to node, pod to pod, pod to api-server, ...). @@ -202,7 +202,7 @@ They provide the data foundation for Gardener's monitoring stack together with t ### Connectivity Components -![kube-system-namespace-5](./images/kube-system-namespace-5.png) +![kube-system-namespace-5](./images/kube-system-namespace-5.webp) From the perspective of the data plane, the shoot's API server is reachable via the cluster-internal service `kubernetes.default.svc.cluster.local`. The apiserver-proxy intercepts connections to this destination and changes it so that the traffic is forwarded to the kube-apiserver service in the seed cluster. For more information, see [kube-apiserver via apiserver-proxy](https://github.com/gardener/gardener/blob/764df0ee5ebc13b2634eba98169b409244f19bfe/docs/usage/control-plane-endpoints-and-ports.md#kube-apiserver-via-apiserver-proxy). @@ -210,6 +210,6 @@ The second component here is the VPN shoot. It initiates a VPN connection to its ### csi-driver -![kube-system-namespace-6](./images/kube-system-namespace-6.png) +![kube-system-namespace-6](./images/kube-system-namespace-6.webp) The last component to mention here is the csi-driver that is deployed as a Daemonset to all nodes. It registers with the kubelet and takes care of the mounting of volume types it is responsible for. diff --git a/website/documentation/getting-started/common-pitfalls.md b/website/documentation/getting-started/common-pitfalls.md index 9b5f9b3c6..f8a66939f 100644 --- a/website/documentation/getting-started/common-pitfalls.md +++ b/website/documentation/getting-started/common-pitfalls.md @@ -7,7 +7,7 @@ weight: 9 ### Containers will NOT fix a broken architecture! -![microservices](./images/microservices.png) +![microservices](./images/microservices.webp) Running a highly distributed system has advantages, but of course, those come at a cost. In order to succeed, one would need: @@ -28,7 +28,7 @@ Reading the [Scalability of Gardener Managed Kubernetes Clusters](../guides/admi ### A Small Sample of Things That Can Grow Beyond Reasonable Limits -![hibernation-1](./images/hibernation-1.png) +![hibernation-1](./images/hibernation-1.webp) When scaling a cluster, there are plenty of resources that can be exhausted or reach a limit: @@ -40,7 +40,7 @@ When scaling a cluster, there are plenty of resources that can be exhausted or r ### Infrastructure Capacity and Quotas -![capacity](./images/capacity.png) +![capacity](./images/capacity.webp) Sometimes requests cannot be fulfilled due to shortages on the infrastructure side. For example, a certain instance type might not be available and new Kubernetes nodes of this type cannot be added. It is a good practice to use the [cluster-autoscaler's priority expander](https://github.com/gardener/autoscaler/blob/machine-controller-manager-provider/cluster-autoscaler/expander/priority/readme.md) and have a secondary node pool. @@ -54,7 +54,7 @@ Sometimes, it is not the physical capacity but exhausted quotas within an infras ### NodeCIDRMaskSize -![mask-size](./images/mask-size.png) +![mask-size](./images/mask-size.webp) Upon cluster creation, there are several settings that are network related. For example, the address space for Pods has to be defined. In this case, it is a `/16` subnet that includes a total of 65.536 hosts. However, that does not imply that you can easily use all addresses at the same point in time. @@ -68,7 +68,7 @@ For more information, see [Shoot Networking](https://github.com/gardener/gardene ### Avoid Overlapping CIDR Ranges in VPCs -![cidr-ranges](./images/cidr-ranges.png) +![cidr-ranges](./images/cidr-ranges.webp) Gardener can create shoot cluster resources in an existing / user-created VPC. However, you have to make sure that the CIDR ranges used by the shoots nodes or subnets for zones do not overlap with other shoots deployed to the same VPC. @@ -76,7 +76,7 @@ In case of an overlap, there might be strange routing effects, and packets endin ## Expired Credentials -![expired-credentials](./images/expired-credentials.png) +![expired-credentials](./images/expired-credentials.webp) Credentials expire or get revoked. When this happens to the actively used infrastructure credentials of a shoot, the cluster will stop working after a while. New nodes cannot be added, LoadBalancers cannot be created, and so on. @@ -174,7 +174,7 @@ Common causes for failure are: ### Timeout -![timeout](./images/timeout.png) +![timeout](./images/timeout.webp) Webhooks are a very helpful feature of Kubernetes. However, they can easily be configured to break a shoot cluster. Take the timeout, for example. High timeouts (>15s) can lead to blocking requests of control plane components. That's because most control-plane API calls are made with a client-side timeout of 30s, so if a webhook has `timeoutSeconds=30`, the overall request might still fail as there is overhead in communication with the API server and other potential webhooks. @@ -214,7 +214,7 @@ However, sometimes, you simply use helm or kustomize to install a (third-party) ### CRD with a Conversion Webhook -![conversion-webhook-crd](./images/conversion-webhook-crd.png) +![conversion-webhook-crd](./images/conversion-webhook-crd.webp) Conversion webhooks are tricky. Similarly to regular webhooks, they should have a low timeout. However, they cannot be remediated automatically and can cause errors in the control plane. For example, if a webhook is invoked but not available, it can block the garbage collection run by the kube-controller-manager. diff --git a/website/documentation/getting-started/features/certificate-management.md b/website/documentation/getting-started/features/certificate-management.md index 1a551b368..ec57c6d62 100644 --- a/website/documentation/getting-started/features/certificate-management.md +++ b/website/documentation/getting-started/features/certificate-management.md @@ -11,7 +11,7 @@ There are plenty of tools you can use to perform the challenge. For Kubernetes, ## Manage Certificates with Gardener -![manage-certificates](./images/manage-certificates.png) +![manage-certificates](./images/manage-certificates.webp) You may annotate a Service or Ingress resource to trigger the cert-manager to request a certificate from the any configured issuer (e.g. Let's Encrypt) and perform the challenge. A Gardener operator can add a default issuer for convenience. With the DNS extension discussed previously, setting up the DNS TXT record for the ACME challenge is fairly easy. The requested certificate can be customized by the means of several other annotations known to the controller. Most notably, it is possible to specify SANs via `cert.gardener.cloud/dnsnames` to accommodate domain names that have more than 64 characters (the limit for the CN field). diff --git a/website/documentation/getting-started/features/credential-rotation.md b/website/documentation/getting-started/features/credential-rotation.md index 124ccdcce..07156100d 100644 --- a/website/documentation/getting-started/features/credential-rotation.md +++ b/website/documentation/getting-started/features/credential-rotation.md @@ -10,14 +10,14 @@ The ETCD needs one to store resources like secrets encrypted at rest. Gardener generates certificate authorities (CAs) to ensure secured communication between the various components and actors and service account tokens are signed with a dedicated key. There is also an SSH key pair to allow debugging of nodes and the observability stack has its own passwords too. -![keys](./images/keys.png) +![keys](./images/keys.webp) All of these keys share a common property: they are managed by Gardener. Rotating them, however, is potentially very disruptive. Hence, Gardener does not do it automatically, but offers you means to perform these tasks easily. For a single cluster, you may conveniently use the dashboard. -![Prepare the rotation of all credentials from the Gardener dashboard](./images/prepare-rotation-of-all-credentials.png) +![Prepare the rotation of all credentials from the Gardener dashboard](./images/prepare-rotation-of-all-credentials.webp) Where possible, the rotation happens in two phases - Preparing and Completing. @@ -42,7 +42,7 @@ kubectl -n annotate shoot gardener.cloud/operatio ## Rotation Phases -![rotation-phases](./images/rotation-phases.png) +![rotation-phases](./images/rotation-phases.webp) At the beginning, only the old set of credentials exists. By triggering the rotation, new credentials are created in the Preparing phase and both sets are valid. @@ -55,7 +55,7 @@ For more information, see [Credentials Rotation for Shoot Clusters](https://gith ## User-Provided Credentials -![user-provided-keys](./images/user-provided-keys.png) +![user-provided-keys](./images/user-provided-keys.webp) You grant Gardener permissions to create resources by handing over cloud provider keys. These keys are stored in a secret and referenced to a shoot via a SecretBinding. diff --git a/website/documentation/getting-started/features/dns-management.md b/website/documentation/getting-started/features/dns-management.md index 8f725cd93..cc5c54ce4 100644 --- a/website/documentation/getting-started/features/dns-management.md +++ b/website/documentation/getting-started/features/dns-management.md @@ -11,7 +11,7 @@ Essentially, some sort of automation for DNS management is missing. ## Automating DNS Management -![automate-dns-management](./images/automate-dns-management.png) +![automate-dns-management](./images/automate-dns-management.webp) From a user's perspective, it is desirable to work with already known resources and concepts. Hence, the DNS management offered by Gardener plugs seamlessly into Kubernetes resources and you do not need to "leave" the context of the shoot cluster. @@ -31,7 +31,7 @@ For more information, see [DNS Names](https://github.com/gardener/gardener-exten For the above to work, we need some ingredients. Primarily, this is implemented via a so-called DNSProvider. Every shoot has a default provider that is used to set up the API server's public DNS record. It can be used to request sub-domains as well. -![](./images/dns-provider.png) +![](./images/dns-provider.webp) In addition, a shoot can reference credentials to a DNS provider. Those can be used to manage custom domains. diff --git a/website/documentation/getting-started/features/hibernation.md b/website/documentation/getting-started/features/hibernation.md index 7e415e604..51d4eb859 100644 --- a/website/documentation/getting-started/features/hibernation.md +++ b/website/documentation/getting-started/features/hibernation.md @@ -31,6 +31,6 @@ When waking up a cluster, all control plane components will be scaled up again a The easiest way to configure hibernation schedules is via the dashboard. Of course, this is reflected in the shoot's spec and can also be maintained there. Before a cluster is hibernated, constraints in the shoot's status will be evaluated. There might be conditions (mostly revolving around mutating / validating webhooks) that would block a successful wake-up. In such a case, the constraint will block hibernation in the first place. -![trigger-hibernation](./images/trigger-hibernation.png) +![trigger-hibernation](./images/trigger-hibernation.webp) To wake-up or hibernate a shoot immediately, the dashboard can be used or a patch to the shoot's spec can be applied directly. diff --git a/website/documentation/getting-started/features/images/automate-dns-management.png b/website/documentation/getting-started/features/images/automate-dns-management.png deleted file mode 100644 index 154def383..000000000 Binary files a/website/documentation/getting-started/features/images/automate-dns-management.png and /dev/null differ diff --git a/website/documentation/getting-started/features/images/automate-dns-management.webp b/website/documentation/getting-started/features/images/automate-dns-management.webp new file mode 100644 index 000000000..051fc2952 Binary files /dev/null and b/website/documentation/getting-started/features/images/automate-dns-management.webp differ diff --git a/website/documentation/getting-started/features/images/dns-provider.png b/website/documentation/getting-started/features/images/dns-provider.png deleted file mode 100644 index 4c63cc0b1..000000000 Binary files a/website/documentation/getting-started/features/images/dns-provider.png and /dev/null differ diff --git a/website/documentation/getting-started/features/images/dns-provider.webp b/website/documentation/getting-started/features/images/dns-provider.webp new file mode 100644 index 000000000..71df1495a Binary files /dev/null and b/website/documentation/getting-started/features/images/dns-provider.webp differ diff --git a/website/documentation/getting-started/features/images/hibernation-1.png b/website/documentation/getting-started/features/images/hibernation-1.png deleted file mode 100644 index dba7fbd65..000000000 Binary files a/website/documentation/getting-started/features/images/hibernation-1.png and /dev/null differ diff --git a/website/documentation/getting-started/features/images/hibernation-1.webp b/website/documentation/getting-started/features/images/hibernation-1.webp new file mode 100644 index 000000000..6b313453c Binary files /dev/null and b/website/documentation/getting-started/features/images/hibernation-1.webp differ diff --git a/website/documentation/getting-started/features/images/hibernation-2.png b/website/documentation/getting-started/features/images/hibernation-2.png deleted file mode 100644 index bd2285bee..000000000 Binary files a/website/documentation/getting-started/features/images/hibernation-2.png and /dev/null differ diff --git a/website/documentation/getting-started/features/images/hibernation-2.webp b/website/documentation/getting-started/features/images/hibernation-2.webp new file mode 100644 index 000000000..415a15e68 Binary files /dev/null and b/website/documentation/getting-started/features/images/hibernation-2.webp differ diff --git a/website/documentation/getting-started/features/images/keys.png b/website/documentation/getting-started/features/images/keys.png deleted file mode 100644 index bfd83264a..000000000 Binary files a/website/documentation/getting-started/features/images/keys.png and /dev/null differ diff --git a/website/documentation/getting-started/features/images/keys.webp b/website/documentation/getting-started/features/images/keys.webp new file mode 100644 index 000000000..1df2b3530 Binary files /dev/null and b/website/documentation/getting-started/features/images/keys.webp differ diff --git a/website/documentation/getting-started/features/images/manage-certificates.png b/website/documentation/getting-started/features/images/manage-certificates.png deleted file mode 100644 index dcea56a41..000000000 Binary files a/website/documentation/getting-started/features/images/manage-certificates.png and /dev/null differ diff --git a/website/documentation/getting-started/features/images/manage-certificates.webp b/website/documentation/getting-started/features/images/manage-certificates.webp new file mode 100644 index 000000000..9cace79bc Binary files /dev/null and b/website/documentation/getting-started/features/images/manage-certificates.webp differ diff --git a/website/documentation/getting-started/features/images/prepare-rotation-of-all-credentials.png b/website/documentation/getting-started/features/images/prepare-rotation-of-all-credentials.png deleted file mode 100644 index f64a13846..000000000 Binary files a/website/documentation/getting-started/features/images/prepare-rotation-of-all-credentials.png and /dev/null differ diff --git a/website/documentation/getting-started/features/images/prepare-rotation-of-all-credentials.webp b/website/documentation/getting-started/features/images/prepare-rotation-of-all-credentials.webp new file mode 100644 index 000000000..956d74684 Binary files /dev/null and b/website/documentation/getting-started/features/images/prepare-rotation-of-all-credentials.webp differ diff --git a/website/documentation/getting-started/features/images/rotation-phases.png b/website/documentation/getting-started/features/images/rotation-phases.png deleted file mode 100644 index 58313e83d..000000000 Binary files a/website/documentation/getting-started/features/images/rotation-phases.png and /dev/null differ diff --git a/website/documentation/getting-started/features/images/rotation-phases.webp b/website/documentation/getting-started/features/images/rotation-phases.webp new file mode 100644 index 000000000..feb9dd96f Binary files /dev/null and b/website/documentation/getting-started/features/images/rotation-phases.webp differ diff --git a/website/documentation/getting-started/features/images/trigger-hibernation.png b/website/documentation/getting-started/features/images/trigger-hibernation.png deleted file mode 100644 index 31d330761..000000000 Binary files a/website/documentation/getting-started/features/images/trigger-hibernation.png and /dev/null differ diff --git a/website/documentation/getting-started/features/images/trigger-hibernation.webp b/website/documentation/getting-started/features/images/trigger-hibernation.webp new file mode 100644 index 000000000..46d95a6ca Binary files /dev/null and b/website/documentation/getting-started/features/images/trigger-hibernation.webp differ diff --git a/website/documentation/getting-started/features/images/user-provided-keys.png b/website/documentation/getting-started/features/images/user-provided-keys.png deleted file mode 100644 index e1921215b..000000000 Binary files a/website/documentation/getting-started/features/images/user-provided-keys.png and /dev/null differ diff --git a/website/documentation/getting-started/features/images/user-provided-keys.webp b/website/documentation/getting-started/features/images/user-provided-keys.webp new file mode 100644 index 000000000..8693a959f Binary files /dev/null and b/website/documentation/getting-started/features/images/user-provided-keys.webp differ diff --git a/website/documentation/getting-started/features/images/workerless-shoots.png b/website/documentation/getting-started/features/images/workerless-shoots.png deleted file mode 100644 index cde2bb4e9..000000000 Binary files a/website/documentation/getting-started/features/images/workerless-shoots.png and /dev/null differ diff --git a/website/documentation/getting-started/features/images/workerless-shoots.webp b/website/documentation/getting-started/features/images/workerless-shoots.webp new file mode 100644 index 000000000..b764f2041 Binary files /dev/null and b/website/documentation/getting-started/features/images/workerless-shoots.webp differ diff --git a/website/documentation/getting-started/features/workerless-shoots.md b/website/documentation/getting-started/features/workerless-shoots.md index f587f2ffa..5c0ffb11c 100644 --- a/website/documentation/getting-started/features/workerless-shoots.md +++ b/website/documentation/getting-started/features/workerless-shoots.md @@ -5,7 +5,7 @@ weight: 2 ## Controlplane as a Service -![workerless-shoots](./images/workerless-shoots.png) +![workerless-shoots](./images/workerless-shoots.webp) Sometimes, there may be use cases for Kubernetes clusters that don't require pods but only features of the control plane. Gardener can create the so-called "workerless" shoots, which are exactly that. A Kubernetes cluster without nodes (and without any controller related to them). diff --git a/website/documentation/getting-started/images/access-shoot-1.png b/website/documentation/getting-started/images/access-shoot-1.png deleted file mode 100644 index 09ed5476b..000000000 Binary files a/website/documentation/getting-started/images/access-shoot-1.png and /dev/null differ diff --git a/website/documentation/getting-started/images/access-shoot-1.webp b/website/documentation/getting-started/images/access-shoot-1.webp new file mode 100644 index 000000000..f7893843d Binary files /dev/null and b/website/documentation/getting-started/images/access-shoot-1.webp differ diff --git a/website/documentation/getting-started/images/access-shoot-2.png b/website/documentation/getting-started/images/access-shoot-2.png deleted file mode 100644 index 2bfe5752f..000000000 Binary files a/website/documentation/getting-started/images/access-shoot-2.png and /dev/null differ diff --git a/website/documentation/getting-started/images/access-shoot-2.webp b/website/documentation/getting-started/images/access-shoot-2.webp new file mode 100644 index 000000000..927a894d2 Binary files /dev/null and b/website/documentation/getting-started/images/access-shoot-2.webp differ diff --git a/website/documentation/getting-started/images/api-endpoint-1.png b/website/documentation/getting-started/images/api-endpoint-1.png deleted file mode 100644 index 96dd452a6..000000000 Binary files a/website/documentation/getting-started/images/api-endpoint-1.png and /dev/null differ diff --git a/website/documentation/getting-started/images/api-endpoint-1.webp b/website/documentation/getting-started/images/api-endpoint-1.webp new file mode 100644 index 000000000..599270fd0 Binary files /dev/null and b/website/documentation/getting-started/images/api-endpoint-1.webp differ diff --git a/website/documentation/getting-started/images/api-endpoint-2.png b/website/documentation/getting-started/images/api-endpoint-2.png deleted file mode 100644 index bf1176de1..000000000 Binary files a/website/documentation/getting-started/images/api-endpoint-2.png and /dev/null differ diff --git a/website/documentation/getting-started/images/api-endpoint-2.webp b/website/documentation/getting-started/images/api-endpoint-2.webp new file mode 100644 index 000000000..c2ee0c986 Binary files /dev/null and b/website/documentation/getting-started/images/api-endpoint-2.webp differ diff --git a/website/documentation/getting-started/images/api-resources.png b/website/documentation/getting-started/images/api-resources.png deleted file mode 100644 index 4aa42c23f..000000000 Binary files a/website/documentation/getting-started/images/api-resources.png and /dev/null differ diff --git a/website/documentation/getting-started/images/api-resources.webp b/website/documentation/getting-started/images/api-resources.webp new file mode 100644 index 000000000..e4e33d940 Binary files /dev/null and b/website/documentation/getting-started/images/api-resources.webp differ diff --git a/website/documentation/getting-started/images/auto-update.png b/website/documentation/getting-started/images/auto-update.png deleted file mode 100644 index 18d713051..000000000 Binary files a/website/documentation/getting-started/images/auto-update.png and /dev/null differ diff --git a/website/documentation/getting-started/images/auto-update.webp b/website/documentation/getting-started/images/auto-update.webp new file mode 100644 index 000000000..a32942f33 Binary files /dev/null and b/website/documentation/getting-started/images/auto-update.webp differ diff --git a/website/documentation/getting-started/images/available-versions.png b/website/documentation/getting-started/images/available-versions.png deleted file mode 100644 index bf47b63f1..000000000 Binary files a/website/documentation/getting-started/images/available-versions.png and /dev/null differ diff --git a/website/documentation/getting-started/images/available-versions.webp b/website/documentation/getting-started/images/available-versions.webp new file mode 100644 index 000000000..ba8b424e4 Binary files /dev/null and b/website/documentation/getting-started/images/available-versions.webp differ diff --git a/website/documentation/getting-started/images/basic-configurations-1.png b/website/documentation/getting-started/images/basic-configurations-1.png deleted file mode 100644 index 2ffcb0320..000000000 Binary files a/website/documentation/getting-started/images/basic-configurations-1.png and /dev/null differ diff --git a/website/documentation/getting-started/images/basic-configurations-1.webp b/website/documentation/getting-started/images/basic-configurations-1.webp new file mode 100644 index 000000000..bcff2b01d Binary files /dev/null and b/website/documentation/getting-started/images/basic-configurations-1.webp differ diff --git a/website/documentation/getting-started/images/basic-configurations-2.png b/website/documentation/getting-started/images/basic-configurations-2.png deleted file mode 100644 index e8ba793c6..000000000 Binary files a/website/documentation/getting-started/images/basic-configurations-2.png and /dev/null differ diff --git a/website/documentation/getting-started/images/basic-configurations-2.webp b/website/documentation/getting-started/images/basic-configurations-2.webp new file mode 100644 index 000000000..4559dafb0 Binary files /dev/null and b/website/documentation/getting-started/images/basic-configurations-2.webp differ diff --git a/website/documentation/getting-started/images/basic-configurations-3.png b/website/documentation/getting-started/images/basic-configurations-3.png deleted file mode 100644 index c0d4c6283..000000000 Binary files a/website/documentation/getting-started/images/basic-configurations-3.png and /dev/null differ diff --git a/website/documentation/getting-started/images/basic-configurations-3.webp b/website/documentation/getting-started/images/basic-configurations-3.webp new file mode 100644 index 000000000..f3155cbda Binary files /dev/null and b/website/documentation/getting-started/images/basic-configurations-3.webp differ diff --git a/website/documentation/getting-started/images/basic-configurations-4.png b/website/documentation/getting-started/images/basic-configurations-4.png deleted file mode 100644 index 311736ea3..000000000 Binary files a/website/documentation/getting-started/images/basic-configurations-4.png and /dev/null differ diff --git a/website/documentation/getting-started/images/basic-configurations-4.webp b/website/documentation/getting-started/images/basic-configurations-4.webp new file mode 100644 index 000000000..28753c825 Binary files /dev/null and b/website/documentation/getting-started/images/basic-configurations-4.webp differ diff --git a/website/documentation/getting-started/images/capacity.png b/website/documentation/getting-started/images/capacity.png deleted file mode 100644 index b251d11ff..000000000 Binary files a/website/documentation/getting-started/images/capacity.png and /dev/null differ diff --git a/website/documentation/getting-started/images/capacity.webp b/website/documentation/getting-started/images/capacity.webp new file mode 100644 index 000000000..23f8c7c64 Binary files /dev/null and b/website/documentation/getting-started/images/capacity.webp differ diff --git a/website/documentation/getting-started/images/change-impact.png b/website/documentation/getting-started/images/change-impact.png deleted file mode 100644 index f3f14e565..000000000 Binary files a/website/documentation/getting-started/images/change-impact.png and /dev/null differ diff --git a/website/documentation/getting-started/images/change-impact.webp b/website/documentation/getting-started/images/change-impact.webp new file mode 100644 index 000000000..a1397afbb Binary files /dev/null and b/website/documentation/getting-started/images/change-impact.webp differ diff --git a/website/documentation/getting-started/images/change-things.png b/website/documentation/getting-started/images/change-things.png deleted file mode 100644 index ab3b43dac..000000000 Binary files a/website/documentation/getting-started/images/change-things.png and /dev/null differ diff --git a/website/documentation/getting-started/images/change-things.webp b/website/documentation/getting-started/images/change-things.webp new file mode 100644 index 000000000..1ef7c52c5 Binary files /dev/null and b/website/documentation/getting-started/images/change-things.webp differ diff --git a/website/documentation/getting-started/images/cidr-ranges.png b/website/documentation/getting-started/images/cidr-ranges.png deleted file mode 100644 index a9996b6c5..000000000 Binary files a/website/documentation/getting-started/images/cidr-ranges.png and /dev/null differ diff --git a/website/documentation/getting-started/images/cidr-ranges.webp b/website/documentation/getting-started/images/cidr-ranges.webp new file mode 100644 index 000000000..dcda6a244 Binary files /dev/null and b/website/documentation/getting-started/images/cidr-ranges.webp differ diff --git a/website/documentation/getting-started/images/cluster-hierarchy.png b/website/documentation/getting-started/images/cluster-hierarchy.png deleted file mode 100644 index e7bfb0ed6..000000000 Binary files a/website/documentation/getting-started/images/cluster-hierarchy.png and /dev/null differ diff --git a/website/documentation/getting-started/images/cluster-hierarchy.webp b/website/documentation/getting-started/images/cluster-hierarchy.webp new file mode 100644 index 000000000..594496aa8 Binary files /dev/null and b/website/documentation/getting-started/images/cluster-hierarchy.webp differ diff --git a/website/documentation/getting-started/images/components.png b/website/documentation/getting-started/images/components.png deleted file mode 100644 index a5e381f13..000000000 Binary files a/website/documentation/getting-started/images/components.png and /dev/null differ diff --git a/website/documentation/getting-started/images/components.webp b/website/documentation/getting-started/images/components.webp new file mode 100644 index 000000000..ac1c2d799 Binary files /dev/null and b/website/documentation/getting-started/images/components.webp differ diff --git a/website/documentation/getting-started/images/control-plane-components-1.png b/website/documentation/getting-started/images/control-plane-components-1.png deleted file mode 100644 index e965722a9..000000000 Binary files a/website/documentation/getting-started/images/control-plane-components-1.png and /dev/null differ diff --git a/website/documentation/getting-started/images/control-plane-components-1.webp b/website/documentation/getting-started/images/control-plane-components-1.webp new file mode 100644 index 000000000..5650a854a Binary files /dev/null and b/website/documentation/getting-started/images/control-plane-components-1.webp differ diff --git a/website/documentation/getting-started/images/control-plane-components-2.png b/website/documentation/getting-started/images/control-plane-components-2.png deleted file mode 100644 index 34cdf0ee0..000000000 Binary files a/website/documentation/getting-started/images/control-plane-components-2.png and /dev/null differ diff --git a/website/documentation/getting-started/images/control-plane-components-2.webp b/website/documentation/getting-started/images/control-plane-components-2.webp new file mode 100644 index 000000000..9340f209a Binary files /dev/null and b/website/documentation/getting-started/images/control-plane-components-2.webp differ diff --git a/website/documentation/getting-started/images/conversion-webhook-crd.png b/website/documentation/getting-started/images/conversion-webhook-crd.png deleted file mode 100644 index b088a1838..000000000 Binary files a/website/documentation/getting-started/images/conversion-webhook-crd.png and /dev/null differ diff --git a/website/documentation/getting-started/images/conversion-webhook-crd.webp b/website/documentation/getting-started/images/conversion-webhook-crd.webp new file mode 100644 index 000000000..6488a5cfe Binary files /dev/null and b/website/documentation/getting-started/images/conversion-webhook-crd.webp differ diff --git a/website/documentation/getting-started/images/core-components-1.png b/website/documentation/getting-started/images/core-components-1.png deleted file mode 100644 index 8575df1c5..000000000 Binary files a/website/documentation/getting-started/images/core-components-1.png and /dev/null differ diff --git a/website/documentation/getting-started/images/core-components-1.webp b/website/documentation/getting-started/images/core-components-1.webp new file mode 100644 index 000000000..d07fb7f1c Binary files /dev/null and b/website/documentation/getting-started/images/core-components-1.webp differ diff --git a/website/documentation/getting-started/images/core-components-2.png b/website/documentation/getting-started/images/core-components-2.png deleted file mode 100644 index 3e1772726..000000000 Binary files a/website/documentation/getting-started/images/core-components-2.png and /dev/null differ diff --git a/website/documentation/getting-started/images/core-components-2.webp b/website/documentation/getting-started/images/core-components-2.webp new file mode 100644 index 000000000..2fd418d08 Binary files /dev/null and b/website/documentation/getting-started/images/core-components-2.webp differ diff --git a/website/documentation/getting-started/images/dns-records.png b/website/documentation/getting-started/images/dns-records.png deleted file mode 100644 index 891c4088e..000000000 Binary files a/website/documentation/getting-started/images/dns-records.png and /dev/null differ diff --git a/website/documentation/getting-started/images/dns-records.webp b/website/documentation/getting-started/images/dns-records.webp new file mode 100644 index 000000000..32b038730 Binary files /dev/null and b/website/documentation/getting-started/images/dns-records.webp differ diff --git a/website/documentation/getting-started/images/expired-credentials.png b/website/documentation/getting-started/images/expired-credentials.png deleted file mode 100644 index 74420fae0..000000000 Binary files a/website/documentation/getting-started/images/expired-credentials.png and /dev/null differ diff --git a/website/documentation/getting-started/images/expired-credentials.webp b/website/documentation/getting-started/images/expired-credentials.webp new file mode 100644 index 000000000..c8fa56eb7 Binary files /dev/null and b/website/documentation/getting-started/images/expired-credentials.webp differ diff --git a/website/documentation/getting-started/images/features-observability.png b/website/documentation/getting-started/images/features-observability.png deleted file mode 100644 index 4d4405fdc..000000000 Binary files a/website/documentation/getting-started/images/features-observability.png and /dev/null differ diff --git a/website/documentation/getting-started/images/features-observability.webp b/website/documentation/getting-started/images/features-observability.webp new file mode 100644 index 000000000..06aa779a2 Binary files /dev/null and b/website/documentation/getting-started/images/features-observability.webp differ diff --git a/website/documentation/getting-started/images/gardener-specific-components.png b/website/documentation/getting-started/images/gardener-specific-components.png deleted file mode 100644 index 26a9fe4cc..000000000 Binary files a/website/documentation/getting-started/images/gardener-specific-components.png and /dev/null differ diff --git a/website/documentation/getting-started/images/gardener-specific-components.webp b/website/documentation/getting-started/images/gardener-specific-components.webp new file mode 100644 index 000000000..8d5ac6f5c Binary files /dev/null and b/website/documentation/getting-started/images/gardener-specific-components.webp differ diff --git a/website/documentation/getting-started/images/ha-control-plane.png b/website/documentation/getting-started/images/ha-control-plane.png deleted file mode 100644 index 09816e0b5..000000000 Binary files a/website/documentation/getting-started/images/ha-control-plane.png and /dev/null differ diff --git a/website/documentation/getting-started/images/ha-control-plane.webp b/website/documentation/getting-started/images/ha-control-plane.webp new file mode 100644 index 000000000..c89cce152 Binary files /dev/null and b/website/documentation/getting-started/images/ha-control-plane.webp differ diff --git a/website/documentation/getting-started/images/hibernation-1.png b/website/documentation/getting-started/images/hibernation-1.png deleted file mode 100644 index f35205c97..000000000 Binary files a/website/documentation/getting-started/images/hibernation-1.png and /dev/null differ diff --git a/website/documentation/getting-started/images/hibernation-1.webp b/website/documentation/getting-started/images/hibernation-1.webp new file mode 100644 index 000000000..f66f48adc Binary files /dev/null and b/website/documentation/getting-started/images/hibernation-1.webp differ diff --git a/website/documentation/getting-started/images/k8s-cluster.png b/website/documentation/getting-started/images/k8s-cluster.png deleted file mode 100644 index 7c89d92d1..000000000 Binary files a/website/documentation/getting-started/images/k8s-cluster.png and /dev/null differ diff --git a/website/documentation/getting-started/images/k8s-cluster.webp b/website/documentation/getting-started/images/k8s-cluster.webp new file mode 100644 index 000000000..6970959ed Binary files /dev/null and b/website/documentation/getting-started/images/k8s-cluster.webp differ diff --git a/website/documentation/getting-started/images/k8s-version-update.png b/website/documentation/getting-started/images/k8s-version-update.png deleted file mode 100644 index a815c2718..000000000 Binary files a/website/documentation/getting-started/images/k8s-version-update.png and /dev/null differ diff --git a/website/documentation/getting-started/images/k8s-version-update.webp b/website/documentation/getting-started/images/k8s-version-update.webp new file mode 100644 index 000000000..de0862ad2 Binary files /dev/null and b/website/documentation/getting-started/images/k8s-version-update.webp differ diff --git a/website/documentation/getting-started/images/kube-system-namespace-1.png b/website/documentation/getting-started/images/kube-system-namespace-1.png deleted file mode 100644 index a87b63244..000000000 Binary files a/website/documentation/getting-started/images/kube-system-namespace-1.png and /dev/null differ diff --git a/website/documentation/getting-started/images/kube-system-namespace-1.webp b/website/documentation/getting-started/images/kube-system-namespace-1.webp new file mode 100644 index 000000000..8dd502eb7 Binary files /dev/null and b/website/documentation/getting-started/images/kube-system-namespace-1.webp differ diff --git a/website/documentation/getting-started/images/kube-system-namespace-2.png b/website/documentation/getting-started/images/kube-system-namespace-2.png deleted file mode 100644 index 5b2a12ebb..000000000 Binary files a/website/documentation/getting-started/images/kube-system-namespace-2.png and /dev/null differ diff --git a/website/documentation/getting-started/images/kube-system-namespace-2.webp b/website/documentation/getting-started/images/kube-system-namespace-2.webp new file mode 100644 index 000000000..1fa4f8f50 Binary files /dev/null and b/website/documentation/getting-started/images/kube-system-namespace-2.webp differ diff --git a/website/documentation/getting-started/images/kube-system-namespace-3.png b/website/documentation/getting-started/images/kube-system-namespace-3.png deleted file mode 100644 index d90e17cea..000000000 Binary files a/website/documentation/getting-started/images/kube-system-namespace-3.png and /dev/null differ diff --git a/website/documentation/getting-started/images/kube-system-namespace-3.webp b/website/documentation/getting-started/images/kube-system-namespace-3.webp new file mode 100644 index 000000000..f698970ac Binary files /dev/null and b/website/documentation/getting-started/images/kube-system-namespace-3.webp differ diff --git a/website/documentation/getting-started/images/kube-system-namespace-4.png b/website/documentation/getting-started/images/kube-system-namespace-4.png deleted file mode 100644 index 2a78136c7..000000000 Binary files a/website/documentation/getting-started/images/kube-system-namespace-4.png and /dev/null differ diff --git a/website/documentation/getting-started/images/kube-system-namespace-4.webp b/website/documentation/getting-started/images/kube-system-namespace-4.webp new file mode 100644 index 000000000..012fa3006 Binary files /dev/null and b/website/documentation/getting-started/images/kube-system-namespace-4.webp differ diff --git a/website/documentation/getting-started/images/kube-system-namespace-5.png b/website/documentation/getting-started/images/kube-system-namespace-5.png deleted file mode 100644 index 57674bb63..000000000 Binary files a/website/documentation/getting-started/images/kube-system-namespace-5.png and /dev/null differ diff --git a/website/documentation/getting-started/images/kube-system-namespace-5.webp b/website/documentation/getting-started/images/kube-system-namespace-5.webp new file mode 100644 index 000000000..0456774ef Binary files /dev/null and b/website/documentation/getting-started/images/kube-system-namespace-5.webp differ diff --git a/website/documentation/getting-started/images/kube-system-namespace-6.png b/website/documentation/getting-started/images/kube-system-namespace-6.png deleted file mode 100644 index 71f7e0419..000000000 Binary files a/website/documentation/getting-started/images/kube-system-namespace-6.png and /dev/null differ diff --git a/website/documentation/getting-started/images/kube-system-namespace-6.webp b/website/documentation/getting-started/images/kube-system-namespace-6.webp new file mode 100644 index 000000000..7dd6f3c64 Binary files /dev/null and b/website/documentation/getting-started/images/kube-system-namespace-6.webp differ diff --git a/website/documentation/getting-started/images/kube-system-namespace.png b/website/documentation/getting-started/images/kube-system-namespace.png deleted file mode 100644 index 810082deb..000000000 Binary files a/website/documentation/getting-started/images/kube-system-namespace.png and /dev/null differ diff --git a/website/documentation/getting-started/images/kube-system-namespace.webp b/website/documentation/getting-started/images/kube-system-namespace.webp new file mode 100644 index 000000000..54e65ebf5 Binary files /dev/null and b/website/documentation/getting-started/images/kube-system-namespace.webp differ diff --git a/website/documentation/getting-started/images/kubeception.png b/website/documentation/getting-started/images/kubeception.png deleted file mode 100644 index 590bfea15..000000000 Binary files a/website/documentation/getting-started/images/kubeception.png and /dev/null differ diff --git a/website/documentation/getting-started/images/kubeception.webp b/website/documentation/getting-started/images/kubeception.webp new file mode 100644 index 000000000..7481d1932 Binary files /dev/null and b/website/documentation/getting-started/images/kubeception.webp differ diff --git a/website/documentation/getting-started/images/machines.png b/website/documentation/getting-started/images/machines.png deleted file mode 100644 index 56071486e..000000000 Binary files a/website/documentation/getting-started/images/machines.png and /dev/null differ diff --git a/website/documentation/getting-started/images/machines.webp b/website/documentation/getting-started/images/machines.webp new file mode 100644 index 000000000..7f0728700 Binary files /dev/null and b/website/documentation/getting-started/images/machines.webp differ diff --git a/website/documentation/getting-started/images/maintenance-window.png b/website/documentation/getting-started/images/maintenance-window.png deleted file mode 100644 index 610e92445..000000000 Binary files a/website/documentation/getting-started/images/maintenance-window.png and /dev/null differ diff --git a/website/documentation/getting-started/images/maintenance-window.webp b/website/documentation/getting-started/images/maintenance-window.webp new file mode 100644 index 000000000..2a72faa60 Binary files /dev/null and b/website/documentation/getting-started/images/maintenance-window.webp differ diff --git a/website/documentation/getting-started/images/managed-resources.png b/website/documentation/getting-started/images/managed-resources.png deleted file mode 100644 index 948fb45b0..000000000 Binary files a/website/documentation/getting-started/images/managed-resources.png and /dev/null differ diff --git a/website/documentation/getting-started/images/managed-resources.webp b/website/documentation/getting-started/images/managed-resources.webp new file mode 100644 index 000000000..e177c9c9e Binary files /dev/null and b/website/documentation/getting-started/images/managed-resources.webp differ diff --git a/website/documentation/getting-started/images/mask-size.png b/website/documentation/getting-started/images/mask-size.png deleted file mode 100644 index c16f33247..000000000 Binary files a/website/documentation/getting-started/images/mask-size.png and /dev/null differ diff --git a/website/documentation/getting-started/images/mask-size.webp b/website/documentation/getting-started/images/mask-size.webp new file mode 100644 index 000000000..8e8177a9d Binary files /dev/null and b/website/documentation/getting-started/images/mask-size.webp differ diff --git a/website/documentation/getting-started/images/microservices.png b/website/documentation/getting-started/images/microservices.png deleted file mode 100644 index b2e2fb93f..000000000 Binary files a/website/documentation/getting-started/images/microservices.png and /dev/null differ diff --git a/website/documentation/getting-started/images/microservices.webp b/website/documentation/getting-started/images/microservices.webp new file mode 100644 index 000000000..9d81d6030 Binary files /dev/null and b/website/documentation/getting-started/images/microservices.webp differ diff --git a/website/documentation/getting-started/images/operating-apps.png b/website/documentation/getting-started/images/operating-apps.png deleted file mode 100644 index 314b8af6b..000000000 Binary files a/website/documentation/getting-started/images/operating-apps.png and /dev/null differ diff --git a/website/documentation/getting-started/images/operating-apps.webp b/website/documentation/getting-started/images/operating-apps.webp new file mode 100644 index 000000000..14a2949cd Binary files /dev/null and b/website/documentation/getting-started/images/operating-apps.webp differ diff --git a/website/documentation/getting-started/images/os-update.png b/website/documentation/getting-started/images/os-update.png deleted file mode 100644 index f1ac3ecbb..000000000 Binary files a/website/documentation/getting-started/images/os-update.png and /dev/null differ diff --git a/website/documentation/getting-started/images/os-update.webp b/website/documentation/getting-started/images/os-update.webp new file mode 100644 index 000000000..9ca229d5a Binary files /dev/null and b/website/documentation/getting-started/images/os-update.webp differ diff --git a/website/documentation/getting-started/images/overview.png b/website/documentation/getting-started/images/overview.png deleted file mode 100644 index 3aae2d234..000000000 Binary files a/website/documentation/getting-started/images/overview.png and /dev/null differ diff --git a/website/documentation/getting-started/images/overview.webp b/website/documentation/getting-started/images/overview.webp new file mode 100644 index 000000000..7de989a07 Binary files /dev/null and b/website/documentation/getting-started/images/overview.webp differ diff --git a/website/documentation/getting-started/images/podrick/icon_beaver_infra.png b/website/documentation/getting-started/images/podrick/icon_beaver_infra.png deleted file mode 100644 index c2d75e366..000000000 Binary files a/website/documentation/getting-started/images/podrick/icon_beaver_infra.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/icon_beaver_infra.webp b/website/documentation/getting-started/images/podrick/icon_beaver_infra.webp new file mode 100644 index 000000000..de3b49250 Binary files /dev/null and b/website/documentation/getting-started/images/podrick/icon_beaver_infra.webp differ diff --git a/website/documentation/getting-started/images/podrick/icon_beaver_mcm.png b/website/documentation/getting-started/images/podrick/icon_beaver_mcm.png deleted file mode 100644 index 073675cfc..000000000 Binary files a/website/documentation/getting-started/images/podrick/icon_beaver_mcm.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/icon_beaver_mcm.webp b/website/documentation/getting-started/images/podrick/icon_beaver_mcm.webp new file mode 100644 index 000000000..74cf4a023 Binary files /dev/null and b/website/documentation/getting-started/images/podrick/icon_beaver_mcm.webp differ diff --git a/website/documentation/getting-started/images/podrick/icon_beehive.png b/website/documentation/getting-started/images/podrick/icon_beehive.png deleted file mode 100644 index 401877678..000000000 Binary files a/website/documentation/getting-started/images/podrick/icon_beehive.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/icon_beehive.webp b/website/documentation/getting-started/images/podrick/icon_beehive.webp new file mode 100644 index 000000000..b9507baed Binary files /dev/null and b/website/documentation/getting-started/images/podrick/icon_beehive.webp differ diff --git a/website/documentation/getting-started/images/podrick/icon_day2_operations.png b/website/documentation/getting-started/images/podrick/icon_day2_operations.png deleted file mode 100644 index f9faf3c36..000000000 Binary files a/website/documentation/getting-started/images/podrick/icon_day2_operations.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/icon_day2_operations.webp b/website/documentation/getting-started/images/podrick/icon_day2_operations.webp new file mode 100644 index 000000000..d361eb1bd Binary files /dev/null and b/website/documentation/getting-started/images/podrick/icon_day2_operations.webp differ diff --git a/website/documentation/getting-started/images/podrick/icon_gilly_no_background.png b/website/documentation/getting-started/images/podrick/icon_gilly_no_background.png deleted file mode 100644 index ff7c40b5b..000000000 Binary files a/website/documentation/getting-started/images/podrick/icon_gilly_no_background.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/icon_gilly_no_background.webp b/website/documentation/getting-started/images/podrick/icon_gilly_no_background.webp new file mode 100644 index 000000000..1b0045dd3 Binary files /dev/null and b/website/documentation/getting-started/images/podrick/icon_gilly_no_background.webp differ diff --git a/website/documentation/getting-started/images/podrick/icon_gilly_scaling.png b/website/documentation/getting-started/images/podrick/icon_gilly_scaling.png deleted file mode 100644 index c71c80dca..000000000 Binary files a/website/documentation/getting-started/images/podrick/icon_gilly_scaling.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/icon_gilly_scaling.webp b/website/documentation/getting-started/images/podrick/icon_gilly_scaling.webp new file mode 100644 index 000000000..765d73982 Binary files /dev/null and b/website/documentation/getting-started/images/podrick/icon_gilly_scaling.webp differ diff --git a/website/documentation/getting-started/images/podrick/icon_library_outside.png b/website/documentation/getting-started/images/podrick/icon_library_outside.png deleted file mode 100644 index fb6d006a0..000000000 Binary files a/website/documentation/getting-started/images/podrick/icon_library_outside.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/icon_library_outside.webp b/website/documentation/getting-started/images/podrick/icon_library_outside.webp new file mode 100644 index 000000000..27473e0cd Binary files /dev/null and b/website/documentation/getting-started/images/podrick/icon_library_outside.webp differ diff --git a/website/documentation/getting-started/images/podrick/icon_nursery.png b/website/documentation/getting-started/images/podrick/icon_nursery.png deleted file mode 100644 index 28149f045..000000000 Binary files a/website/documentation/getting-started/images/podrick/icon_nursery.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/icon_nursery.webp b/website/documentation/getting-started/images/podrick/icon_nursery.webp new file mode 100644 index 000000000..ab489fbcd Binary files /dev/null and b/website/documentation/getting-started/images/podrick/icon_nursery.webp differ diff --git a/website/documentation/getting-started/images/podrick/icon_plot.png b/website/documentation/getting-started/images/podrick/icon_plot.png deleted file mode 100644 index a6279b362..000000000 Binary files a/website/documentation/getting-started/images/podrick/icon_plot.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/icon_plot.webp b/website/documentation/getting-started/images/podrick/icon_plot.webp new file mode 100644 index 000000000..e5a448f9e Binary files /dev/null and b/website/documentation/getting-started/images/podrick/icon_plot.webp differ diff --git a/website/documentation/getting-started/images/podrick/icon_raccoon.png b/website/documentation/getting-started/images/podrick/icon_raccoon.png deleted file mode 100644 index c197e28e6..000000000 Binary files a/website/documentation/getting-started/images/podrick/icon_raccoon.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/icon_raccoon.webp b/website/documentation/getting-started/images/podrick/icon_raccoon.webp new file mode 100644 index 000000000..1ec4f321c Binary files /dev/null and b/website/documentation/getting-started/images/podrick/icon_raccoon.webp differ diff --git a/website/documentation/getting-started/images/podrick/icon_scrolls.png b/website/documentation/getting-started/images/podrick/icon_scrolls.png deleted file mode 100644 index 20361b6b7..000000000 Binary files a/website/documentation/getting-started/images/podrick/icon_scrolls.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/icon_scrolls.webp b/website/documentation/getting-started/images/podrick/icon_scrolls.webp new file mode 100644 index 000000000..b30feddca Binary files /dev/null and b/website/documentation/getting-started/images/podrick/icon_scrolls.webp differ diff --git a/website/documentation/getting-started/images/podrick/podrick_no_logo.png b/website/documentation/getting-started/images/podrick/podrick_no_logo.png deleted file mode 100644 index f4cc6048c..000000000 Binary files a/website/documentation/getting-started/images/podrick/podrick_no_logo.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/podrick_no_logo.webp b/website/documentation/getting-started/images/podrick/podrick_no_logo.webp new file mode 100644 index 000000000..d68e7b62c Binary files /dev/null and b/website/documentation/getting-started/images/podrick/podrick_no_logo.webp differ diff --git a/website/documentation/getting-started/images/podrick/scene-0.png b/website/documentation/getting-started/images/podrick/scene-0.png deleted file mode 100644 index 16bc090d5..000000000 Binary files a/website/documentation/getting-started/images/podrick/scene-0.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/scene-0.webp b/website/documentation/getting-started/images/podrick/scene-0.webp new file mode 100644 index 000000000..193247c5b Binary files /dev/null and b/website/documentation/getting-started/images/podrick/scene-0.webp differ diff --git a/website/documentation/getting-started/images/podrick/scene-1.png b/website/documentation/getting-started/images/podrick/scene-1.png deleted file mode 100644 index f4f5971b7..000000000 Binary files a/website/documentation/getting-started/images/podrick/scene-1.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/scene-1.webp b/website/documentation/getting-started/images/podrick/scene-1.webp new file mode 100644 index 000000000..2329e5867 Binary files /dev/null and b/website/documentation/getting-started/images/podrick/scene-1.webp differ diff --git a/website/documentation/getting-started/images/podrick/scene-10.png b/website/documentation/getting-started/images/podrick/scene-10.png deleted file mode 100644 index 0ee5c964f..000000000 Binary files a/website/documentation/getting-started/images/podrick/scene-10.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/scene-10.webp b/website/documentation/getting-started/images/podrick/scene-10.webp new file mode 100644 index 000000000..bd95215da Binary files /dev/null and b/website/documentation/getting-started/images/podrick/scene-10.webp differ diff --git a/website/documentation/getting-started/images/podrick/scene-11.png b/website/documentation/getting-started/images/podrick/scene-11.png deleted file mode 100644 index 3cd73f4c0..000000000 Binary files a/website/documentation/getting-started/images/podrick/scene-11.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/scene-11.webp b/website/documentation/getting-started/images/podrick/scene-11.webp new file mode 100644 index 000000000..6e3c91135 Binary files /dev/null and b/website/documentation/getting-started/images/podrick/scene-11.webp differ diff --git a/website/documentation/getting-started/images/podrick/scene-12.png b/website/documentation/getting-started/images/podrick/scene-12.png deleted file mode 100644 index a26d351ac..000000000 Binary files a/website/documentation/getting-started/images/podrick/scene-12.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/scene-12.webp b/website/documentation/getting-started/images/podrick/scene-12.webp new file mode 100644 index 000000000..1171b4bef Binary files /dev/null and b/website/documentation/getting-started/images/podrick/scene-12.webp differ diff --git a/website/documentation/getting-started/images/podrick/scene-2.png b/website/documentation/getting-started/images/podrick/scene-2.png deleted file mode 100644 index 420c6652b..000000000 Binary files a/website/documentation/getting-started/images/podrick/scene-2.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/scene-2.webp b/website/documentation/getting-started/images/podrick/scene-2.webp new file mode 100644 index 000000000..2cf385624 Binary files /dev/null and b/website/documentation/getting-started/images/podrick/scene-2.webp differ diff --git a/website/documentation/getting-started/images/podrick/scene-3.png b/website/documentation/getting-started/images/podrick/scene-3.png deleted file mode 100644 index 355053e6c..000000000 Binary files a/website/documentation/getting-started/images/podrick/scene-3.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/scene-3.webp b/website/documentation/getting-started/images/podrick/scene-3.webp new file mode 100644 index 000000000..fc93c1190 Binary files /dev/null and b/website/documentation/getting-started/images/podrick/scene-3.webp differ diff --git a/website/documentation/getting-started/images/podrick/scene-4.png b/website/documentation/getting-started/images/podrick/scene-4.png deleted file mode 100644 index 2c8bdbc89..000000000 Binary files a/website/documentation/getting-started/images/podrick/scene-4.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/scene-4.webp b/website/documentation/getting-started/images/podrick/scene-4.webp new file mode 100644 index 000000000..f8fb132b2 Binary files /dev/null and b/website/documentation/getting-started/images/podrick/scene-4.webp differ diff --git a/website/documentation/getting-started/images/podrick/scene-5.png b/website/documentation/getting-started/images/podrick/scene-5.png deleted file mode 100644 index 28eb2d8ac..000000000 Binary files a/website/documentation/getting-started/images/podrick/scene-5.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/scene-5.webp b/website/documentation/getting-started/images/podrick/scene-5.webp new file mode 100644 index 000000000..665ddf920 Binary files /dev/null and b/website/documentation/getting-started/images/podrick/scene-5.webp differ diff --git a/website/documentation/getting-started/images/podrick/scene-6.png b/website/documentation/getting-started/images/podrick/scene-6.png deleted file mode 100644 index fb06a9032..000000000 Binary files a/website/documentation/getting-started/images/podrick/scene-6.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/scene-6.webp b/website/documentation/getting-started/images/podrick/scene-6.webp new file mode 100644 index 000000000..789ac0ae6 Binary files /dev/null and b/website/documentation/getting-started/images/podrick/scene-6.webp differ diff --git a/website/documentation/getting-started/images/podrick/scene-7.png b/website/documentation/getting-started/images/podrick/scene-7.png deleted file mode 100644 index 41cdc04bd..000000000 Binary files a/website/documentation/getting-started/images/podrick/scene-7.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/scene-7.webp b/website/documentation/getting-started/images/podrick/scene-7.webp new file mode 100644 index 000000000..674abb9bf Binary files /dev/null and b/website/documentation/getting-started/images/podrick/scene-7.webp differ diff --git a/website/documentation/getting-started/images/podrick/scene-8.png b/website/documentation/getting-started/images/podrick/scene-8.png deleted file mode 100644 index 9ad6eb1b9..000000000 Binary files a/website/documentation/getting-started/images/podrick/scene-8.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/scene-8.webp b/website/documentation/getting-started/images/podrick/scene-8.webp new file mode 100644 index 000000000..804086247 Binary files /dev/null and b/website/documentation/getting-started/images/podrick/scene-8.webp differ diff --git a/website/documentation/getting-started/images/podrick/scene-9.png b/website/documentation/getting-started/images/podrick/scene-9.png deleted file mode 100644 index 3b82bc778..000000000 Binary files a/website/documentation/getting-started/images/podrick/scene-9.png and /dev/null differ diff --git a/website/documentation/getting-started/images/podrick/scene-9.webp b/website/documentation/getting-started/images/podrick/scene-9.webp new file mode 100644 index 000000000..52b749b7a Binary files /dev/null and b/website/documentation/getting-started/images/podrick/scene-9.webp differ diff --git a/website/documentation/getting-started/images/secret-binding.png b/website/documentation/getting-started/images/secret-binding.png deleted file mode 100644 index 7c5a94de7..000000000 Binary files a/website/documentation/getting-started/images/secret-binding.png and /dev/null differ diff --git a/website/documentation/getting-started/images/secret-binding.webp b/website/documentation/getting-started/images/secret-binding.webp new file mode 100644 index 000000000..03b1ab274 Binary files /dev/null and b/website/documentation/getting-started/images/secret-binding.webp differ diff --git a/website/documentation/getting-started/images/secret.png b/website/documentation/getting-started/images/secret.png deleted file mode 100644 index d265862ec..000000000 Binary files a/website/documentation/getting-started/images/secret.png and /dev/null differ diff --git a/website/documentation/getting-started/images/secret.webp b/website/documentation/getting-started/images/secret.webp new file mode 100644 index 000000000..74173f51e Binary files /dev/null and b/website/documentation/getting-started/images/secret.webp differ diff --git a/website/documentation/getting-started/images/secretbindings.png b/website/documentation/getting-started/images/secretbindings.png deleted file mode 100644 index d90d9a3f5..000000000 Binary files a/website/documentation/getting-started/images/secretbindings.png and /dev/null differ diff --git a/website/documentation/getting-started/images/secretbindings.webp b/website/documentation/getting-started/images/secretbindings.webp new file mode 100644 index 000000000..685e9d76b Binary files /dev/null and b/website/documentation/getting-started/images/secretbindings.webp differ diff --git a/website/documentation/getting-started/images/seeds-change.png b/website/documentation/getting-started/images/seeds-change.png deleted file mode 100644 index 33627737b..000000000 Binary files a/website/documentation/getting-started/images/seeds-change.png and /dev/null differ diff --git a/website/documentation/getting-started/images/seeds-change.webp b/website/documentation/getting-started/images/seeds-change.webp new file mode 100644 index 000000000..f0568fdf3 Binary files /dev/null and b/website/documentation/getting-started/images/seeds-change.webp differ diff --git a/website/documentation/getting-started/images/service-account.png b/website/documentation/getting-started/images/service-account.png deleted file mode 100644 index c0d362e65..000000000 Binary files a/website/documentation/getting-started/images/service-account.png and /dev/null differ diff --git a/website/documentation/getting-started/images/service-account.webp b/website/documentation/getting-started/images/service-account.webp new file mode 100644 index 000000000..bcdecff1b Binary files /dev/null and b/website/documentation/getting-started/images/service-account.webp differ diff --git a/website/documentation/getting-started/images/timeout.png b/website/documentation/getting-started/images/timeout.png deleted file mode 100644 index 4d9c7c7a3..000000000 Binary files a/website/documentation/getting-started/images/timeout.png and /dev/null differ diff --git a/website/documentation/getting-started/images/timeout.webp b/website/documentation/getting-started/images/timeout.webp new file mode 100644 index 000000000..9555fd167 Binary files /dev/null and b/website/documentation/getting-started/images/timeout.webp differ diff --git a/website/documentation/getting-started/images/universal-kubernetes.png b/website/documentation/getting-started/images/universal-kubernetes.png deleted file mode 100644 index 45d0716a3..000000000 Binary files a/website/documentation/getting-started/images/universal-kubernetes.png and /dev/null differ diff --git a/website/documentation/getting-started/images/universal-kubernetes.webp b/website/documentation/getting-started/images/universal-kubernetes.webp new file mode 100644 index 000000000..0acc3a42f Binary files /dev/null and b/website/documentation/getting-started/images/universal-kubernetes.webp differ diff --git a/website/documentation/getting-started/images/update-shoot-state.png b/website/documentation/getting-started/images/update-shoot-state.png deleted file mode 100644 index afedf8d1b..000000000 Binary files a/website/documentation/getting-started/images/update-shoot-state.png and /dev/null differ diff --git a/website/documentation/getting-started/images/update-shoot-state.webp b/website/documentation/getting-started/images/update-shoot-state.webp new file mode 100644 index 000000000..79e81c4a9 Binary files /dev/null and b/website/documentation/getting-started/images/update-shoot-state.webp differ diff --git a/website/documentation/getting-started/images/version-classifications.png b/website/documentation/getting-started/images/version-classifications.png deleted file mode 100644 index 295b6d377..000000000 Binary files a/website/documentation/getting-started/images/version-classifications.png and /dev/null differ diff --git a/website/documentation/getting-started/images/version-classifications.webp b/website/documentation/getting-started/images/version-classifications.webp new file mode 100644 index 000000000..c7d355d2b Binary files /dev/null and b/website/documentation/getting-started/images/version-classifications.webp differ diff --git a/website/documentation/getting-started/images/worker-pools-1.png b/website/documentation/getting-started/images/worker-pools-1.png deleted file mode 100644 index 8b5c862a0..000000000 Binary files a/website/documentation/getting-started/images/worker-pools-1.png and /dev/null differ diff --git a/website/documentation/getting-started/images/worker-pools-1.webp b/website/documentation/getting-started/images/worker-pools-1.webp new file mode 100644 index 000000000..0881a0636 Binary files /dev/null and b/website/documentation/getting-started/images/worker-pools-1.webp differ diff --git a/website/documentation/getting-started/images/worker-pools-2.png b/website/documentation/getting-started/images/worker-pools-2.png deleted file mode 100644 index 72bfa5131..000000000 Binary files a/website/documentation/getting-started/images/worker-pools-2.png and /dev/null differ diff --git a/website/documentation/getting-started/images/worker-pools-2.webp b/website/documentation/getting-started/images/worker-pools-2.webp new file mode 100644 index 000000000..23dee30f5 Binary files /dev/null and b/website/documentation/getting-started/images/worker-pools-2.webp differ diff --git a/website/documentation/getting-started/images/yaml-level.png b/website/documentation/getting-started/images/yaml-level.png deleted file mode 100644 index 64fe34ec9..000000000 Binary files a/website/documentation/getting-started/images/yaml-level.png and /dev/null differ diff --git a/website/documentation/getting-started/images/yaml-level.webp b/website/documentation/getting-started/images/yaml-level.webp new file mode 100644 index 000000000..d0990aab8 Binary files /dev/null and b/website/documentation/getting-started/images/yaml-level.webp differ diff --git a/website/documentation/getting-started/images/zonal-ha-control-planes.png b/website/documentation/getting-started/images/zonal-ha-control-planes.png deleted file mode 100644 index dae14ac91..000000000 Binary files a/website/documentation/getting-started/images/zonal-ha-control-planes.png and /dev/null differ diff --git a/website/documentation/getting-started/images/zonal-ha-control-planes.webp b/website/documentation/getting-started/images/zonal-ha-control-planes.webp new file mode 100644 index 000000000..1e00a62fb Binary files /dev/null and b/website/documentation/getting-started/images/zonal-ha-control-planes.webp differ diff --git a/website/documentation/getting-started/introduction.md b/website/documentation/getting-started/introduction.md index fffdf9850..db6985565 100644 --- a/website/documentation/getting-started/introduction.md +++ b/website/documentation/getting-started/introduction.md @@ -43,7 +43,7 @@ Containers (famously brought to the mainstream as "Docker") and Kubernetes are t ## Solution Space 2 - Gardener -![operating-apps](./images/operating-apps.png) +![operating-apps](./images/operating-apps.webp) So, Kubernetes solves a lot of problems. But how do you get a Kubernetes cluster? @@ -62,7 +62,7 @@ Of course, there are plenty more reasons - from acquiring operational knowledge ## What exactly is Gardener? -![universal-kubernetes](./images/universal-kubernetes.png) +![universal-kubernetes](./images/universal-kubernetes.webp) Gardener is a system to manage Kubernetes clusters. It is driven by the same "desired state" pattern as Kubernetes itself. In fact, it is using Kubernetes to run Kubernetes. diff --git a/website/documentation/getting-started/lifecycle.md b/website/documentation/getting-started/lifecycle.md index ccbca1ac3..63f29f12e 100644 --- a/website/documentation/getting-started/lifecycle.md +++ b/website/documentation/getting-started/lifecycle.md @@ -19,13 +19,13 @@ Based on the shoot's specifications, Gardener will create network resources on a If you change the desired state, Gardener will reconcile the shoot and run through the same cycle to ensure the actual state matches the desired state. -![update-shoot-state](./images/update-shoot-state.png) +![update-shoot-state](./images/update-shoot-state.webp) For example, the (infrastructure-specific) machine type can be changed within the shoot resource. The following reconciliation will pick up the change and initiate the creation of new nodes with a different machine type and the removal of the old nodes. ## Maintenance Window and Daily Reconciliation -![maintenance-window](./images/maintenance-window.png) +![maintenance-window](./images/maintenance-window.webp) EVERY shoot cluster reconciles once per day during the so-called "maintenance window". You can confine the rollout of spec changes to this window. @@ -33,7 +33,7 @@ Additionally, the daily reconciliation will help pick up all kind of version cha ## Impact of a Change -![change-impact](./images/change-impact.png) +![change-impact](./images/change-impact.webp) It is important to be aware of the impacts that a change can have on a cluster and the workloads within it. @@ -43,7 +43,7 @@ When you change the shoot spec, it can also have significant impact on the clust ## Kubernetes Version Update (Minor + Patch) -![k8s-version-update](./images/k8s-version-update.png) +![k8s-version-update](./images/k8s-version-update.webp) Some operations are rather common and have to be performed on a regular basis. Updating the Kubernetes version is one them. Patch updates cause relatively little disruption, as only the control-plane pods will be re-created with new images and the kubelets on all nodes will restart. @@ -51,14 +51,14 @@ A minor version update is more impactful - it will cause all nodes to be recreat ## OS Version Update -![os-update](./images/os-update.png) +![os-update](./images/os-update.webp) The OS version is defined for each worker pool and can be changed per worker pool. You can freely switch back and forth. However, as there is no in-place update, each change will cause the entire worker pool to roll and nodes will be replaced. For OS versions different update strategies can be configured. Please check the [documentation](https://github.com/gardener/gardener/blob/master/docs/usage/shoot-operations/shoot_versions.md#update-path-for-machine-image-versions) for details. ## Available Versions​ -available-versions +available-versions Gardener has a dedicated resource to maintain a list of available versions – the so-called `cloudProfile`. @@ -73,7 +73,7 @@ Each shoot references a cloudProfile in order to obtain information about availa ## Version Classifications -![version-classifications](./images/version-classifications.png) +![version-classifications](./images/version-classifications.webp) Gardener has the following classifications for Kubernetes and OS image versions: @@ -89,7 +89,7 @@ Version information is maintained in the relevant cloud profile resource. There ## AutoUpdate / Forced Updates -![auto-update](./images/auto-update.png) +![auto-update](./images/auto-update.webp) AutoUpdate for a machine image version will update all node pools to the latest supported version based on the defined update strategy. Whenever a new version is set to `supported`, the cluster will pick it up during its next maintenance window. @@ -101,7 +101,7 @@ For more information, see [Shoot Kubernetes and Operating System Versioning in G ## Applying Changes to a Seed -![seeds-change](./images/seeds-change.png) +![seeds-change](./images/seeds-change.webp) It is important to keep in mind that a seed is just another Kubernetes cluster. As such, it has its own lifecycle (daily reconciliation, maintenance, etc.) and is also a subject to change. diff --git a/website/documentation/getting-started/observability/alerts.md b/website/documentation/getting-started/observability/alerts.md index 6d0b461ce..7a69b16ed 100644 --- a/website/documentation/getting-started/observability/alerts.md +++ b/website/documentation/getting-started/observability/alerts.md @@ -32,4 +32,4 @@ Then you can use federation, which is a Prometheus feature, to forward the metri The credentials and endpoint for the Gardener managed Prometheus are exposed over the Gardener dashboard or programmatically in the garden project as a secret (`.monitoring`). -![custom-alerts](./images/custom-alerts.png) +![custom-alerts](./images/custom-alerts.webp) diff --git a/website/documentation/getting-started/observability/components.md b/website/documentation/getting-started/observability/components.md index 5954fa765..3d1a6d5c8 100644 --- a/website/documentation/getting-started/observability/components.md +++ b/website/documentation/getting-started/observability/components.md @@ -5,7 +5,7 @@ weight: 1 ## Core Components -![core-components](./images/core-components.png) +![core-components](./images/core-components.webp) The core Observability components which Gardener offers out-of-the-box are: @@ -17,7 +17,7 @@ Both forks are done from the last version with an Apache license. ### Control Plane Components on the Seed -![control-plane-components](./images/control-plane-components.png) +![control-plane-components](./images/control-plane-components.webp) Prometheus, Plutono, and Vali are all located in the seed cluster. They run next to the control plane of your cluster. @@ -35,7 +35,7 @@ Let us start by giving some visual hints on how to access Plutono. [Plutono](htt In order to access the Gardener provided dashboards, open the `Plutono` link provided in the Gardener dashboard. You will be automatically logged in through OIDC based authentication: -![access-plutono](./images/access-plutono.png) +![access-plutono](./images/access-plutono.webp) Access is still possible via the non-OIDC ingress using the credentials from the `.monitoring` secret. It contains the HTTP basic auth credentials in base64-encoded form, as well as the Plutono ingress URL. The Plutono URL is present as an annotation on the `.monitoring` secret. It can be fetched with `kubectl get secret .monitoring -o jsonpath="{.metadata.annotations.url}"`. The Prometheus URL can be derived from the Plutono URL by replacing the `gu` prefix with `p`. @@ -43,7 +43,7 @@ Access is still possible via the non-OIDC ingress using the credentials from the After logging in, you will be greeted with a Plutono welcome screen. Navigate to `General/Home`, as depicted with the red arrow in the next picture: -![welcome-plutono](./images/welcome-plutono.png) +![welcome-plutono](./images/welcome-plutono.webp) Then you will be able to select the dashboards. Some interesting ones to look at are: @@ -54,13 +54,13 @@ Then you will be able to select the dashboards. Some interesting ones to look at Here is a picture with the `Kubernetes Control Plane Status` dashboard. -![plutono](./images/plutono.png) +![plutono](./images/plutono.webp) ### Prometheus [Prometheus](https://prometheus.io/) is a monitoring system and a time series database. It can be queried using PromQL, the so called Prometheus Querying Language. -![prometheus](./images/prometheus.png) +![prometheus](./images/prometheus.webp) This example query describes the current uptime status of the kube apiserver. @@ -68,7 +68,7 @@ This example query describes the current uptime status of the kube apiserver. Time series data from Prometheus can be made visible with Plutono. Here we see how the query above which describes the uptime of a Kubernetes cluster is visualized with a Plutono dashboard. -![prometheus-plutono](./images/prometheus-plutono.png) +![prometheus-plutono](./images/prometheus-plutono.webp) ### Vali Logs via Plutono @@ -78,15 +78,15 @@ Vali is our logging solution. In order to access the logs provided by Vali, you 1. Choose `Explore`, which is depicted as the little compass symbol: - ![explore-loki](images/explore-loki.png) + ![explore-loki](images/explore-loki.webp) 1. Select `Vali` at the top left, as shown here: -![select-vali](./images/select-vali.png) +![select-vali](./images/select-vali.webp) There you can browse logs or events of the control plane components. -![vali-logs](./images/vali-logs.png) +![vali-logs](./images/vali-logs.webp) Here are some examples of helpful queries: @@ -109,7 +109,7 @@ Our monitoring and logging solutions Vali and Prometheus both run next to the co The following diagram allows a more detailed look at Vali and the data flow. -![data-flow-logging](./images/data-flow-logging.png) +![data-flow-logging](./images/data-flow-logging.webp) On the very left, we see Plutono as it displays the logs. Vali is aggregating the logs from different sources. @@ -135,7 +135,7 @@ The diagram below shows the data flow of metrics. Plutono uses PromQL queries to query data from Prometheus. It then visualises those metrics in dashboards. Prometheus itself scrapes various targets for metrics, as seen in the diagram below by the arrows pointing to the Prometheus instance. -![data-flow-monitoring-1](./images/data-flow-monitoring-1.png) +![data-flow-monitoring-1](./images/data-flow-monitoring-1.webp) Let us have a look what metrics we scrape for debugging purposes: @@ -156,7 +156,7 @@ The different control plane pods (for example, etcd, API server, and kube-contro [kube-state-metrics](https://github.com/kubernetes/kube-state-metrics) is a simple service that listens to the Kubernetes API server and generates metrics about the state of the objects. It is not concerned with metrics about the Kubernetes components, but rather it exposes metrics calculated from the status of Kubernetes objects (for example, resource requests or health of pods). In the following image a few example metrics, which are exposed by the various components, are listed: -![data-flow-monitoring-2](./images/data-flow-monitoring-2.png) +![data-flow-monitoring-2](./images/data-flow-monitoring-2.webp) We only store metrics for Gardener deployed components. Those include the Kubernetes control plane, Gardener managed system components (e.g., pods) in the kube-system namespace of the shoot cluster or systemd units on the nodes. We do not gather metrics for workload deployed in the shoot cluster. This is also shown in the picture below. @@ -164,4 +164,4 @@ This means that for any workload you deploy into your shoot cluster, you need to Logs or metrics are kept up to 14 days or when a configured space limit is reached. -![data-flow-monitoring-3](./images/data-flow-monitoring-3.png) +![data-flow-monitoring-3](./images/data-flow-monitoring-3.webp) diff --git a/website/documentation/getting-started/observability/images/access-plutono-old.png b/website/documentation/getting-started/observability/images/access-plutono-old.png deleted file mode 100644 index 4b0081967..000000000 Binary files a/website/documentation/getting-started/observability/images/access-plutono-old.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/access-plutono-old.webp b/website/documentation/getting-started/observability/images/access-plutono-old.webp new file mode 100644 index 000000000..bc295c510 Binary files /dev/null and b/website/documentation/getting-started/observability/images/access-plutono-old.webp differ diff --git a/website/documentation/getting-started/observability/images/access-plutono.png b/website/documentation/getting-started/observability/images/access-plutono.png deleted file mode 100644 index 1c1c846ff..000000000 Binary files a/website/documentation/getting-started/observability/images/access-plutono.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/access-plutono.webp b/website/documentation/getting-started/observability/images/access-plutono.webp new file mode 100644 index 000000000..3a9bfdaff Binary files /dev/null and b/website/documentation/getting-started/observability/images/access-plutono.webp differ diff --git a/website/documentation/getting-started/observability/images/control-plane-components.png b/website/documentation/getting-started/observability/images/control-plane-components.png deleted file mode 100644 index 8e1a8e7e3..000000000 Binary files a/website/documentation/getting-started/observability/images/control-plane-components.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/control-plane-components.webp b/website/documentation/getting-started/observability/images/control-plane-components.webp new file mode 100644 index 000000000..a41981c37 Binary files /dev/null and b/website/documentation/getting-started/observability/images/control-plane-components.webp differ diff --git a/website/documentation/getting-started/observability/images/core-components.png b/website/documentation/getting-started/observability/images/core-components.png deleted file mode 100644 index aa24b660a..000000000 Binary files a/website/documentation/getting-started/observability/images/core-components.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/core-components.webp b/website/documentation/getting-started/observability/images/core-components.webp new file mode 100644 index 000000000..af2ed1bd7 Binary files /dev/null and b/website/documentation/getting-started/observability/images/core-components.webp differ diff --git a/website/documentation/getting-started/observability/images/custom-alerts.png b/website/documentation/getting-started/observability/images/custom-alerts.png deleted file mode 100644 index ec44de916..000000000 Binary files a/website/documentation/getting-started/observability/images/custom-alerts.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/custom-alerts.webp b/website/documentation/getting-started/observability/images/custom-alerts.webp new file mode 100644 index 000000000..fb83aa687 Binary files /dev/null and b/website/documentation/getting-started/observability/images/custom-alerts.webp differ diff --git a/website/documentation/getting-started/observability/images/data-flow-logging.png b/website/documentation/getting-started/observability/images/data-flow-logging.png deleted file mode 100644 index 53b93565d..000000000 Binary files a/website/documentation/getting-started/observability/images/data-flow-logging.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/data-flow-logging.webp b/website/documentation/getting-started/observability/images/data-flow-logging.webp new file mode 100644 index 000000000..1dfb9f2cb Binary files /dev/null and b/website/documentation/getting-started/observability/images/data-flow-logging.webp differ diff --git a/website/documentation/getting-started/observability/images/data-flow-monitoring-1.png b/website/documentation/getting-started/observability/images/data-flow-monitoring-1.png deleted file mode 100644 index 9055e6451..000000000 Binary files a/website/documentation/getting-started/observability/images/data-flow-monitoring-1.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/data-flow-monitoring-1.webp b/website/documentation/getting-started/observability/images/data-flow-monitoring-1.webp new file mode 100644 index 000000000..3f6401323 Binary files /dev/null and b/website/documentation/getting-started/observability/images/data-flow-monitoring-1.webp differ diff --git a/website/documentation/getting-started/observability/images/data-flow-monitoring-2.png b/website/documentation/getting-started/observability/images/data-flow-monitoring-2.png deleted file mode 100644 index 852dd7e6b..000000000 Binary files a/website/documentation/getting-started/observability/images/data-flow-monitoring-2.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/data-flow-monitoring-2.webp b/website/documentation/getting-started/observability/images/data-flow-monitoring-2.webp new file mode 100644 index 000000000..2d1a3cf00 Binary files /dev/null and b/website/documentation/getting-started/observability/images/data-flow-monitoring-2.webp differ diff --git a/website/documentation/getting-started/observability/images/data-flow-monitoring-3.png b/website/documentation/getting-started/observability/images/data-flow-monitoring-3.png deleted file mode 100644 index cb4c7d39a..000000000 Binary files a/website/documentation/getting-started/observability/images/data-flow-monitoring-3.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/data-flow-monitoring-3.webp b/website/documentation/getting-started/observability/images/data-flow-monitoring-3.webp new file mode 100644 index 000000000..117f2c1a3 Binary files /dev/null and b/website/documentation/getting-started/observability/images/data-flow-monitoring-3.webp differ diff --git a/website/documentation/getting-started/observability/images/explore-loki.png b/website/documentation/getting-started/observability/images/explore-loki.png deleted file mode 100644 index 8a9412ff4..000000000 Binary files a/website/documentation/getting-started/observability/images/explore-loki.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/explore-loki.webp b/website/documentation/getting-started/observability/images/explore-loki.webp new file mode 100644 index 000000000..a1ee0e940 Binary files /dev/null and b/website/documentation/getting-started/observability/images/explore-loki.webp differ diff --git a/website/documentation/getting-started/observability/images/plutono.png b/website/documentation/getting-started/observability/images/plutono.png deleted file mode 100644 index ef0567c94..000000000 Binary files a/website/documentation/getting-started/observability/images/plutono.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/plutono.webp b/website/documentation/getting-started/observability/images/plutono.webp new file mode 100644 index 000000000..2d011f18c Binary files /dev/null and b/website/documentation/getting-started/observability/images/plutono.webp differ diff --git a/website/documentation/getting-started/observability/images/prometheus-plutono.png b/website/documentation/getting-started/observability/images/prometheus-plutono.png deleted file mode 100644 index cfdb92690..000000000 Binary files a/website/documentation/getting-started/observability/images/prometheus-plutono.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/prometheus-plutono.webp b/website/documentation/getting-started/observability/images/prometheus-plutono.webp new file mode 100644 index 000000000..a0914b0a2 Binary files /dev/null and b/website/documentation/getting-started/observability/images/prometheus-plutono.webp differ diff --git a/website/documentation/getting-started/observability/images/prometheus.png b/website/documentation/getting-started/observability/images/prometheus.png deleted file mode 100644 index 509993003..000000000 Binary files a/website/documentation/getting-started/observability/images/prometheus.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/prometheus.webp b/website/documentation/getting-started/observability/images/prometheus.webp new file mode 100644 index 000000000..6a1e7255a Binary files /dev/null and b/website/documentation/getting-started/observability/images/prometheus.webp differ diff --git a/website/documentation/getting-started/observability/images/select-vali.png b/website/documentation/getting-started/observability/images/select-vali.png deleted file mode 100644 index 80f3dfdf8..000000000 Binary files a/website/documentation/getting-started/observability/images/select-vali.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/select-vali.webp b/website/documentation/getting-started/observability/images/select-vali.webp new file mode 100644 index 000000000..354aa33af Binary files /dev/null and b/website/documentation/getting-started/observability/images/select-vali.webp differ diff --git a/website/documentation/getting-started/observability/images/shoot-status-1.png b/website/documentation/getting-started/observability/images/shoot-status-1.png deleted file mode 100644 index 3de829542..000000000 Binary files a/website/documentation/getting-started/observability/images/shoot-status-1.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/shoot-status-1.webp b/website/documentation/getting-started/observability/images/shoot-status-1.webp new file mode 100644 index 000000000..9325a41c7 Binary files /dev/null and b/website/documentation/getting-started/observability/images/shoot-status-1.webp differ diff --git a/website/documentation/getting-started/observability/images/shoot-status-2.png b/website/documentation/getting-started/observability/images/shoot-status-2.png deleted file mode 100644 index 324ec71d0..000000000 Binary files a/website/documentation/getting-started/observability/images/shoot-status-2.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/shoot-status-2.webp b/website/documentation/getting-started/observability/images/shoot-status-2.webp new file mode 100644 index 000000000..22b56a813 Binary files /dev/null and b/website/documentation/getting-started/observability/images/shoot-status-2.webp differ diff --git a/website/documentation/getting-started/observability/images/shoot-status-3.png b/website/documentation/getting-started/observability/images/shoot-status-3.png deleted file mode 100644 index fcb09e14d..000000000 Binary files a/website/documentation/getting-started/observability/images/shoot-status-3.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/shoot-status-3.webp b/website/documentation/getting-started/observability/images/shoot-status-3.webp new file mode 100644 index 000000000..192877644 Binary files /dev/null and b/website/documentation/getting-started/observability/images/shoot-status-3.webp differ diff --git a/website/documentation/getting-started/observability/images/shoot-status-4.png b/website/documentation/getting-started/observability/images/shoot-status-4.png deleted file mode 100644 index 8869c513b..000000000 Binary files a/website/documentation/getting-started/observability/images/shoot-status-4.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/shoot-status-4.webp b/website/documentation/getting-started/observability/images/shoot-status-4.webp new file mode 100644 index 000000000..b95aef0dc Binary files /dev/null and b/website/documentation/getting-started/observability/images/shoot-status-4.webp differ diff --git a/website/documentation/getting-started/observability/images/vali-logs.png b/website/documentation/getting-started/observability/images/vali-logs.png deleted file mode 100644 index 9427098eb..000000000 Binary files a/website/documentation/getting-started/observability/images/vali-logs.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/vali-logs.webp b/website/documentation/getting-started/observability/images/vali-logs.webp new file mode 100644 index 000000000..6e434c2cd Binary files /dev/null and b/website/documentation/getting-started/observability/images/vali-logs.webp differ diff --git a/website/documentation/getting-started/observability/images/welcome-plutono.png b/website/documentation/getting-started/observability/images/welcome-plutono.png deleted file mode 100644 index 8e03561a9..000000000 Binary files a/website/documentation/getting-started/observability/images/welcome-plutono.png and /dev/null differ diff --git a/website/documentation/getting-started/observability/images/welcome-plutono.webp b/website/documentation/getting-started/observability/images/welcome-plutono.webp new file mode 100644 index 000000000..762417571 Binary files /dev/null and b/website/documentation/getting-started/observability/images/welcome-plutono.webp differ diff --git a/website/documentation/getting-started/observability/shoot-status.md b/website/documentation/getting-started/observability/shoot-status.md index 889e505c7..77033cabd 100644 --- a/website/documentation/getting-started/observability/shoot-status.md +++ b/website/documentation/getting-started/observability/shoot-status.md @@ -13,13 +13,13 @@ You can retrieve the shoot status by using `kubectl get shoot -oyaml` It contains conditions, which give you information about the healthiness of your cluster. Those conditions are also forwarded to the Gardener dashboard and show your cluster as healthy or unhealthy. -shoot-status-1 +shoot-status-1 ## Shoot Status - Constraints The shoot status also contains constraints. If these constraints are met, your cluster operations are impaired and the cluster is likely to fail at some point. Please watch them and act accordingly. -shoot-status-2 +shoot-status-2 ## Shoot Status - Last Operation @@ -27,10 +27,10 @@ The `lastOperation`, `lastErrors`, and `lastMaintenance` give you information on In this example, nodes are being recreated and not all machines have reached the desired state yet. -shoot-status-3 +shoot-status-3 ## Shoot Status - Credentials Rotation You can also see the status of the last credentials rotation. Here you can also programmatically derive when the last rotation was down in order to trigger the next rotation. -shoot-status-4 +shoot-status-4 diff --git a/website/documentation/getting-started/podrick-and-the-infinite-garden.md b/website/documentation/getting-started/podrick-and-the-infinite-garden.md index 81523f90b..a1c0fc885 100644 --- a/website/documentation/getting-started/podrick-and-the-infinite-garden.md +++ b/website/documentation/getting-started/podrick-and-the-infinite-garden.md @@ -7,7 +7,7 @@ weight: 0 **An Illustrated Guide to Gardener for Readers of All Ages** -![cover picture of podrick and the infinite garden](./images/podrick/scene-0.png) +![cover picture of podrick and the infinite garden](./images/podrick/scene-0.webp) * **Written by:** _The Gardener authors_ * **Inspiration:** [_The Illustrated Children's Guide to Kubernetes_](https://www.cncf.io/phippy/the-childrens-illustrated-guide-to-kubernetes/) @@ -23,7 +23,7 @@ Among them were orchids that needed humidity, cacti that craved dry heat, and fe To keep them alive, he needed plots (_Kubernetes clusters_). Many plots in different environments but all with a similar set of features to ease maintenance efforts. -![podrick is an earthworm and main protagonist of the story](./images/podrick/podrick_no_logo.png) +![podrick is an earthworm and main protagonist of the story](./images/podrick/podrick_no_logo.webp) ## _Explanation: Kubernetes Clusters_ @@ -31,7 +31,7 @@ Many plots in different environments but all with a similar set of features to e * Can be configured in many ways. * Need to be scaled, updated and maintained regularly. -a farm plot growing different vegetables representing a kubernetes cluster +a farm plot growing different vegetables representing a kubernetes cluster --- @@ -52,7 +52,7 @@ Each built their own way, using their own tools, speaking their own languages. If a plot broke, Podrick had to find the builder and understand their logic. Podrick was tired. -![podrick meets three raccoons that represent providers of kubernetes distributions](./images/podrick/scene-1.png) +![podrick meets three raccoons that represent providers of kubernetes distributions](./images/podrick/scene-1.webp) ## _Explanation: Providers_ @@ -60,7 +60,7 @@ Podrick was tired. * Different offerings provide different features and configuration options. * Each provider has their own release/adoption cycle for new Kubernetes version and features. -raccoon representing a kubernetes provider +raccoon representing a kubernetes provider --- @@ -83,7 +83,7 @@ A worker bee buzzed down. "We are but workers," the bee hummed. "If you desire a plot, you must go to the center of the world. You must visit the Great Library of Plants and speak to the Botanist." -![podrick meets the bees tending to a farm plot](./images/podrick/scene-2.png) +![podrick meets the bees tending to a farm plot](./images/podrick/scene-2.webp) --- @@ -98,7 +98,7 @@ She was a wise, towering figure who seemed to know the location of every seed in "I need plots," Podrick said. "But not like the raccoons build. I need them to be the same, no matter where they are." -![podrick meets the botanist in the great library of plants](./images/podrick/scene-3.png) +![podrick meets the botanist in the great library of plants](./images/podrick/scene-3.webp) ## _Explanation: Garden_ @@ -106,7 +106,7 @@ She was a wise, towering figure who seemed to know the location of every seed in * The management plane of a Gardener installation. * Central entry point to manage the lifecycle of a Kubernetes cluster. -the great library of plants representing the garden cluster +the great library of plants representing the garden cluster --- @@ -136,7 +136,7 @@ The Botanist read the scroll and asked back: "And where shall we build this patc She took a seal and stamped it. "It is accepted. Now, meet your guide." -![podrick writes a scroll of desire that represents the shoot cluster definition](./images/podrick/scene-4.png) +![podrick writes a scroll of desire that represents the shoot cluster definition](./images/podrick/scene-4.webp) ## _Explanation: Shoot_ @@ -144,7 +144,7 @@ She took a seal and stamped it. * Represents a Kubernetes cluster and the desired state of its configuration. * Every user brings their own infrastructure accounts and grants Gardener access to manage Kubernetes cluster in there. -a scroll representing the shoot resource +a scroll representing the shoot resource --- @@ -159,7 +159,7 @@ Gilly hovered in front of Podrick. Podrick crawled onto Gilly’s metallic back, and they zipped away, leaving the Great Library of Plants behind. -![a mechanical hummingbird called gilly representing the gardenlet](./images/podrick/scene-5.png) +![a mechanical hummingbird called gilly representing the gardenlet](./images/podrick/scene-5.webp) ## _Explanation: Gardenlet_ @@ -167,7 +167,7 @@ Podrick crawled onto Gilly’s metallic back, and they zipped away, leaving the * Turns a given Kubernetes cluster into a Seed cluster. * Manages all Shoots (Kubernetes clusters) scheduled there. -a mechanical hummingbird called gilly representing the gardenlet +a mechanical hummingbird called gilly representing the gardenlet --- @@ -190,7 +190,7 @@ She began moving quicker than Podrick's eyes could follow and soon a new beehive "The beehive is ready," Gilly chirped. "But before the bees can settle in, we need the beavers." -![podrick with gilly in a nursery representing the seed cluster](./images/podrick/scene-6.png) +![podrick with gilly in a nursery representing the seed cluster](./images/podrick/scene-6.webp) ## _Explanation: Seed Cluster_ @@ -199,7 +199,7 @@ She began moving quicker than Podrick's eyes could follow and soon a new beehive * Each Shoot control plane runs separately in a dedicated namespace. * Only the Kubernetes API server is exposed to the user. -a greenhouse which is the nursery representing the seed cluster +a greenhouse which is the nursery representing the seed cluster --- @@ -221,7 +221,7 @@ They had different attachments for their wooden excavator for each terrain. Podrick watched them work. The beavers cleared the land and built the infrastructure which quickly became a plot. -![podrick and the infrastructure beavers arrived at the plot](./images/podrick/scene-7.png) +![podrick and the infrastructure beavers arrived at the plot](./images/podrick/scene-7.webp) ## _Explanation: Infrastructure Extensions_ @@ -229,7 +229,7 @@ The beavers cleared the land and built the infrastructure which quickly became a * Extensions implement the interfaces. * Extensions are deployed to the Seed cluster and create actual resources on the infrastructure provider. -beaver with a hardhat and sledge hammer representing the infrastructure extension +beaver with a hardhat and sledge hammer representing the infrastructure extension --- @@ -241,7 +241,7 @@ The friendly bees (from the hive in the nursery) had flown out to the plot to te The beavers were close by, ready to repair the plot if it broke. -![podrick, the infrastructure beavers and worker bees at the finished plot](./images/podrick/scene-8.png) +![podrick, the infrastructure beavers and worker bees at the finished plot](./images/podrick/scene-8.webp) ## _Explanation: Machine Controller Manager_ @@ -249,7 +249,7 @@ The beavers were close by, ready to repair the plot if it broke. * Has domain specific implementations on board to manage actual machines on a given infrastructure. * Machines become the Nodes of the cluster. -beaver with a hardhat and shovel representing the machine controller manager +beaver with a hardhat and shovel representing the machine controller manager --- @@ -274,7 +274,7 @@ Podrick’s mind raced. "Correct," the Botanist smiled. "You simply write a scroll of desire specifying 'Ice Soil' and the region 'North'. The Gardenlet in that distant nursery will see it, send out the local beavers, and build your plot exactly as you requested." -![podrick and the botanist overlooking the many different nurseries and gillys](./images/podrick/scene-9.png) +![podrick and the botanist overlooking the many different nurseries and gillys](./images/podrick/scene-9.webp) ## _Explanation: Scaling_ @@ -282,7 +282,7 @@ Podrick’s mind raced. * Seeds can be on different infrastructures and regions. * In heavy-use regions, multiple Seeds can be created. -multiple mechanical hummingbirds representing multiple gardenlets +multiple mechanical hummingbirds representing multiple gardenlets --- @@ -294,7 +294,7 @@ He realized he didn't just have a plot; he had a system. He could manage a thous "That is the power of the system I created," the Botanist said, resting in her chair. "You define the What. We handle the How. I like to simply call it the way of the Gardener." -![podrick and gilly back at the botanist's desk in the great library of plants](./images/podrick/scene-10.png) +![podrick and gilly back at the botanist's desk in the great library of plants](./images/podrick/scene-10.webp) --- @@ -315,7 +315,7 @@ The Botanist let out a sound that resembled a chuckle. "It is a living manifesto," the Botanist explained. "If your plants grow, you do not need to build a new plot. You simply update the scroll. You can change the line 'Size: 3 acres' to 'Size: Auto-manage up to 10 acres'. When the beavers see the plot getting crowded, they will automatically clear more land and expand the fences. This is autoscaling." -![podrick and the beavers back at the expanded plot](./images/podrick/scene-11.png) +![podrick and the beavers back at the expanded plot](./images/podrick/scene-11.webp) ## _Explanation: Day-2 Operations_ @@ -324,7 +324,7 @@ The Botanist let out a sound that resembled a chuckle. * Cluster operations like scaling or replacing a broken node happen automatically. * ETCD backups protect against infrastructure failures. -scrolls, the mechanical hummingbird, and the beehive representing day-2 operations +scrolls, the mechanical hummingbird, and the beehive representing day-2 operations --- @@ -336,17 +336,17 @@ Instead, they listened to Podrick as he told the story of his journey and the en The End. -![podrick and the raccoons in a living room in front of a cozy fireplace](./images/podrick/scene-12.png) +![podrick and the raccoons in a living room in front of a cozy fireplace](./images/podrick/scene-12.webp) ## Glossary | Illustration | Term | Definition | |--------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------| -| a farm plot growing different vegetables representing a kubernetes cluster | Kubernetes Cluster | Orchestrator of containerized workloads. | -| raccoon representing a kubernetes provider | Providers | Offerings or tools to manage a Kubernetes cluster. | -| the great library of plants representing the garden cluster | [Garden](https://github.com/gardener/gardener/blob/master/docs/concepts/operator.md#garden-resources) | Management plane of the system where a user defines how their Kubernetes clusters should look like. | -| a scroll representing the shoot resource | [Shoot](https://github.com/gardener/gardener/blob/master/docs/concepts/apiserver.md#shoots) | Resource describing the desired and actual state of a Kubernetes cluster. | -| a greenhouse which is the nursery representing the seed cluster | [Seed](https://github.com/gardener/gardener/blob/master/docs/concepts/gardenlet.md#seed-controller) | A Kubernetes cluster hosting other Kubernetes cluster's control planes as workloads. | -| a mechanical hummingbird called gilly representing the gardenlet | [Gardenlet](https://github.com/gardener/gardener/blob/master/docs/concepts/gardenlet.md) | Just like a Kubelet for Nodes, a Gardenlet turns a Kubernetes cluster into a Seed. The Gardenlet has the core logic to manage Kubernetes clusters. | -| beaver with a hardhat and sledge hammer representing the infrastructure extension | [Infrastructure Extensions](https://github.com/gardener/gardener/blob/master/extensions/README.md) | With knowledge about the actual infrastructure, they manage resources such as Virtual Private Clouds (VPCs). | -| beaver with a hardhat and shovel representing the machine controller manager | [Machine Controller Manager](https://github.com/gardener/machine-controller-manager/blob/master/README.md) | Responsible for the lifecycle of a Machine, which represents a Kubernetes cluster's Node. | +| a farm plot growing different vegetables representing a kubernetes cluster | Kubernetes Cluster | Orchestrator of containerized workloads. | +| raccoon representing a kubernetes provider | Providers | Offerings or tools to manage a Kubernetes cluster. | +| the great library of plants representing the garden cluster | [Garden](https://github.com/gardener/gardener/blob/master/docs/concepts/operator.md#garden-resources) | Management plane of the system where a user defines how their Kubernetes clusters should look like. | +| a scroll representing the shoot resource | [Shoot](https://github.com/gardener/gardener/blob/master/docs/concepts/apiserver.md#shoots) | Resource describing the desired and actual state of a Kubernetes cluster. | +| a greenhouse which is the nursery representing the seed cluster | [Seed](https://github.com/gardener/gardener/blob/master/docs/concepts/gardenlet.md#seed-controller) | A Kubernetes cluster hosting other Kubernetes cluster's control planes as workloads. | +| a mechanical hummingbird called gilly representing the gardenlet | [Gardenlet](https://github.com/gardener/gardener/blob/master/docs/concepts/gardenlet.md) | Just like a Kubelet for Nodes, a Gardenlet turns a Kubernetes cluster into a Seed. The Gardenlet has the core logic to manage Kubernetes clusters. | +| ”beaver | [Infrastructure Extensions](https://github.com/gardener/gardener/blob/master/extensions/README.md) | With knowledge about the actual infrastructure, they manage resources such as Virtual Private Clouds (VPCs). | +| beaver with a hardhat and shovel representing the machine controller manager | [Machine Controller Manager](https://github.com/gardener/machine-controller-manager/blob/master/README.md) | Responsible for the lifecycle of a Machine, which represents a Kubernetes cluster's Node. | diff --git a/website/documentation/getting-started/project.md b/website/documentation/getting-started/project.md index cdf48bc5d..3b32d820b 100644 --- a/website/documentation/getting-started/project.md +++ b/website/documentation/getting-started/project.md @@ -5,7 +5,7 @@ weight: 3 ## Overview -![overview](./images/overview.png) +![overview](./images/overview.webp) Gardener is all about Kubernetes clusters, which we call shoots. However, Gardener also does user management, delicate permission management and offers technical accounts to integrate its services into other infrastructures. It allows you to create several quotas and it needs credentials to connect to cloud providers. All of these are arranged in multiple fully contained projects, each of which belongs to a dedicated user and / or group. @@ -44,7 +44,7 @@ ResourceQuotas - if any - will be enforced on the project namespace. For Gardener to create all relevant infrastructure that a shoot cluster needs inside a cloud provider, it needs to know how to authenticate to the cloud provider's API. This is done through regular secrets. -![secret](./images/secret.png) +![secret](./images/secret.webp) Through the Gardener dashboard, secrets can be created for each supported cloud provider (using the dashboard is the preferred way, as it provides interactive help on what information needs to be placed into the secret and how the corresponding user account on the cloud provider should be configured). All of that is stored in a standard, opaque Kubernetes secret. @@ -54,7 +54,7 @@ In the shoot manifest, we refer to a SecretBinding and the SecretBinding in turn ## SecretBindings -![secretbindings](./images/secretbindings.png) +![secretbindings](./images/secretbindings.webp) With SecretBindings, it is possible to reference the same infrastructure secret in different projects across namespaces. This has the following advantages:​ @@ -63,7 +63,7 @@ With SecretBindings, it is possible to reference the same infrastructure secret ## Service Accounts -![service-account](./images/service-account.png) +![service-account](./images/service-account.webp) Since Gardener is 100% Kubernetes, it can be easily used in a programmatic way - by just sending the resource manifest of a Gardener resource to its API server. To do so, a kubeconfig file and a (technical) user that the kubeconfig maps to are required. diff --git a/website/documentation/getting-started/shoots.md b/website/documentation/getting-started/shoots.md index 7d6872346..a082a9802 100644 --- a/website/documentation/getting-started/shoots.md +++ b/website/documentation/getting-started/shoots.md @@ -5,7 +5,7 @@ weight: 4 ## Overview -![k8s-cluster](./images/k8s-cluster.png) +![k8s-cluster](./images/k8s-cluster.webp) A Kubernetes cluster consists of a control plane and a data plane. The data plane runs the actual containers on worker nodes (which translate to physical or virtual machines). For the control and data plane to work together properly, lots of components need matching configuration. @@ -20,7 +20,7 @@ Luckily there is a dashboard to get started. ## Basic Configuration Options -![basic-configurations-1](./images/basic-configurations-1.png) +![basic-configurations-1](./images/basic-configurations-1.webp) Every cluster needs a name - after all, it is a Kubernetes resource and therefore unique within a namespace. @@ -28,7 +28,7 @@ The Kubernetes version will be used as a starting point. Once a newer version is The "purpose" affects some configuration (like automatic deployment of a monitoring stack or setting up certain alerting rules) and generally indicates the importance of a cluster. -![basic-configurations-2](./images/basic-configurations-2.png) +![basic-configurations-2](./images/basic-configurations-2.webp) Start by selecting the infrastructure you want to use. The choice will be mapped to a cloud profile that contains provider specific information like the available (actual) OS images, zones and regions or machine types. @@ -41,7 +41,7 @@ Each data plane runs in an infrastructure account owned by the end user. By sele As part of the infrastructure you chose, the region for data plane has to be chosen as well. The Gardener scheduler will try to place the control plane on a seed cluster based on a minimal distance strategy. See [Gardener Scheduler](https://github.com/gardener/gardener/blob/master/docs/concepts/scheduler.md) for more details. -![basic-configurations-3](./images/basic-configurations-3.png) +![basic-configurations-3](./images/basic-configurations-3.webp) Up next, the networking provider (CNI) for the cluster has to be selected. At the point of writing, it is possible to choose between Calico and Cilium. If not specified in the shoot's manifest, default CIDR ranges for nodes, services, and pods will be used. @@ -58,7 +58,7 @@ Other specifications for the workers include the volume type and size. These set The autoscaler parameter defines the initial elasticity / scalability of your cluster. The cluster-autoscaler will add more nodes up to the maximum defined here when your workload grows and remove nodes in case your workload shrinks. The minimum number of nodes should be equal to or higher than the number of zones. You can distribute the nodes of a worker pool among all zones available to your cluster. This is the first step in running HA workloads. -![basic-configurations-4](./images/basic-configurations-4.png) +![basic-configurations-4](./images/basic-configurations-4.webp) Once per day, all clusters reconcile. This means all controllers will check if there are any updates they have to apply (e.g., new image version for ETCD). The maintenance window defines when this daily operation will be triggered. It is important to understand that there is no opt-out for reconciliation. @@ -78,13 +78,13 @@ The result of your provided inputs and a set of conscious default values is a sh ## How to Access a Shoot -![access-shoot-1](./images/access-shoot-1.png) +![access-shoot-1](./images/access-shoot-1.webp) Static credentials for shoots were discontinued in Gardener with Kubernetes v1.27. Short lived credentials need to be used instead. You can create/request tokens directly via Gardener or delegate authentication to an identity provider. A short-lived admin kubeconfig can be requested by using kubectl. If this is something you do frequently, consider switching to [gardenlogin](https://github.com/gardener/gardenlogin), which helps you with it. -![access-shoot-2](./images/access-shoot-2.png) +![access-shoot-2](./images/access-shoot-2.webp) An alternative is to use an identity provider and issue OIDC tokens. @@ -102,11 +102,11 @@ You can fine-tune the cluster-autoscaler or help the kubelet to cope better with There are a couple of ways to configure a worker pool. One of them is to set everything in the Gardener dashboard. However, only a subset of options is presented there. -![worker-pools-1](./images/worker-pools-1.png) +![worker-pools-1](./images/worker-pools-1.webp) A slightly more complex way is to set the configuration through the yaml file itself. -![worker-pools-2](./images/worker-pools-2.png) +![worker-pools-2](./images/worker-pools-2.webp) This allows you to configure much more properties of a worker pool, like the timeout after which an unhealthy machine is getting replaced. For more options, see the [Worker](https://github.com/gardener/gardener/blob/master/docs/api-reference/core.md#worker) API reference. @@ -114,7 +114,7 @@ This allows you to configure much more properties of a worker pool, like the tim Since a shoot is just another Kubernetes resource, changes can be applied via kubectl. For convenience, the basic settings are configurable via the dashboard's UI. It also has a "yaml" tab where you can alter all of the shoot's specification in your browser. Once applied, the cluster will reconcile eventually and your changes become active (or cause an error). -![change-things](./images/change-things.png) +![change-things](./images/change-things.webp) ## Immutability in a Shoot diff --git a/website/documentation/guides/administer-shoots/backup-restore.md b/website/documentation/guides/administer-shoots/backup-restore.md index 002218019..e7c0ad13d 100644 --- a/website/documentation/guides/administer-shoots/backup-restore.md +++ b/website/documentation/guides/administer-shoots/backup-restore.md @@ -9,7 +9,7 @@ publishdate: 2020-01-01 aliases: [ "/readmore/br" ] --- -![Don't worry ... have a backup](images/teaser.png) +![Don't worry ... have a backup](images/teaser.webp) ## TL;DR @@ -69,7 +69,7 @@ The diagram below explains the backup process. When creating a backup, Velero cl The size of the backup tar ball corresponds to the number of objects in etcd. The gzipped archive contains the `Json` representations of the objects. -![Backup process](./images/backup-process.png) +![Backup process](./images/backup-process.webp) > [!NOTE] > As of the writing of this tutorial, Velero or any other BR tool for Shoot clusters is not provided by Gardener. diff --git a/website/documentation/guides/administer-shoots/images/Basic-information.png b/website/documentation/guides/administer-shoots/images/Basic-information.png deleted file mode 100644 index fc3dda7ac..000000000 Binary files a/website/documentation/guides/administer-shoots/images/Basic-information.png and /dev/null differ diff --git a/website/documentation/guides/administer-shoots/images/Basic-information.webp b/website/documentation/guides/administer-shoots/images/Basic-information.webp new file mode 100644 index 000000000..063a9e131 Binary files /dev/null and b/website/documentation/guides/administer-shoots/images/Basic-information.webp differ diff --git a/website/documentation/guides/administer-shoots/images/Choose-application-type.png b/website/documentation/guides/administer-shoots/images/Choose-application-type.png deleted file mode 100644 index c9a1b2091..000000000 Binary files a/website/documentation/guides/administer-shoots/images/Choose-application-type.png and /dev/null differ diff --git a/website/documentation/guides/administer-shoots/images/Choose-application-type.webp b/website/documentation/guides/administer-shoots/images/Choose-application-type.webp new file mode 100644 index 000000000..1770ff639 Binary files /dev/null and b/website/documentation/guides/administer-shoots/images/Choose-application-type.webp differ diff --git a/website/documentation/guides/administer-shoots/images/Configure-callback.png b/website/documentation/guides/administer-shoots/images/Configure-callback.png deleted file mode 100644 index 9fc168edd..000000000 Binary files a/website/documentation/guides/administer-shoots/images/Configure-callback.png and /dev/null differ diff --git a/website/documentation/guides/administer-shoots/images/Configure-callback.webp b/website/documentation/guides/administer-shoots/images/Configure-callback.webp new file mode 100644 index 000000000..9e0d6daa1 Binary files /dev/null and b/website/documentation/guides/administer-shoots/images/Configure-callback.webp differ diff --git a/website/documentation/guides/administer-shoots/images/Create-client-application.png b/website/documentation/guides/administer-shoots/images/Create-client-application.png deleted file mode 100644 index 73c585afb..000000000 Binary files a/website/documentation/guides/administer-shoots/images/Create-client-application.png and /dev/null differ diff --git a/website/documentation/guides/administer-shoots/images/Create-client-application.webp b/website/documentation/guides/administer-shoots/images/Create-client-application.webp new file mode 100644 index 000000000..da930413a Binary files /dev/null and b/website/documentation/guides/administer-shoots/images/Create-client-application.webp differ diff --git a/website/documentation/guides/administer-shoots/images/Create-user.png b/website/documentation/guides/administer-shoots/images/Create-user.png deleted file mode 100644 index c2316588b..000000000 Binary files a/website/documentation/guides/administer-shoots/images/Create-user.png and /dev/null differ diff --git a/website/documentation/guides/administer-shoots/images/Create-user.webp b/website/documentation/guides/administer-shoots/images/Create-user.webp new file mode 100644 index 000000000..7af934554 Binary files /dev/null and b/website/documentation/guides/administer-shoots/images/Create-user.webp differ diff --git a/website/documentation/guides/administer-shoots/images/Login-through-identity-provider.png b/website/documentation/guides/administer-shoots/images/Login-through-identity-provider.png deleted file mode 100644 index a097ac865..000000000 Binary files a/website/documentation/guides/administer-shoots/images/Login-through-identity-provider.png and /dev/null differ diff --git a/website/documentation/guides/administer-shoots/images/Login-through-identity-provider.webp b/website/documentation/guides/administer-shoots/images/Login-through-identity-provider.webp new file mode 100644 index 000000000..f87d8b054 Binary files /dev/null and b/website/documentation/guides/administer-shoots/images/Login-through-identity-provider.webp differ diff --git a/website/documentation/guides/administer-shoots/images/backup-process.png b/website/documentation/guides/administer-shoots/images/backup-process.png deleted file mode 100644 index 744b37abe..000000000 Binary files a/website/documentation/guides/administer-shoots/images/backup-process.png and /dev/null differ diff --git a/website/documentation/guides/administer-shoots/images/backup-process.webp b/website/documentation/guides/administer-shoots/images/backup-process.webp new file mode 100644 index 000000000..e081d1840 Binary files /dev/null and b/website/documentation/guides/administer-shoots/images/backup-process.webp differ diff --git a/website/documentation/guides/administer-shoots/images/pod-nodes.png b/website/documentation/guides/administer-shoots/images/pod-nodes.png deleted file mode 100644 index 1005a7893..000000000 Binary files a/website/documentation/guides/administer-shoots/images/pod-nodes.png and /dev/null differ diff --git a/website/documentation/guides/administer-shoots/images/pod-nodes.webp b/website/documentation/guides/administer-shoots/images/pod-nodes.webp new file mode 100644 index 000000000..c8ab22ee1 Binary files /dev/null and b/website/documentation/guides/administer-shoots/images/pod-nodes.webp differ diff --git a/website/documentation/guides/administer-shoots/images/teaser.png b/website/documentation/guides/administer-shoots/images/teaser.png deleted file mode 100644 index 88f0c02a8..000000000 Binary files a/website/documentation/guides/administer-shoots/images/teaser.png and /dev/null differ diff --git a/website/documentation/guides/administer-shoots/images/teaser.webp b/website/documentation/guides/administer-shoots/images/teaser.webp new file mode 100644 index 000000000..45250ecd7 Binary files /dev/null and b/website/documentation/guides/administer-shoots/images/teaser.webp differ diff --git a/website/documentation/guides/administer-shoots/oidc-login.md b/website/documentation/guides/administer-shoots/oidc-login.md index 0314e01ef..95b03f7d5 100644 --- a/website/documentation/guides/administer-shoots/oidc-login.md +++ b/website/documentation/guides/administer-shoots/oidc-login.md @@ -34,11 +34,11 @@ Create a tenant in an OIDC compatible Identity Provider. For simplicity, we use 1. In your tenant, create a client application to use authentication with `kubectl`: - ![Create client application](./images/Create-client-application.png) + ![Create client application](./images/Create-client-application.webp) 1. Provide a *Name*, choose *Native* as application type, and choose *CREATE*. - ![Choose application type](./images/Choose-application-type.png) + ![Choose application type](./images/Choose-application-type.webp) 1. In the tab *Settings*, copy the following parameters to a local text file: @@ -48,11 +48,11 @@ Create a tenant in an OIDC compatible Identity Provider. For simplicity, we use - *Client ID* - *Client Secret* - ![Basic information](./images/Basic-information.png) + ![Basic information](./images/Basic-information.webp) 1. Configure the client to have a callback url of `http://localhost:8000`. This callback connects to your local `kubectl oidc-login` plugin: - ![Configure callback](./images/Configure-callback.png) + ![Configure callback](./images/Configure-callback.webp) 1. Save your changes. @@ -60,7 +60,7 @@ Create a tenant in an OIDC compatible Identity Provider. For simplicity, we use 1. Choose *Users & Roles* \> *Users* \> *CREATE USERS* to create a user with a user and password: - ![Create user](./images/Create-user.png) + ![Create user](./images/Create-user.webp) > [!NOTE] > Users must have a *verified* email address. @@ -213,7 +213,7 @@ As administrator, apply the cluster role binding in your shoot cluster. 1. Enter your login credentials. - ![Login through identity provider](./images/Login-through-identity-provider.png) + ![Login through identity provider](./images/Login-through-identity-provider.webp) You should get a successful response from the API server: diff --git a/website/documentation/guides/administer-shoots/scalability.md b/website/documentation/guides/administer-shoots/scalability.md index ca18362d3..26ea31d30 100644 --- a/website/documentation/guides/administer-shoots/scalability.md +++ b/website/documentation/guides/administer-shoots/scalability.md @@ -19,7 +19,7 @@ For a complex, distributed system like Kubernetes it is impossible to give absol Let's take a rather simple example of two dimensions - the number of `Pods` per `Node` and number of `Nodes` in a cluster. According to the [scalability thresholds documentation](https://github.com/kubernetes/community/blob/master/sig-scalability/configs-and-limits/thresholds.md), Kubernetes can scale up to 5000 `Nodes` and with default settings accommodate a maximum of 110 `Pods` on a single `Node`. Pushing only a single dimension towards its limit will likely harm the cluster. But if both are pushed simultaneously, any cluster will break way before reaching one dimension's limit. -![Pods and Nodes](./images/pod-nodes.png) +![Pods and Nodes](./images/pod-nodes.webp) What sounds rather straightforward in theory can be a bit trickier in reality. While 110 `Pods` is the default limit, we successfully pushed beyond that and in certain cases run up to 800 `Pods` per `Node` without breaking the cluster (see [our remarks on higher pod density per node](https://gardener.cloud/blog/2025/04/04-17-leaner-clusters-lower-bills/#enabling-higher-pod-density-per-node)). This is possible in an environment where one knows and controls all workloads and cluster configurations. It still requires careful testing, though, and comes at the cost of limiting the scalability of other dimensions, like the number of `Nodes`. diff --git a/website/documentation/guides/applications/antipattern.md b/website/documentation/guides/applications/antipattern.md index 6f90b23d2..7d94d6a4a 100644 --- a/website/documentation/guides/applications/antipattern.md +++ b/website/documentation/guides/applications/antipattern.md @@ -8,7 +8,7 @@ category: Getting Started scope: app-developer --- -![antipattern](./images/howto-antipattern.png) +![antipattern](./images/howto-antipattern.webp) This HowTo covers common Kubernetes antipatterns that we have seen over the past months. diff --git a/website/documentation/guides/applications/images/gardener_addon_checkboxes.png b/website/documentation/guides/applications/images/gardener_addon_checkboxes.png deleted file mode 100644 index cc4448996..000000000 Binary files a/website/documentation/guides/applications/images/gardener_addon_checkboxes.png and /dev/null differ diff --git a/website/documentation/guides/applications/images/gardener_addon_checkboxes.webp b/website/documentation/guides/applications/images/gardener_addon_checkboxes.webp new file mode 100644 index 000000000..04a807958 Binary files /dev/null and b/website/documentation/guides/applications/images/gardener_addon_checkboxes.webp differ diff --git a/website/documentation/guides/applications/images/gardener_service_account.png b/website/documentation/guides/applications/images/gardener_service_account.png deleted file mode 100644 index 40a070197..000000000 Binary files a/website/documentation/guides/applications/images/gardener_service_account.png and /dev/null differ diff --git a/website/documentation/guides/applications/images/gardener_service_account.webp b/website/documentation/guides/applications/images/gardener_service_account.webp new file mode 100644 index 000000000..7d1d54ea5 Binary files /dev/null and b/website/documentation/guides/applications/images/gardener_service_account.webp differ diff --git a/website/documentation/guides/applications/images/gardener_shoot_creation.png b/website/documentation/guides/applications/images/gardener_shoot_creation.png deleted file mode 100644 index 791942ffd..000000000 Binary files a/website/documentation/guides/applications/images/gardener_shoot_creation.png and /dev/null differ diff --git a/website/documentation/guides/applications/images/gardener_shoot_creation.webp b/website/documentation/guides/applications/images/gardener_shoot_creation.webp new file mode 100644 index 000000000..d20d81111 Binary files /dev/null and b/website/documentation/guides/applications/images/gardener_shoot_creation.webp differ diff --git a/website/documentation/guides/applications/images/howto-antipattern.png b/website/documentation/guides/applications/images/howto-antipattern.png deleted file mode 100644 index 8b45098ea..000000000 Binary files a/website/documentation/guides/applications/images/howto-antipattern.png and /dev/null differ diff --git a/website/documentation/guides/applications/images/howto-antipattern.webp b/website/documentation/guides/applications/images/howto-antipattern.webp new file mode 100644 index 000000000..02d6e2751 Binary files /dev/null and b/website/documentation/guides/applications/images/howto-antipattern.webp differ diff --git a/website/documentation/guides/applications/images/howto-namespaceisolation-with.png b/website/documentation/guides/applications/images/howto-namespaceisolation-with.png deleted file mode 100644 index ee6eff8de..000000000 Binary files a/website/documentation/guides/applications/images/howto-namespaceisolation-with.png and /dev/null differ diff --git a/website/documentation/guides/applications/images/howto-namespaceisolation-with.webp b/website/documentation/guides/applications/images/howto-namespaceisolation-with.webp new file mode 100644 index 000000000..1ae8ccf98 Binary files /dev/null and b/website/documentation/guides/applications/images/howto-namespaceisolation-with.webp differ diff --git a/website/documentation/guides/applications/images/howto-namespaceisolation-without.png b/website/documentation/guides/applications/images/howto-namespaceisolation-without.png deleted file mode 100644 index e1bbea74f..000000000 Binary files a/website/documentation/guides/applications/images/howto-namespaceisolation-without.png and /dev/null differ diff --git a/website/documentation/guides/applications/images/howto-namespaceisolation-without.webp b/website/documentation/guides/applications/images/howto-namespaceisolation-without.webp new file mode 100644 index 000000000..dfdfa5e61 Binary files /dev/null and b/website/documentation/guides/applications/images/howto-namespaceisolation-without.webp differ diff --git a/website/documentation/guides/applications/images/howto-namespaceisolation.png b/website/documentation/guides/applications/images/howto-namespaceisolation.png deleted file mode 100644 index f236c7872..000000000 Binary files a/website/documentation/guides/applications/images/howto-namespaceisolation.png and /dev/null differ diff --git a/website/documentation/guides/applications/images/howto-namespaceisolation.webp b/website/documentation/guides/applications/images/howto-namespaceisolation.webp new file mode 100644 index 000000000..3ae76cbdc Binary files /dev/null and b/website/documentation/guides/applications/images/howto-namespaceisolation.webp differ diff --git a/website/documentation/guides/applications/images/image1.png b/website/documentation/guides/applications/images/image1.png deleted file mode 100644 index ea9a618fd..000000000 Binary files a/website/documentation/guides/applications/images/image1.png and /dev/null differ diff --git a/website/documentation/guides/applications/images/image1.webp b/website/documentation/guides/applications/images/image1.webp new file mode 100644 index 000000000..8ff680ada Binary files /dev/null and b/website/documentation/guides/applications/images/image1.webp differ diff --git a/website/documentation/guides/applications/images/image2.png b/website/documentation/guides/applications/images/image2.png deleted file mode 100644 index 575aa385c..000000000 Binary files a/website/documentation/guides/applications/images/image2.png and /dev/null differ diff --git a/website/documentation/guides/applications/images/image2.webp b/website/documentation/guides/applications/images/image2.webp new file mode 100644 index 000000000..cfd7c49be Binary files /dev/null and b/website/documentation/guides/applications/images/image2.webp differ diff --git a/website/documentation/guides/applications/images/image3.png b/website/documentation/guides/applications/images/image3.png deleted file mode 100644 index c07679a01..000000000 Binary files a/website/documentation/guides/applications/images/image3.png and /dev/null differ diff --git a/website/documentation/guides/applications/images/image3.webp b/website/documentation/guides/applications/images/image3.webp new file mode 100644 index 000000000..23e041501 Binary files /dev/null and b/website/documentation/guides/applications/images/image3.webp differ diff --git a/website/documentation/guides/applications/images/image4.png b/website/documentation/guides/applications/images/image4.png deleted file mode 100644 index 6ca95c116..000000000 Binary files a/website/documentation/guides/applications/images/image4.png and /dev/null differ diff --git a/website/documentation/guides/applications/images/image4.webp b/website/documentation/guides/applications/images/image4.webp new file mode 100644 index 000000000..f59539d15 Binary files /dev/null and b/website/documentation/guides/applications/images/image4.webp differ diff --git a/website/documentation/guides/applications/images/image5.png b/website/documentation/guides/applications/images/image5.png deleted file mode 100644 index 3269f28c9..000000000 Binary files a/website/documentation/guides/applications/images/image5.png and /dev/null differ diff --git a/website/documentation/guides/applications/images/image5.webp b/website/documentation/guides/applications/images/image5.webp new file mode 100644 index 000000000..5bce3bca1 Binary files /dev/null and b/website/documentation/guides/applications/images/image5.webp differ diff --git a/website/documentation/guides/applications/images/image6.png b/website/documentation/guides/applications/images/image6.png deleted file mode 100644 index 599758db5..000000000 Binary files a/website/documentation/guides/applications/images/image6.png and /dev/null differ diff --git a/website/documentation/guides/applications/images/image6.webp b/website/documentation/guides/applications/images/image6.webp new file mode 100644 index 000000000..04c8da2ff Binary files /dev/null and b/website/documentation/guides/applications/images/image6.webp differ diff --git a/website/documentation/guides/applications/images/image7.png b/website/documentation/guides/applications/images/image7.png deleted file mode 100644 index 3dacb1965..000000000 Binary files a/website/documentation/guides/applications/images/image7.png and /dev/null differ diff --git a/website/documentation/guides/applications/images/image7.webp b/website/documentation/guides/applications/images/image7.webp new file mode 100644 index 000000000..e3be0ce98 Binary files /dev/null and b/website/documentation/guides/applications/images/image7.webp differ diff --git a/website/documentation/guides/applications/images/image8.png b/website/documentation/guides/applications/images/image8.png deleted file mode 100644 index 799d84ae4..000000000 Binary files a/website/documentation/guides/applications/images/image8.png and /dev/null differ diff --git a/website/documentation/guides/applications/images/image8.webp b/website/documentation/guides/applications/images/image8.webp new file mode 100644 index 000000000..2ab3245cf Binary files /dev/null and b/website/documentation/guides/applications/images/image8.webp differ diff --git a/website/documentation/guides/applications/images/image9.png b/website/documentation/guides/applications/images/image9.png deleted file mode 100644 index d890adf5d..000000000 Binary files a/website/documentation/guides/applications/images/image9.png and /dev/null differ diff --git a/website/documentation/guides/applications/images/image9.webp b/website/documentation/guides/applications/images/image9.webp new file mode 100644 index 000000000..d5e606e21 Binary files /dev/null and b/website/documentation/guides/applications/images/image9.webp differ diff --git a/website/documentation/guides/applications/insecure-configuration.md b/website/documentation/guides/applications/insecure-configuration.md index 26198c60b..0ec951ddc 100644 --- a/website/documentation/guides/applications/insecure-configuration.md +++ b/website/documentation/guides/applications/insecure-configuration.md @@ -50,7 +50,7 @@ certificate. The API server is started with the flag: The API server will check whether the client certificate presented by kubectl, kubelet, scheduler or another component is really signed by the configured certificate authority for clients. -![](./images/image3.png)*The API server can have many clients of various kinds*


+![](./images/image3.webp)*The API server can have many clients of various kinds*


However, it is possible to configure the API server differently for use with an intermediate authenticating proxy. The proxy will authenticate the client with its own custom method and then issue HTTP requests to the API server with additional HTTP headers specifying the user name and group name. The API server should only accept HTTP requests with HTTP headers from a legitimate proxy. To allow the API server to check incoming requests, you need pass on a list of certificate authorities (CAs) to it. Requests coming from a proxy are only accepted if they use a client certificate that is signed by one of the CAs of that list. @@ -60,11 +60,11 @@ However, it is possible to configure the API server differently for use with an --requestheader-group-headers=X-Remote-Group ``` -![](./images/image2.png)*API server clients can reach the API server through an authenticating proxy*


+![](./images/image2.webp)*API server clients can reach the API server through an authenticating proxy*


So far, so good. But what happens if the malicious user “Mallory” tries to connect directly to the API server and reuses the HTTP headers to pretend to be someone else? -![](./images/image8.png)*What happens when a client bypasses the proxy, connecting directly to the API server?*


+![](./images/image8.webp)*What happens when a client bypasses the proxy, connecting directly to the API server?*


With a correct configuration, Mallory’s kubeconfig will have a certificate signed by the API server certificate authority but not signed by the proxy certificate authority. So the API server will not accept the extra HTTP header “X-Remote-Group: system:masters”. @@ -78,11 +78,11 @@ We worked on [improving the Kubernetes documentation](https://github.com/kuberne The API server is a central component of Kubernetes and many components initiate connections to it, including the kubelet running on worker nodes. Most of the requests from those clients will end up updating Kubernetes objects (pods, services, deployments, and so on) in the etcd database but the API server usually does not need to initiate TCP connections itself. -![](./images/image7.png)*The API server is mostly a component that receives requests*


+![](./images/image7.webp)*The API server is mostly a component that receives requests*


However, there are exceptions. Some `kubectl` commands will trigger the API server to open a new connection to the kubelet. `kubectl exec` is one of those commands. In order to get the standard I/Os from the pod, the API server will start an HTTP connection to the kubelet on the worker node where the pod is running. Depending on the container runtime used, it can be done in different ways, but one way to do it is for the kubelet to reply with a HTTP-302 redirection to the [Container Runtime Interface (CRI)](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-node/container-runtime-interface.md). Basically, the kubelet is telling the API server to get the streams from CRI itself directly instead of forwarding. The redirection from the kubelet will only change the port and path from the URL; the IP address will not be changed because the kubelet and the CRI component run on the same worker node. -![](./images/image1.png)*But the API server also initiates some connections, for example, to worker nodes*


+![](./images/image1.webp)*But the API server also initiates some connections, for example, to worker nodes*


It’s often quite easy for users of a Kubernetes cluster to get access to worker nodes and tamper with the kubelet. They could be given explicit SSH access or they could be given a kubeconfig with enough privileges to create privileged pods or even just pods with “host” volumes. @@ -91,7 +91,7 @@ On setups like, for example, GKE or Gardener, the control plane is running on se What would happen if a user was tampering with the kubelet to make it maliciously redirect `kubectl exec` requests to a different random endpoint? Most likely the given endpoint would not speak to the streaming server protocol, so there would be an error. However, the full HTTP payload from the endpoint is included in the error message printed by kubectl exec. -![](./images/image6.png)*The API server is tricked to connect to other components*


+![](./images/image6.webp)*The API server is tricked to connect to other components*


The impact of this issue depends on the specific setup. But in many configurations, we could find a metadata service (such as the [AWS metadata service](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)) containing user data, configurations and credentials. The setup we explored had a different AWS account and a different [EC2 instance profile](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) for the worker nodes and the control plane. This issue allowed users to get access to the AWS metadata service in the context of the control plane, which they should not have access to. @@ -112,13 +112,13 @@ This is tracked in [CVE-2018-2475](https://cve.mitre.org/cgi-bin/cvename.cgi?nam For our tests, we had access to a Kubernetes setup where users are not only given access to the API server in the control plane, but also to a Grafana instance that is used to gather data from their Kubernetes clusters via Prometheus. The control plane is managed and users don’t have access to the nodes that it runs. They can only access the API server and Grafana via a load balancer. The internal network of the control plane is therefore hidden to users. -![](./images/image5.png)*Prometheus and Grafana can be used to monitor worker nodes*


+![](./images/image5.webp)*Prometheus and Grafana can be used to monitor worker nodes*


Unfortunately, that setup was not protecting the control plane network from nosy users. By configuring a new custom data source in Grafana, we could send HTTP requests to target the control plane network, for example the AWS metadata service. The reply payload is not displayed on the Grafana Web UI but it is possible to access it from the debugging console of the Chrome browser. -![](./images/image9.png)*Credentials can be retrieved from the debugging console of Chrome*


+![](./images/image9.webp)*Credentials can be retrieved from the debugging console of Chrome*


-![](./images/image4.png)*Adding a Grafana data source is a way to issue HTTP requests to arbitrary targets*


+![](./images/image4.webp)*Adding a Grafana data source is a way to issue HTTP requests to arbitrary targets*


In that installation, users could get the “user-data” for the seed cluster from the metadata service and retrieve a kubeconfig for that Kubernetes cluster. diff --git a/website/documentation/guides/applications/knative-install.md b/website/documentation/guides/applications/knative-install.md index 6a37418e9..3e3c5e83a 100644 --- a/website/documentation/guides/applications/knative-install.md +++ b/website/documentation/guides/applications/knative-install.md @@ -32,7 +32,7 @@ Knative requires a Kubernetes cluster v1.15 or newer. If you are not the Gardener Administrator already, you can create a technical user in the Gardener dashboard. Go to the "Members" section and add a service account. You can then download the kubeconfig for your project. You can skip this step if you create your cluster using the user interface; it is only needed for programmatic access, make sure you set `export KUBECONFIG=garden-my-project.yaml` in your shell. - ![Download kubeconfig for Gardener](./images/gardener_service_account.png) + ![Download kubeconfig for Gardener](./images/gardener_service_account.webp) ### Creating a Kubernetes Cluster @@ -43,7 +43,7 @@ kubectl apply --filename my-cluster.yaml ``` The easier alternative is to create the cluster following the cluster creation wizard in the Gardener dashboard: -![shoot creation](./images/gardener_shoot_creation.png "shoot creation via the dashboard") +![shoot creation](./images/gardener_shoot_creation.webp "shoot creation via the dashboard") ### Configure kubectl for Your Cluster diff --git a/website/documentation/guides/applications/network-isolation.md b/website/documentation/guides/applications/network-isolation.md index 731b09c14..08cc46b55 100644 --- a/website/documentation/guides/applications/network-isolation.md +++ b/website/documentation/guides/applications/network-isolation.md @@ -10,7 +10,7 @@ scope: app-developer You can configure a **NetworkPolicy** to deny all the traffic from other namespaces while allowing all the traffic coming from the same namespace the pod was deployed into. -howto-namespaceisolation +howto-namespaceisolation **There are many reasons why you may chose to employ Kubernetes network policies:** @@ -48,7 +48,7 @@ kubectl expose deployment nginx --port=80 --type=NodePort -n=customer2 ## Test Without NP -howto-namespaceisolation-without +howto-namespaceisolation-without Create a pod with *curl* preinstalled inside the namespace *customer1*: @@ -71,7 +71,7 @@ Both calls are done in a pod within the namespace *customer1* and both nginx ser --- ## Test with NP -howto-namespaceisolation-with +howto-namespaceisolation-with Install the **NetworkPolicy** from your shell: diff --git a/website/documentation/guides/client-tools/bash-kubeconfig.md b/website/documentation/guides/client-tools/bash-kubeconfig.md index 9fc8a5d7b..55e79f2fe 100644 --- a/website/documentation/guides/client-tools/bash-kubeconfig.md +++ b/website/documentation/guides/client-tools/bash-kubeconfig.md @@ -92,6 +92,6 @@ Copy following code to `Microsoft.PowerShell_profile.ps1` $host.ui.rawui.WindowTitle = prompt_k8s ``` -![port-forward](./images/howto-bash_kubeconfig_powershell.png) +![port-forward](./images/howto-bash_kubeconfig_powershell.webp) If you want to switch to different cluster, you can set `KUBECONFIG` to new value, and re-run the file `Microsoft.PowerShell_profile.ps1` diff --git a/website/documentation/guides/client-tools/images/howto-bash_kubeconfig_powershell.png b/website/documentation/guides/client-tools/images/howto-bash_kubeconfig_powershell.png deleted file mode 100644 index 15f5eb6f6..000000000 Binary files a/website/documentation/guides/client-tools/images/howto-bash_kubeconfig_powershell.png and /dev/null differ diff --git a/website/documentation/guides/client-tools/images/howto-bash_kubeconfig_powershell.webp b/website/documentation/guides/client-tools/images/howto-bash_kubeconfig_powershell.webp new file mode 100644 index 000000000..737db1fc6 Binary files /dev/null and b/website/documentation/guides/client-tools/images/howto-bash_kubeconfig_powershell.webp differ diff --git a/website/documentation/guides/client-tools/images/key.png b/website/documentation/guides/client-tools/images/key.png deleted file mode 100644 index 0d0b12a8a..000000000 Binary files a/website/documentation/guides/client-tools/images/key.png and /dev/null differ diff --git a/website/documentation/guides/client-tools/images/key.webp b/website/documentation/guides/client-tools/images/key.webp new file mode 100644 index 000000000..be1c1697c Binary files /dev/null and b/website/documentation/guides/client-tools/images/key.webp differ diff --git a/website/documentation/guides/client-tools/images/kubeconfig-initial.png b/website/documentation/guides/client-tools/images/kubeconfig-initial.png deleted file mode 100644 index 79fbc36b8..000000000 Binary files a/website/documentation/guides/client-tools/images/kubeconfig-initial.png and /dev/null differ diff --git a/website/documentation/guides/client-tools/images/kubeconfig-initial.webp b/website/documentation/guides/client-tools/images/kubeconfig-initial.webp new file mode 100644 index 000000000..527aa3a6a Binary files /dev/null and b/website/documentation/guides/client-tools/images/kubeconfig-initial.webp differ diff --git a/website/documentation/guides/client-tools/working-with-kubeconfig.md b/website/documentation/guides/client-tools/working-with-kubeconfig.md index 8449d7fa7..7c37741bf 100644 --- a/website/documentation/guides/client-tools/working-with-kubeconfig.md +++ b/website/documentation/guides/client-tools/working-with-kubeconfig.md @@ -19,7 +19,7 @@ If you've become aware of a security breach that affects you, you may want to re Never distribute the `kubeconfig`, which you can download directly within the Gardener dashboard, for a productive cluster. -![kubeconfig-dont](./images/kubeconfig-initial.png) +![kubeconfig-dont](./images/kubeconfig-initial.webp) ## Create a Custom kubeconfig File for Each User diff --git a/website/documentation/guides/monitoring-and-troubleshooting/images/3da659e9cc4744a2ad3e1c6a50d39c04.png b/website/documentation/guides/monitoring-and-troubleshooting/images/3da659e9cc4744a2ad3e1c6a50d39c04.png deleted file mode 100644 index 2992a194b..000000000 Binary files a/website/documentation/guides/monitoring-and-troubleshooting/images/3da659e9cc4744a2ad3e1c6a50d39c04.png and /dev/null differ diff --git a/website/documentation/guides/monitoring-and-troubleshooting/images/3da659e9cc4744a2ad3e1c6a50d39c04.webp b/website/documentation/guides/monitoring-and-troubleshooting/images/3da659e9cc4744a2ad3e1c6a50d39c04.webp new file mode 100644 index 000000000..952a143e3 Binary files /dev/null and b/website/documentation/guides/monitoring-and-troubleshooting/images/3da659e9cc4744a2ad3e1c6a50d39c04.webp differ diff --git a/website/documentation/guides/monitoring-and-troubleshooting/images/913441003e5641bc90249bdc07d55656.png b/website/documentation/guides/monitoring-and-troubleshooting/images/913441003e5641bc90249bdc07d55656.png deleted file mode 100644 index fe2c1ad02..000000000 Binary files a/website/documentation/guides/monitoring-and-troubleshooting/images/913441003e5641bc90249bdc07d55656.png and /dev/null differ diff --git a/website/documentation/guides/monitoring-and-troubleshooting/images/913441003e5641bc90249bdc07d55656.webp b/website/documentation/guides/monitoring-and-troubleshooting/images/913441003e5641bc90249bdc07d55656.webp new file mode 100644 index 000000000..4123347b9 Binary files /dev/null and b/website/documentation/guides/monitoring-and-troubleshooting/images/913441003e5641bc90249bdc07d55656.webp differ diff --git a/website/documentation/guides/monitoring-and-troubleshooting/images/9fb6ca4ff9b7480f93debba833f48590.png b/website/documentation/guides/monitoring-and-troubleshooting/images/9fb6ca4ff9b7480f93debba833f48590.png deleted file mode 100644 index c8d135fc3..000000000 Binary files a/website/documentation/guides/monitoring-and-troubleshooting/images/9fb6ca4ff9b7480f93debba833f48590.png and /dev/null differ diff --git a/website/documentation/guides/monitoring-and-troubleshooting/images/9fb6ca4ff9b7480f93debba833f48590.webp b/website/documentation/guides/monitoring-and-troubleshooting/images/9fb6ca4ff9b7480f93debba833f48590.webp new file mode 100644 index 000000000..6ae6c9a32 Binary files /dev/null and b/website/documentation/guides/monitoring-and-troubleshooting/images/9fb6ca4ff9b7480f93debba833f48590.webp differ diff --git a/website/documentation/guides/monitoring-and-troubleshooting/images/db573582bfc544d294cbde8906a74e07.png b/website/documentation/guides/monitoring-and-troubleshooting/images/db573582bfc544d294cbde8906a74e07.png deleted file mode 100644 index 08f6efb75..000000000 Binary files a/website/documentation/guides/monitoring-and-troubleshooting/images/db573582bfc544d294cbde8906a74e07.png and /dev/null differ diff --git a/website/documentation/guides/monitoring-and-troubleshooting/images/db573582bfc544d294cbde8906a74e07.webp b/website/documentation/guides/monitoring-and-troubleshooting/images/db573582bfc544d294cbde8906a74e07.webp new file mode 100644 index 000000000..8126cd9c6 Binary files /dev/null and b/website/documentation/guides/monitoring-and-troubleshooting/images/db573582bfc544d294cbde8906a74e07.webp differ diff --git a/website/documentation/guides/monitoring-and-troubleshooting/images/f7b10d48edf44c17ba838ff5c429e39d.png b/website/documentation/guides/monitoring-and-troubleshooting/images/f7b10d48edf44c17ba838ff5c429e39d.png deleted file mode 100644 index 4aa4d6b2b..000000000 Binary files a/website/documentation/guides/monitoring-and-troubleshooting/images/f7b10d48edf44c17ba838ff5c429e39d.png and /dev/null differ diff --git a/website/documentation/guides/monitoring-and-troubleshooting/images/f7b10d48edf44c17ba838ff5c429e39d.webp b/website/documentation/guides/monitoring-and-troubleshooting/images/f7b10d48edf44c17ba838ff5c429e39d.webp new file mode 100644 index 000000000..74869d3e7 Binary files /dev/null and b/website/documentation/guides/monitoring-and-troubleshooting/images/f7b10d48edf44c17ba838ff5c429e39d.webp differ diff --git a/website/documentation/guides/monitoring-and-troubleshooting/images/howto-kubetail.png b/website/documentation/guides/monitoring-and-troubleshooting/images/howto-kubetail.png deleted file mode 100644 index 4c49d99dd..000000000 Binary files a/website/documentation/guides/monitoring-and-troubleshooting/images/howto-kubetail.png and /dev/null differ diff --git a/website/documentation/guides/monitoring-and-troubleshooting/images/howto-kubetail.webp b/website/documentation/guides/monitoring-and-troubleshooting/images/howto-kubetail.webp new file mode 100644 index 000000000..3c84874da Binary files /dev/null and b/website/documentation/guides/monitoring-and-troubleshooting/images/howto-kubetail.webp differ diff --git a/website/documentation/guides/monitoring-and-troubleshooting/shell-to-node.md b/website/documentation/guides/monitoring-and-troubleshooting/shell-to-node.md index aa05b7eb3..32dcdf4d2 100644 --- a/website/documentation/guides/monitoring-and-troubleshooting/shell-to-node.md +++ b/website/documentation/guides/monitoring-and-troubleshooting/shell-to-node.md @@ -43,28 +43,28 @@ All of the described approaches involve scheduling a pod with root permissions a **Prerequisite**: the terminal feature is configured for the Gardener dashboard. 1. Navigate to the cluster overview page and find the `Terminal` in the `Access` tile. -
- Access Tile -
- Select the target Cluster (Garden, Seed / Control Plane, Shoot cluster) depending on the requirements and access rights (only certain users have access to the Seed Control Plane). + +Access Tile +
+ +Select the target Cluster (Garden, Seed / Control Plane, Shoot cluster) depending on the requirements and access rights (only certain users have access to the Seed Control Plane). 1. To open the terminal configuration, interact with the top right-hand corner of the screen. -
- Terminal configuration -
+ +Terminal configuration +
1. Set the Terminal Runtime to "Privileged". Also, specify the target node from the drop-down menu. -
- Dashboard terminal pod configuration -
+Dashboard terminal pod configuration +
#### Result The Dashboard then schedules a pod and opens a shell session to the node. To get access to the common binaries installed on the host, prefix the command with `chroot /hostroot`. Note that the path depends on where the root path is mounted in the container. In the default image used by the Dashboard, it is under `/hostroot`. -Dashboard terminal pod configuration +Dashboard terminal pod configuration
### Gardener Ops Toolbelt @@ -189,9 +189,7 @@ Despite some cloud provider specifics, they can be generalized to the following The following diagram shows an overview of how the SSH access to the target instance works: -
-SSH Bastion diagram -
+SSH Bastion diagram
This guide demonstrates the setup of a bastion on AWS. diff --git a/website/documentation/guides/monitoring-and-troubleshooting/tail-logfile.md b/website/documentation/guides/monitoring-and-troubleshooting/tail-logfile.md index 81fcb1169..85f514b56 100644 --- a/website/documentation/guides/monitoring-and-troubleshooting/tail-logfile.md +++ b/website/documentation/guides/monitoring-and-troubleshooting/tail-logfile.md @@ -12,7 +12,7 @@ One thing that always bothered me was that I couldn't get logs of several pods a This is something you really need a lot, at least if you run several instances of a pod behind a `deployment`. This is even more so if you don't have a Kibana or a similar setup. -howto-kubetail +howto-kubetail ## Solution diff --git a/website/hugo/layouts/partials/footer.html b/website/hugo/layouts/partials/footer.html index db1ed610b..f7467b1f4 100755 --- a/website/hugo/layouts/partials/footer.html +++ b/website/hugo/layouts/partials/footer.html @@ -25,7 +25,7 @@
  • - +
    GitHub
  • diff --git a/website/hugo/static/images/branding/beezlab.png b/website/hugo/static/images/branding/beezlab.png deleted file mode 100644 index 410f1775a..000000000 Binary files a/website/hugo/static/images/branding/beezlab.png and /dev/null differ diff --git a/website/hugo/static/images/branding/beezlab.webp b/website/hugo/static/images/branding/beezlab.webp new file mode 100644 index 000000000..97d37b962 Binary files /dev/null and b/website/hugo/static/images/branding/beezlab.webp differ diff --git a/website/hugo/static/images/branding/fits.png b/website/hugo/static/images/branding/fits.png deleted file mode 100644 index 952d8f531..000000000 Binary files a/website/hugo/static/images/branding/fits.png and /dev/null differ diff --git a/website/hugo/static/images/branding/fits.webp b/website/hugo/static/images/branding/fits.webp new file mode 100644 index 000000000..c8633707a Binary files /dev/null and b/website/hugo/static/images/branding/fits.webp differ diff --git a/website/hugo/static/images/branding/github.png b/website/hugo/static/images/branding/github.png deleted file mode 100644 index 9c9e6f179..000000000 Binary files a/website/hugo/static/images/branding/github.png and /dev/null differ diff --git a/website/hugo/static/images/branding/github.webp b/website/hugo/static/images/branding/github.webp new file mode 100644 index 000000000..1c42a7156 Binary files /dev/null and b/website/hugo/static/images/branding/github.webp differ diff --git a/website/hugo/static/images/branding/pingcap.png b/website/hugo/static/images/branding/pingcap.png deleted file mode 100644 index b8c95bc9b..000000000 Binary files a/website/hugo/static/images/branding/pingcap.png and /dev/null differ diff --git a/website/hugo/static/images/branding/pingcap.webp b/website/hugo/static/images/branding/pingcap.webp new file mode 100644 index 000000000..5c71cb691 Binary files /dev/null and b/website/hugo/static/images/branding/pingcap.webp differ diff --git a/website/hugo/static/images/branding/sap.png b/website/hugo/static/images/branding/sap.png deleted file mode 100644 index 571705781..000000000 Binary files a/website/hugo/static/images/branding/sap.png and /dev/null differ diff --git a/website/hugo/static/images/branding/sap.webp b/website/hugo/static/images/branding/sap.webp new file mode 100644 index 000000000..6e56a792e Binary files /dev/null and b/website/hugo/static/images/branding/sap.webp differ diff --git a/website/hugo/static/images/branding/scaleup.png b/website/hugo/static/images/branding/scaleup.png deleted file mode 100644 index fd3c437e4..000000000 Binary files a/website/hugo/static/images/branding/scaleup.png and /dev/null differ diff --git a/website/hugo/static/images/branding/scaleup.webp b/website/hugo/static/images/branding/scaleup.webp new file mode 100644 index 000000000..b34302b3d Binary files /dev/null and b/website/hugo/static/images/branding/scaleup.webp differ diff --git a/website/hugo/static/images/branding/slack-logo.png b/website/hugo/static/images/branding/slack-logo.png deleted file mode 100644 index 5d458b27a..000000000 Binary files a/website/hugo/static/images/branding/slack-logo.png and /dev/null differ diff --git a/website/hugo/static/images/branding/slack-logo.webp b/website/hugo/static/images/branding/slack-logo.webp new file mode 100644 index 000000000..f21a23514 Binary files /dev/null and b/website/hugo/static/images/branding/slack-logo.webp differ diff --git a/website/hugo/static/images/branding/slack.png b/website/hugo/static/images/branding/slack.png deleted file mode 100755 index 4a862730e..000000000 Binary files a/website/hugo/static/images/branding/slack.png and /dev/null differ diff --git a/website/hugo/static/images/branding/slack.webp b/website/hugo/static/images/branding/slack.webp new file mode 100644 index 000000000..4a2d391c4 Binary files /dev/null and b/website/hugo/static/images/branding/slack.webp differ diff --git a/website/hugo/static/images/branding/youtube-logo.png b/website/hugo/static/images/branding/youtube-logo.png deleted file mode 100644 index 85573fff2..000000000 Binary files a/website/hugo/static/images/branding/youtube-logo.png and /dev/null differ diff --git a/website/hugo/static/images/branding/youtube-logo.webp b/website/hugo/static/images/branding/youtube-logo.webp new file mode 100644 index 000000000..dc81e43d0 Binary files /dev/null and b/website/hugo/static/images/branding/youtube-logo.webp differ diff --git a/website/hugo/static/images/lp/garden-linux-logo.png b/website/hugo/static/images/lp/garden-linux-logo.png deleted file mode 100644 index b10095503..000000000 Binary files a/website/hugo/static/images/lp/garden-linux-logo.png and /dev/null differ diff --git a/website/hugo/static/images/lp/garden-linux-logo.webp b/website/hugo/static/images/lp/garden-linux-logo.webp new file mode 100644 index 000000000..42ea40d7e Binary files /dev/null and b/website/hugo/static/images/lp/garden-linux-logo.webp differ diff --git a/website/hugo/static/images/lp/platforms/aws.png b/website/hugo/static/images/lp/platforms/aws.png deleted file mode 100644 index 00242578a..000000000 Binary files a/website/hugo/static/images/lp/platforms/aws.png and /dev/null differ diff --git a/website/hugo/static/images/lp/platforms/aws.webp b/website/hugo/static/images/lp/platforms/aws.webp new file mode 100644 index 000000000..0e42c20db Binary files /dev/null and b/website/hugo/static/images/lp/platforms/aws.webp differ diff --git a/website/hugo/static/images/lp/platforms/metal-pod.png b/website/hugo/static/images/lp/platforms/metal-pod.png deleted file mode 100644 index 9b8ae8228..000000000 Binary files a/website/hugo/static/images/lp/platforms/metal-pod.png and /dev/null differ diff --git a/website/hugo/static/images/lp/platforms/metal-pod.webp b/website/hugo/static/images/lp/platforms/metal-pod.webp new file mode 100644 index 000000000..c2993d395 Binary files /dev/null and b/website/hugo/static/images/lp/platforms/metal-pod.webp differ diff --git a/website/hugo/static/images/lp/platforms/packet-rgb.png b/website/hugo/static/images/lp/platforms/packet-rgb.png deleted file mode 100644 index d5c3c9a2a..000000000 Binary files a/website/hugo/static/images/lp/platforms/packet-rgb.png and /dev/null differ diff --git a/website/hugo/static/images/lp/platforms/packet-rgb.webp b/website/hugo/static/images/lp/platforms/packet-rgb.webp new file mode 100644 index 000000000..82a3c353d Binary files /dev/null and b/website/hugo/static/images/lp/platforms/packet-rgb.webp differ diff --git a/website/hugo/static/images/lp/platforms/packet.png b/website/hugo/static/images/lp/platforms/packet.png deleted file mode 100644 index f376dcae9..000000000 Binary files a/website/hugo/static/images/lp/platforms/packet.png and /dev/null differ diff --git a/website/hugo/static/images/lp/platforms/packet.webp b/website/hugo/static/images/lp/platforms/packet.webp new file mode 100644 index 000000000..c6e61d626 Binary files /dev/null and b/website/hugo/static/images/lp/platforms/packet.webp differ diff --git a/website/hugo/static/images/lp/platforms/vmware.png b/website/hugo/static/images/lp/platforms/vmware.png deleted file mode 100644 index e158f72e0..000000000 Binary files a/website/hugo/static/images/lp/platforms/vmware.png and /dev/null differ diff --git a/website/hugo/static/images/lp/platforms/vmware.webp b/website/hugo/static/images/lp/platforms/vmware.webp new file mode 100644 index 000000000..4c470d79d Binary files /dev/null and b/website/hugo/static/images/lp/platforms/vmware.webp differ diff --git a/website/index.md b/website/index.md index b9748b364..688665803 100644 --- a/website/index.md +++ b/website/index.md @@ -27,12 +27,12 @@ features: link: /docs/getting-started/architecture badgePlacement: top-right badges: - - src: /kubernets-certification/color.png - darkSrc: /kubernets-certification/white.png + - src: /kubernets-certification/color.webp + darkSrc: /kubernets-certification/white.webp href: https://testgrid.k8s.io/conformance-gardener alt: Kubernetes Conformance - - src: /kubernets-certification/ai-color.png - darkSrc: /kubernets-certification/ai-white.png + - src: /kubernets-certification/ai-color.webp + darkSrc: /kubernets-certification/ai-white.webp href: /blog/2025/11/11-12-gardener-ai-conformance alt: Kubernetes AI Conformance - icon: diff --git a/website/public/branding/beezlab.png b/website/public/branding/beezlab.png deleted file mode 100644 index 410f1775a..000000000 Binary files a/website/public/branding/beezlab.png and /dev/null differ diff --git a/website/public/branding/beezlab.webp b/website/public/branding/beezlab.webp new file mode 100644 index 000000000..97d37b962 Binary files /dev/null and b/website/public/branding/beezlab.webp differ diff --git a/website/public/branding/fits.png b/website/public/branding/fits.png deleted file mode 100644 index 952d8f531..000000000 Binary files a/website/public/branding/fits.png and /dev/null differ diff --git a/website/public/branding/fits.webp b/website/public/branding/fits.webp new file mode 100644 index 000000000..c8633707a Binary files /dev/null and b/website/public/branding/fits.webp differ diff --git a/website/public/branding/github.png b/website/public/branding/github.png deleted file mode 100644 index 9c9e6f179..000000000 Binary files a/website/public/branding/github.png and /dev/null differ diff --git a/website/public/branding/github.webp b/website/public/branding/github.webp new file mode 100644 index 000000000..1c42a7156 Binary files /dev/null and b/website/public/branding/github.webp differ diff --git a/website/public/branding/pingcap.png b/website/public/branding/pingcap.png deleted file mode 100644 index b8c95bc9b..000000000 Binary files a/website/public/branding/pingcap.png and /dev/null differ diff --git a/website/public/branding/pingcap.webp b/website/public/branding/pingcap.webp new file mode 100644 index 000000000..5c71cb691 Binary files /dev/null and b/website/public/branding/pingcap.webp differ diff --git a/website/public/branding/sap.png b/website/public/branding/sap.png deleted file mode 100644 index 571705781..000000000 Binary files a/website/public/branding/sap.png and /dev/null differ diff --git a/website/public/branding/sap.webp b/website/public/branding/sap.webp new file mode 100644 index 000000000..6e56a792e Binary files /dev/null and b/website/public/branding/sap.webp differ diff --git a/website/public/branding/scaleup.png b/website/public/branding/scaleup.png deleted file mode 100644 index fd3c437e4..000000000 Binary files a/website/public/branding/scaleup.png and /dev/null differ diff --git a/website/public/branding/scaleup.webp b/website/public/branding/scaleup.webp new file mode 100644 index 000000000..b34302b3d Binary files /dev/null and b/website/public/branding/scaleup.webp differ diff --git a/website/public/branding/slack-logo.png b/website/public/branding/slack-logo.png deleted file mode 100644 index 5d458b27a..000000000 Binary files a/website/public/branding/slack-logo.png and /dev/null differ diff --git a/website/public/branding/slack-logo.webp b/website/public/branding/slack-logo.webp new file mode 100644 index 000000000..f21a23514 Binary files /dev/null and b/website/public/branding/slack-logo.webp differ diff --git a/website/public/branding/slack.png b/website/public/branding/slack.png deleted file mode 100755 index 4a862730e..000000000 Binary files a/website/public/branding/slack.png and /dev/null differ diff --git a/website/public/branding/slack.webp b/website/public/branding/slack.webp new file mode 100644 index 000000000..4a2d391c4 Binary files /dev/null and b/website/public/branding/slack.webp differ diff --git a/website/public/branding/youtube-logo.png b/website/public/branding/youtube-logo.png deleted file mode 100644 index 85573fff2..000000000 Binary files a/website/public/branding/youtube-logo.png and /dev/null differ diff --git a/website/public/branding/youtube-logo.webp b/website/public/branding/youtube-logo.webp new file mode 100644 index 000000000..dc81e43d0 Binary files /dev/null and b/website/public/branding/youtube-logo.webp differ diff --git a/website/public/eu-support.png b/website/public/eu-support.png deleted file mode 100644 index ab642e34a..000000000 Binary files a/website/public/eu-support.png and /dev/null differ diff --git a/website/public/eu-support.webp b/website/public/eu-support.webp new file mode 100644 index 000000000..9e0b54c3a Binary files /dev/null and b/website/public/eu-support.webp differ diff --git a/website/public/kubernets-certification/ai-color.png b/website/public/kubernets-certification/ai-color.png deleted file mode 100644 index 922fcea84..000000000 Binary files a/website/public/kubernets-certification/ai-color.png and /dev/null differ diff --git a/website/public/kubernets-certification/ai-color.webp b/website/public/kubernets-certification/ai-color.webp new file mode 100644 index 000000000..c5559547f Binary files /dev/null and b/website/public/kubernets-certification/ai-color.webp differ diff --git a/website/public/kubernets-certification/ai-white.png b/website/public/kubernets-certification/ai-white.png deleted file mode 100644 index 62e7a1767..000000000 Binary files a/website/public/kubernets-certification/ai-white.png and /dev/null differ diff --git a/website/public/kubernets-certification/ai-white.webp b/website/public/kubernets-certification/ai-white.webp new file mode 100644 index 000000000..9c4e55af6 Binary files /dev/null and b/website/public/kubernets-certification/ai-white.webp differ diff --git a/website/public/kubernets-certification/color.png b/website/public/kubernets-certification/color.png deleted file mode 100644 index 81e688017..000000000 Binary files a/website/public/kubernets-certification/color.png and /dev/null differ diff --git a/website/public/kubernets-certification/color.webp b/website/public/kubernets-certification/color.webp new file mode 100644 index 000000000..a698e3192 Binary files /dev/null and b/website/public/kubernets-certification/color.webp differ diff --git a/website/public/kubernets-certification/white.png b/website/public/kubernets-certification/white.png deleted file mode 100644 index f65302739..000000000 Binary files a/website/public/kubernets-certification/white.png and /dev/null differ diff --git a/website/public/kubernets-certification/white.webp b/website/public/kubernets-certification/white.webp new file mode 100644 index 000000000..23606b97c Binary files /dev/null and b/website/public/kubernets-certification/white.webp differ diff --git a/website/public/lp/garden-linux-logo.png b/website/public/lp/garden-linux-logo.png deleted file mode 100644 index b10095503..000000000 Binary files a/website/public/lp/garden-linux-logo.png and /dev/null differ diff --git a/website/public/lp/garden-linux-logo.webp b/website/public/lp/garden-linux-logo.webp new file mode 100644 index 000000000..42ea40d7e Binary files /dev/null and b/website/public/lp/garden-linux-logo.webp differ diff --git a/website/public/lp/platforms/aws.png b/website/public/lp/platforms/aws.png deleted file mode 100644 index 00242578a..000000000 Binary files a/website/public/lp/platforms/aws.png and /dev/null differ diff --git a/website/public/lp/platforms/aws.webp b/website/public/lp/platforms/aws.webp new file mode 100644 index 000000000..0e42c20db Binary files /dev/null and b/website/public/lp/platforms/aws.webp differ diff --git a/website/public/lp/platforms/metal-pod.png b/website/public/lp/platforms/metal-pod.png deleted file mode 100644 index 9b8ae8228..000000000 Binary files a/website/public/lp/platforms/metal-pod.png and /dev/null differ diff --git a/website/public/lp/platforms/metal-pod.webp b/website/public/lp/platforms/metal-pod.webp new file mode 100644 index 000000000..c2993d395 Binary files /dev/null and b/website/public/lp/platforms/metal-pod.webp differ diff --git a/website/public/lp/platforms/packet-rgb.png b/website/public/lp/platforms/packet-rgb.png deleted file mode 100644 index d5c3c9a2a..000000000 Binary files a/website/public/lp/platforms/packet-rgb.png and /dev/null differ diff --git a/website/public/lp/platforms/packet-rgb.webp b/website/public/lp/platforms/packet-rgb.webp new file mode 100644 index 000000000..82a3c353d Binary files /dev/null and b/website/public/lp/platforms/packet-rgb.webp differ diff --git a/website/public/lp/platforms/packet.png b/website/public/lp/platforms/packet.png deleted file mode 100644 index f376dcae9..000000000 Binary files a/website/public/lp/platforms/packet.png and /dev/null differ diff --git a/website/public/lp/platforms/packet.webp b/website/public/lp/platforms/packet.webp new file mode 100644 index 000000000..c6e61d626 Binary files /dev/null and b/website/public/lp/platforms/packet.webp differ diff --git a/website/public/lp/platforms/vmware.png b/website/public/lp/platforms/vmware.png deleted file mode 100644 index e158f72e0..000000000 Binary files a/website/public/lp/platforms/vmware.png and /dev/null differ diff --git a/website/public/lp/platforms/vmware.webp b/website/public/lp/platforms/vmware.webp new file mode 100644 index 000000000..4c470d79d Binary files /dev/null and b/website/public/lp/platforms/vmware.webp differ diff --git a/website/public/og-gardener.png b/website/public/og-gardener.png deleted file mode 100644 index 1eabfeb48..000000000 Binary files a/website/public/og-gardener.png and /dev/null differ diff --git a/website/public/og-gardener.webp b/website/public/og-gardener.webp new file mode 100644 index 000000000..7191f347f Binary files /dev/null and b/website/public/og-gardener.webp differ diff --git a/website/public/podrick.png b/website/public/podrick.png deleted file mode 100644 index 300df1122..000000000 Binary files a/website/public/podrick.png and /dev/null differ diff --git a/website/public/podrick.webp b/website/public/podrick.webp new file mode 100644 index 000000000..1c070e3bc Binary files /dev/null and b/website/public/podrick.webp differ