From 4670ffa27226755adb83b4c14feb0276c57179d4 Mon Sep 17 00:00:00 2001 From: Tom Kerkhove Date: Fri, 9 Dec 2022 14:43:49 +0100 Subject: [PATCH] chore: Ship KEDA v2.9 (#341) --- docs/index.yaml | 117 ++++--- docs/keda-2.9.0.tgz | Bin 0 -> 77689 bytes keda/Chart.yaml | 4 +- .../02-crd-clustertriggerauthentications.yaml | 12 + keda/templates/03-crd-scaledjobs.keda.sh.yaml | 299 +++++++++++++++--- .../04-crd-scaledobjects.keda.sh.yaml | 8 +- ...05-crd-triggerauthentications.keda.sh.yaml | 12 + 7 files changed, 364 insertions(+), 88 deletions(-) create mode 100644 docs/keda-2.9.0.tgz diff --git a/docs/index.yaml b/docs/index.yaml index fb72b711..33a78a49 100644 --- a/docs/index.yaml +++ b/docs/index.yaml @@ -3,7 +3,7 @@ entries: external-scaler-azure-cosmos-db: - apiVersion: v2 appVersion: 0.1.0 - created: "2022-09-01T16:28:26.3395605+02:00" + created: "2022-12-09T14:39:22.5222592+01:00" description: Event-based autoscaler for Azure Cosmos DB change feed consumer applications digest: a905dedb01db68575cf591eb0b8f6fa1aa1343f0ec239615081e4b57590d8ae9 home: https://github.com/kedacore/external-scaler-azure-cosmos-db @@ -22,9 +22,32 @@ entries: - https://kedacore.github.io/charts/external-scaler-azure-cosmos-db-0.1.0.tgz version: 0.1.0 keda: + - apiVersion: v2 + appVersion: 2.9.0 + created: "2022-12-09T14:39:22.6198966+01:00" + description: Event-based autoscaler for workloads on Kubernetes + digest: e0f84de35c0378027f43a732f12a164db05e45947687203020c0031baeee5826 + home: https://github.com/kedacore/keda + icon: https://raw.githubusercontent.com/kedacore/keda/main/images/keda-logo-500x500-white.png + kubeVersion: '>=v1.23.0-0' + maintainers: + - email: ahmels@microsoft.com + name: Ahmed ElSayed + - email: jorge_turrado@hotmail.es + name: Jorge Turrado + - email: kerkhove.tom@gmail.com + name: Tom Kerkhove + - email: zroubali@redhat.com + name: Zbynek Roubalik + name: keda + sources: + - https://github.com/kedacore/keda + urls: + - https://kedacore.github.io/charts/keda-2.9.0.tgz + version: 2.9.0 - apiVersion: v2 appVersion: 2.8.1 - created: "2022-09-01T16:28:26.4230446+02:00" + created: "2022-12-09T14:39:22.6171102+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: e7bc80a5dde861a5f62b73e9d5c4ce139339b07438344668485fdc435f3109b4 home: https://github.com/kedacore/keda @@ -47,7 +70,7 @@ entries: version: 2.8.2 - apiVersion: v2 appVersion: 2.8.0 - created: "2022-09-01T16:28:26.4203103+02:00" + created: "2022-12-09T14:39:22.6134483+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: df15ce1a4a27df2f3eb85c7cc803de53dec526bcad92d732a0944bd5288f4845 home: https://github.com/kedacore/keda @@ -70,7 +93,7 @@ entries: version: 2.8.1 - apiVersion: v2 appVersion: 2.8.0 - created: "2022-09-01T16:28:26.4175945+02:00" + created: "2022-12-09T14:39:22.6104464+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: afa9410e4e6e805979e5c22a17db6dc7dc2720c28b3f176d2eef2708ef0d0a32 home: https://github.com/kedacore/keda @@ -93,7 +116,7 @@ entries: version: 2.8.0 - apiVersion: v2 appVersion: 2.7.1 - created: "2022-09-01T16:28:26.4154902+02:00" + created: "2022-12-09T14:39:22.6082152+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: eec27b3d7075a8c51cce1fb8d456ac3d458b3bf72fde1cda67c4b554df1e9838 home: https://github.com/kedacore/keda @@ -116,7 +139,7 @@ entries: version: 2.7.2 - apiVersion: v2 appVersion: 2.7.1 - created: "2022-09-01T16:28:26.4133893+02:00" + created: "2022-12-09T14:39:22.6051247+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: aa1644eb53ec44294993d0611169bd863db39f2bedca1d9ed64b05fbef74087c home: https://github.com/kedacore/keda @@ -139,7 +162,7 @@ entries: version: 2.7.1 - apiVersion: v2 appVersion: 2.7.0 - created: "2022-09-01T16:28:26.4108081+02:00" + created: "2022-12-09T14:39:22.6031261+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: f23894c1c4403f36797a0f2ccb497a3b4f2fe761e00b841cc7e1c8ce110d6dc5 home: https://github.com/kedacore/keda @@ -162,7 +185,7 @@ entries: version: 2.7.0 - apiVersion: v2 appVersion: 2.6.1 - created: "2022-09-01T16:28:26.4086754+02:00" + created: "2022-12-09T14:39:22.6011268+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: af7ec480a66e9f033ab44d28b3df518c0def8ea289996c413dae34e307a0a033 home: https://github.com/kedacore/keda @@ -184,7 +207,7 @@ entries: version: 2.6.2 - apiVersion: v2 appVersion: 2.6.0 - created: "2022-09-01T16:28:26.4076772+02:00" + created: "2022-12-09T14:39:22.5991184+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: b6cf54875f34e8cda992f1ccfe7d594a2f75d25b573a8149721e69ab5ebe3d1d home: https://github.com/kedacore/keda @@ -206,7 +229,7 @@ entries: version: 2.6.1 - apiVersion: v2 appVersion: 2.6.0 - created: "2022-09-01T16:28:26.4053214+02:00" + created: "2022-12-09T14:39:22.5965555+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: 1788eb5f7febdff68275ec5446d30f7f51d0259f343a024639ab1d46228fa00c home: https://github.com/kedacore/keda @@ -228,7 +251,7 @@ entries: version: 2.6.0 - apiVersion: v2 appVersion: 2.5.0 - created: "2022-09-01T16:28:26.403328+02:00" + created: "2022-12-09T14:39:22.5940246+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: b23ffc14ff517dbf1e892593364a0b9e660afe2cd49c2e11e8589e0f271ef254 home: https://github.com/kedacore/keda @@ -250,7 +273,7 @@ entries: version: 2.5.1 - apiVersion: v2 appVersion: 2.5.0 - created: "2022-09-01T16:28:26.4013216+02:00" + created: "2022-12-09T14:39:22.5920481+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: a8c62e7b9e38adf3ef1837e2828cbd29dfd6c7633e8260bd2aa68c70307c8149 home: https://github.com/kedacore/keda @@ -270,7 +293,7 @@ entries: version: 2.5.0 - apiVersion: v2 appVersion: 2.4.0 - created: "2022-09-01T16:28:26.3993243+02:00" + created: "2022-12-09T14:39:22.5890212+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: 41a092fcda3518068d27cf7b86afa5ea2577c8435055ee214bfba11f3a86ef7b home: https://github.com/kedacore/keda @@ -290,7 +313,7 @@ entries: version: 2.4.0 - apiVersion: v2 appVersion: 2.3.0 - created: "2022-09-01T16:28:26.3973285+02:00" + created: "2022-12-09T14:39:22.5874117+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: 8f9d78fb5d090e9887f7914ec8db637344361a8881bb4d8f4c1a9225964b72e0 home: https://github.com/kedacore/keda @@ -310,7 +333,7 @@ entries: version: 2.3.2 - apiVersion: v2 appVersion: 2.3.0 - created: "2022-09-01T16:28:26.3957962+02:00" + created: "2022-12-09T14:39:22.5848631+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: c36eef4718068eee2ac8d3d54e10b15c6ca2b4d1970c84797387152393804578 home: https://github.com/kedacore/keda @@ -330,7 +353,7 @@ entries: version: 2.3.0 - apiVersion: v2 appVersion: 2.2.0 - created: "2022-09-01T16:28:26.3936677+02:00" + created: "2022-12-09T14:39:22.582867+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: 6b6b25799c11e01d2a7edb34d8cf3fb6f82393e7c4e9faa07c38271afad49704 home: https://github.com/kedacore/keda @@ -350,7 +373,7 @@ entries: version: 2.2.2 - apiVersion: v2 appVersion: 2.2.0 - created: "2022-09-01T16:28:26.3917086+02:00" + created: "2022-12-09T14:39:22.5808512+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: 7ec5c403d0ad315d2eb9ec0c9d73b36c0baced870f397884d467d46014f24631 home: https://github.com/kedacore/keda @@ -370,7 +393,7 @@ entries: version: 2.2.1 - apiVersion: v2 appVersion: 2.2.0 - created: "2022-09-01T16:28:26.3896642+02:00" + created: "2022-12-09T14:39:22.5788416+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: 42b530656687cabb1408abcb137a5d7515243465b65a3a6006927987441fadc0 home: https://github.com/kedacore/keda @@ -390,7 +413,7 @@ entries: version: 2.2.0 - apiVersion: v2 appVersion: 2.1.0 - created: "2022-09-01T16:28:26.38767+02:00" + created: "2022-12-09T14:39:22.5763045+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: 65e2fb98c55740251d7ffa1680ef0edeb42954576deac3856dd468473e321747 home: https://github.com/kedacore/keda @@ -410,7 +433,7 @@ entries: version: 2.1.3 - apiVersion: v2 appVersion: 2.1.0 - created: "2022-09-01T16:28:26.3856621+02:00" + created: "2022-12-09T14:39:22.573792+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: f336ab24d5ebf96d28da95a03931f2701bb44ce6bb7c30991e3ad14959e2e7e4 home: https://github.com/kedacore/keda @@ -430,7 +453,7 @@ entries: version: 2.1.2 - apiVersion: v2 appVersion: 2.1.0 - created: "2022-09-01T16:28:26.3846604+02:00" + created: "2022-12-09T14:39:22.5717874+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: b6e752d05797cd50ce95a96ae1b6cf8b2b87fc10c27391172beb1acd9fcb18a2 home: https://github.com/kedacore/keda @@ -450,7 +473,7 @@ entries: version: 2.1.1 - apiVersion: v2 appVersion: 2.1.0 - created: "2022-09-01T16:28:26.3826732+02:00" + created: "2022-12-09T14:39:22.5697868+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: 91998f9165176f972b954ef9d4077942979cb5e863bb7d76ed29c48f63533531 home: https://github.com/kedacore/keda @@ -470,7 +493,7 @@ entries: version: 2.1.0 - apiVersion: v2 appVersion: 2.0.0 - created: "2022-09-01T16:28:26.380667+02:00" + created: "2022-12-09T14:39:22.5672678+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: ce2e848f5d7a067d74feb3745da5a834cccdfaa665b5b59d43ad06baa4cdfd04 home: https://github.com/kedacore/keda @@ -490,7 +513,7 @@ entries: version: 2.0.1 - apiVersion: v1 appVersion: 2.0.0 - created: "2022-09-01T16:28:26.37866+02:00" + created: "2022-12-09T14:39:22.5662493+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: dba8b0e793085165c7d155f9393c5ff112d4714dbce0201404ceb0e67d1b2deb home: https://github.com/kedacore/keda @@ -510,7 +533,7 @@ entries: version: 2.0.0 - apiVersion: v1 appVersion: 2.0.0-rc2 - created: "2022-09-01T16:28:26.3766667+02:00" + created: "2022-12-09T14:39:22.5632476+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: bad82c28c5ca1d5e69fac4bfcc7a999d5d2b2afd9b19ff6deb9a48811110eb0d home: https://github.com/kedacore/keda @@ -530,7 +553,7 @@ entries: version: 2.0.0-rc3 - apiVersion: v2 appVersion: 2.0.0-rc2 - created: "2022-09-01T16:28:26.3746704+02:00" + created: "2022-12-09T14:39:22.5622469+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: a4042ba14e595a8e82c9a39d8987625b89292aa86029686a3603b724fda36ca0 home: https://github.com/kedacore/keda @@ -551,7 +574,7 @@ entries: version: 2.0.0-rc2 - apiVersion: v1 appVersion: 2.0.0-rc - created: "2022-09-01T16:28:26.3736503+02:00" + created: "2022-12-09T14:39:22.5602459+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: 3a952f2aaa0ea35ee4335f0b168f44fcf37c5c5ab7e9b9bba7e731c42f04ad61 home: https://github.com/kedacore/keda @@ -571,7 +594,7 @@ entries: version: 2.0.0-rc - apiVersion: v1 appVersion: 2.0.0-beta - created: "2022-09-01T16:28:26.3716253+02:00" + created: "2022-12-09T14:39:22.5587086+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: fbafc7ae564c13a0eab7062667759f6e93595c97125731a27e8290574e1d570c home: https://github.com/kedacore/keda @@ -591,7 +614,7 @@ entries: version: 2.0.0-beta1.2 - apiVersion: v1 appVersion: 2.0.0-beta - created: "2022-09-01T16:28:26.3686106+02:00" + created: "2022-12-09T14:39:22.5549425+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: db9e7d2423423463285f2e9d5b940a63b41d6555ba9fcab8fda0e6a757ccefa9 home: https://github.com/kedacore/keda @@ -611,7 +634,7 @@ entries: version: 2.0.0-beta1.1 - apiVersion: v1 appVersion: 2.0.0-beta - created: "2022-09-01T16:28:26.3654796+02:00" + created: "2022-12-09T14:39:22.5529446+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: f0a8f0b854246ee2258ec8f10528f2811681ad2e41946dc455586f1ba9818e01 home: https://github.com/kedacore/keda @@ -631,7 +654,7 @@ entries: version: 2.0.0-beta - apiVersion: v1 appVersion: 1.5.0 - created: "2022-09-01T16:28:26.3634326+02:00" + created: "2022-12-09T14:39:22.5487286+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: 07b15ddae4f1c40747de063100a668ac15d504cd0548eac0e1a04381fcaa3b37 home: https://github.com/kedacore/keda @@ -651,7 +674,7 @@ entries: version: 1.5.0 - apiVersion: v1 appVersion: 1.4.1 - created: "2022-09-01T16:28:26.3608829+02:00" + created: "2022-12-09T14:39:22.5472145+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: f8bf80186ac3343998021a1721d06a67fdacd1dab92e4a4992620903b52004a4 home: https://github.com/kedacore/keda @@ -671,7 +694,7 @@ entries: version: 1.4.2 - apiVersion: v1 appVersion: 1.4.1 - created: "2022-09-01T16:28:26.358879+02:00" + created: "2022-12-09T14:39:22.5443316+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: 97a2e5c0beff93bb71ff861da0f29d09dcf988e724784f8b7c56ac9872c37a81 home: https://github.com/kedacore/keda @@ -687,7 +710,7 @@ entries: version: 1.4.1 - apiVersion: v1 appVersion: 1.4.0 - created: "2022-09-01T16:28:26.3563769+02:00" + created: "2022-12-09T14:39:22.5420665+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: 7b2b4e29f867361af87a60411b0a196416b04b2e20f4091d166263ea5195c355 home: https://github.com/kedacore/keda @@ -703,7 +726,7 @@ entries: version: 1.4.0 - apiVersion: v1 appVersion: 1.4.0 - created: "2022-09-01T16:28:26.3543771+02:00" + created: "2022-12-09T14:39:22.5383908+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: a9e78b6cb2257702296d7cc28ca7acdd0b11603aef7e95dbdc7d4ddfa3f3a49c home: https://github.com/kedacore/keda @@ -719,7 +742,7 @@ entries: version: 1.3.2 - apiVersion: v1 appVersion: 1.3.0 - created: "2022-09-01T16:28:26.3518693+02:00" + created: "2022-12-09T14:39:22.5363688+01:00" description: Event-based autoscaler for workloads on Kubernetes digest: e13bcb65816ed59b10b32fa6db8f61668635459d56c2d599bb3c0bcc5dcc1368 home: https://github.com/kedacore/keda @@ -735,7 +758,7 @@ entries: version: 1.3.1 - apiVersion: v1 appVersion: 1.3.0 - created: "2022-09-01T16:28:26.3498768+02:00" + created: "2022-12-09T14:39:22.5329751+01:00" description: Event based autoscaler for Azure Functions deployments on Kubernetes digest: c0772458ab70bf3f019dc0b899ff444b9d7e6dcc466afd62e3f62e90eb8a24ed home: https://github.com/kedacore/keda @@ -751,7 +774,7 @@ entries: version: 1.3.0 - apiVersion: v1 appVersion: 1.2.0 - created: "2022-09-01T16:28:26.3467929+02:00" + created: "2022-12-09T14:39:22.5311322+01:00" description: Event based autoscaler for Azure Functions deployments on Kubernetes digest: e041dbed2455fef34f2908594a42fc8a7f163a1f48be46c2f93dea46e36fc733 home: https://github.com/kedacore/keda @@ -767,7 +790,7 @@ entries: version: 1.2.0 - apiVersion: v1 appVersion: 1.1.0 - created: "2022-09-01T16:28:26.3447881+02:00" + created: "2022-12-09T14:39:22.5277314+01:00" description: Event based autoscaler for Azure Functions deployments on Kubernetes digest: c624e6620a9a6f265f51a82ee0d8267dcb2637dd3777306afbb271746234ff2d home: https://github.com/kedacore/keda @@ -783,7 +806,7 @@ entries: version: 1.1.0 - apiVersion: v1 appVersion: 1.0.0 - created: "2022-09-01T16:28:26.341704+02:00" + created: "2022-12-09T14:39:22.5256851+01:00" description: Event based autoscaler for Azure Functions deployments on Kubernetes digest: ef934588dce70d874ea69692e082b8a70ad19095090b8d4fa7b5cb69b2cecaf6 home: https://github.com/kedacore/keda @@ -800,7 +823,7 @@ entries: keda-add-ons-http: - apiVersion: v2 appVersion: 0.3.0 - created: "2022-09-01T16:28:26.4264318+02:00" + created: "2022-12-09T14:39:22.6249009+01:00" description: Event-based autoscaler for HTTP workloads on Kubernetes digest: e48c9139df0d83cea4b1faed0094d87707243dbfe620eab2254c7d810ed0f4c2 home: https://github.com/kedacore/http-add-on @@ -824,7 +847,7 @@ entries: version: 0.3.0 - apiVersion: v2 appVersion: 0.2.0 - created: "2022-09-01T16:28:26.4258783+02:00" + created: "2022-12-09T14:39:22.6229042+01:00" description: Event-based autoscaler for HTTP workloads on Kubernetes digest: ba2bc1bc4445a0aca8e71726f5e0797941a67f5d98764c56be300f6b2c5c008b home: https://github.com/kedacore/http-add-on @@ -848,7 +871,7 @@ entries: version: 0.2.2 - apiVersion: v2 appVersion: 0.2.0 - created: "2022-09-01T16:28:26.4253193+02:00" + created: "2022-12-09T14:39:22.6229042+01:00" description: Event-based autoscaler for HTTP workloads on Kubernetes digest: 0dc118417aad98e528e499fdd5e4e8a43465d071dd954612ff5d0289756d372c home: https://github.com/kedacore/http-add-on @@ -872,7 +895,7 @@ entries: version: 0.2.1 - apiVersion: v2 appVersion: 0.2.0 - created: "2022-09-01T16:28:26.4246561+02:00" + created: "2022-12-09T14:39:22.6219037+01:00" description: Event-based autoscaler for HTTP workloads on Kubernetes digest: 2c209e2a1287a54934cd7e1345fddc5b2b6c2a51c92d07a314f3e08e304af321 home: https://github.com/kedacore/http-add-on @@ -896,7 +919,7 @@ entries: version: 0.2.0 - apiVersion: v2 appVersion: 0.1.0 - created: "2022-09-01T16:28:26.4235997+02:00" + created: "2022-12-09T14:39:22.6209191+01:00" description: Event-based autoscaler for HTTP workloads on Kubernetes digest: 51bc31412a28fe78a0d0b2cdb76aae1af9eda9707ceecdfdde7106b7a2ceb8cb home: https://github.com/kedacore/http-add-on @@ -920,7 +943,7 @@ entries: version: 0.1.0 - apiVersion: v2 appVersion: 0.0.1 - created: "2022-09-01T16:28:26.4235997+02:00" + created: "2022-12-09T14:39:22.6209191+01:00" description: Event-based autoscaler for HTTP workloads on Kubernetes digest: 0cbcd436721095d7f40750a917ed22d7c83883bdb256edfd43a40a5a0b4f5c17 home: https://github.com/kedacore/http-add-on @@ -942,4 +965,4 @@ entries: urls: - https://kedacore.github.io/charts/keda-add-ons-http-0.0.1.tgz version: 0.0.1 -generated: "2022-09-01T16:28:26.339025+02:00" +generated: "2022-12-09T14:39:22.5216568+01:00" diff --git a/docs/keda-2.9.0.tgz b/docs/keda-2.9.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..fa9753ce4ff5e293a0d1d36a5510c8d66bad4004 GIT binary patch literal 77689 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.23.0-0" # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. -version: 2.8.2 +version: 2.9.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. -appVersion: 2.8.1 +appVersion: 2.9.0 home: https://github.com/kedacore/keda icon: https://raw.githubusercontent.com/kedacore/keda/main/images/keda-logo-500x500-white.png diff --git a/keda/templates/02-crd-clustertriggerauthentications.yaml b/keda/templates/02-crd-clustertriggerauthentications.yaml index 7eb08671..fef64ae3 100644 --- a/keda/templates/02-crd-clustertriggerauthentications.yaml +++ b/keda/templates/02-crd-clustertriggerauthentications.yaml @@ -103,6 +103,18 @@ spec: - clientSecret - tenantId type: object + podIdentity: + description: AuthPodIdentity allows users to select the platform + native identity mechanism + properties: + identityId: + type: string + provider: + description: PodIdentityProvider contains the list of providers + type: string + required: + - provider + type: object secrets: items: properties: diff --git a/keda/templates/03-crd-scaledjobs.keda.sh.yaml b/keda/templates/03-crd-scaledjobs.keda.sh.yaml index 0ab19579..28715a06 100644 --- a/keda/templates/03-crd-scaledjobs.keda.sh.yaml +++ b/keda/templates/03-crd-scaledjobs.keda.sh.yaml @@ -23,6 +23,9 @@ spec: scope: Namespaced versions: - additionalPrinterColumns: + - jsonPath: .spec.minReplicaCount + name: Min + type: integer - jsonPath: .spec.maxReplicaCount name: Max type: integer @@ -130,6 +133,128 @@ spec: left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/' format: int32 type: integer + podFailurePolicy: + description: "Specifies the policy of handling failed pods. In + particular, it allows to specify the set of actions and conditions + which need to be satisfied to take the associated action. If + empty, the default behaviour applies - the counter of failed + pods, represented by the jobs's .status.failed field, is incremented + and it is checked against the backoffLimit. This field cannot + be used in combination with restartPolicy=OnFailure. \n This + field is alpha-level. To use this field, you must enable the + `JobPodFailurePolicy` feature gate (disabled by default)." + properties: + rules: + description: A list of pod failure policy rules. The rules + are evaluated in order. Once a rule matches a Pod failure, + the remaining of the rules are ignored. When no rule matches + the Pod failure, the default handling applies - the counter + of pod failures is incremented and it is checked against + the backoffLimit. At most 20 elements are allowed. + items: + description: PodFailurePolicyRule describes how a pod failure + is handled when the requirements are met. One of OnExitCodes + and onPodConditions, but not both, can be used in each + rule. + properties: + action: + description: 'Specifies the action taken on a pod failure + when the requirements are satisfied. Possible values + are: - FailJob: indicates that the pod''s job is marked + as Failed and all running pods are terminated. - Ignore: + indicates that the counter towards the .backoffLimit + is not incremented and a replacement pod is created. + - Count: indicates that the pod is handled in the + default way - the counter towards the .backoffLimit + is incremented. Additional values are considered to + be added in the future. Clients should react to an + unknown action by skipping the rule.' + type: string + onExitCodes: + description: Represents the requirement on the container + exit codes. + properties: + containerName: + description: Restricts the check for exit codes + to the container with the specified name. When + null, the rule applies to all containers. When + specified, it should match one the container or + initContainer names in the pod template. + type: string + operator: + description: 'Represents the relationship between + the container exit code(s) and the specified values. + Containers completed with success (exit code 0) + are excluded from the requirement check. Possible + values are: - In: the requirement is satisfied + if at least one container exit code (might be + multiple if there are multiple containers not + restricted by the ''containerName'' field) is + in the set of specified values. - NotIn: the requirement + is satisfied if at least one container exit code + (might be multiple if there are multiple containers + not restricted by the ''containerName'' field) + is not in the set of specified values. Additional + values are considered to be added in the future. + Clients should react to an unknown operator by + assuming the requirement is not satisfied.' + type: string + values: + description: Specifies the set of values. Each returned + container exit code (might be multiple in case + of multiple containers) is checked against this + set of values with respect to the operator. The + list of values must be ordered and must not contain + duplicates. Value '0' cannot be used for the In + operator. At least one element is required. At + most 255 elements are allowed. + items: + format: int32 + type: integer + type: array + x-kubernetes-list-type: set + required: + - operator + - values + type: object + onPodConditions: + description: Represents the requirement on the pod conditions. + The requirement is represented as a list of pod condition + patterns. The requirement is satisfied if at least + one pattern matches an actual pod condition. At most + 20 elements are allowed. + items: + description: PodFailurePolicyOnPodConditionsPattern + describes a pattern for matching an actual pod condition + type. + properties: + status: + description: Specifies the required Pod condition + status. To match a pod condition it is required + that the specified status equals the pod condition + status. Defaults to True. + type: string + type: + description: Specifies the required Pod condition + type. To match a pod condition it is required + that specified type equals the pod condition + type. + type: string + required: + - status + - type + type: object + type: array + x-kubernetes-list-type: atomic + required: + - action + - onPodConditions + type: object + type: array + x-kubernetes-list-type: atomic + required: + - rules + type: object selector: description: 'A label query over pods that should match the pod count. Normally, the system sets this field for you. More info: @@ -176,6 +301,7 @@ spec: "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic suspend: description: Suspend specifies whether the Job controller should create Pods or not. If a Job is created with suspend set to @@ -320,6 +446,7 @@ spec: type: object type: array type: object + x-kubernetes-map-type: atomic weight: description: Weight associated with matching the corresponding nodeSelectorTerm, in @@ -433,10 +560,12 @@ spec: type: object type: array type: object + x-kubernetes-map-type: atomic type: array required: - nodeSelectorTerms type: object + x-kubernetes-map-type: atomic type: object podAffinity: description: Describes pod affinity scheduling rules @@ -527,6 +656,7 @@ spec: are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies @@ -594,6 +724,7 @@ spec: are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that @@ -709,6 +840,7 @@ spec: ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. @@ -770,6 +902,7 @@ spec: ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term @@ -886,6 +1019,7 @@ spec: are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies @@ -953,6 +1087,7 @@ spec: are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that @@ -1068,6 +1203,7 @@ spec: ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. @@ -1129,6 +1265,7 @@ spec: ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term @@ -1248,6 +1385,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic fieldRef: description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, @@ -1267,6 +1405,7 @@ spec: required: - fieldPath type: object + x-kubernetes-map-type: atomic resourceFieldRef: description: 'Selects a resource of the container: only resources limits and @@ -1295,6 +1434,7 @@ spec: required: - resource type: object + x-kubernetes-map-type: atomic secretKeyRef: description: Selects a key of a secret in the pod's namespace @@ -1317,6 +1457,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic type: object required: - name @@ -1350,6 +1491,7 @@ spec: must be defined type: boolean type: object + x-kubernetes-map-type: atomic prefix: description: An optional identifier to prepend to each key in the ConfigMap. Must be a @@ -1369,6 +1511,7 @@ spec: must be defined type: boolean type: object + x-kubernetes-map-type: atomic type: object type: array image: @@ -1777,13 +1920,13 @@ spec: type: string ports: description: List of ports to expose from the container. - Exposing a port here gives the system additional - information about the network connections a container - uses, but is primarily informational. Not specifying - a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default - "0.0.0.0" address inside a container will be accessible - from the network. Cannot be updated. + Not specifying a port here DOES NOT prevent that + port from being exposed. Any port which is listening + on the default "0.0.0.0" address inside a container + will be accessible from the network. Modifying + this array with strategic merge patch may corrupt + the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. + Cannot be updated. items: description: ContainerPort represents a network port in a single container. @@ -2572,9 +2715,7 @@ spec: This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use - the pod's ephemeralcontainers subresource. This field - is beta-level and available on clusters that haven't - disabled the EphemeralContainers feature gate. + the pod's ephemeralcontainers subresource. items: description: "An EphemeralContainer is a temporary container that you may add to an existing Pod for user-initiated @@ -2585,9 +2726,7 @@ spec: if an ephemeral container causes the Pod to exceed its resource allocation. \n To add an ephemeral container, use the ephemeralcontainers subresource of an existing - Pod. Ephemeral containers may not be removed or restarted. - \n This is a beta feature available on clusters that - haven't disabled the EphemeralContainers feature gate." + Pod. Ephemeral containers may not be removed or restarted." properties: args: description: 'Arguments to the entrypoint. The image''s @@ -2668,6 +2807,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic fieldRef: description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, @@ -2687,6 +2827,7 @@ spec: required: - fieldPath type: object + x-kubernetes-map-type: atomic resourceFieldRef: description: 'Selects a resource of the container: only resources limits and @@ -2715,6 +2856,7 @@ spec: required: - resource type: object + x-kubernetes-map-type: atomic secretKeyRef: description: Selects a key of a secret in the pod's namespace @@ -2737,6 +2879,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic type: object required: - name @@ -2770,6 +2913,7 @@ spec: must be defined type: boolean type: object + x-kubernetes-map-type: atomic prefix: description: An optional identifier to prepend to each key in the ConfigMap. Must be a @@ -2789,6 +2933,7 @@ spec: must be defined type: boolean type: object + x-kubernetes-map-type: atomic type: object type: array image: @@ -3960,6 +4105,20 @@ spec: description: 'Use the host''s pid namespace. Optional: Default to false.' type: boolean + hostUsers: + description: 'Use the host''s user namespace. Optional: + Default to true. If set to true or not present, the + pod will be run in the host user namespace, useful for + when the pod needs a feature only available to the host + user namespace, such as loading a kernel module with + CAP_SYS_MODULE. When set to false, a new userns is created + for the pod. Setting false is useful for mitigating + container breakout vulnerabilities even allowing users + to run their containers as root without actually having + root privileges on the host. This field is alpha-level + and is only honored by servers that enable the UserNamespacesSupport + feature.' + type: boolean hostname: description: Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined @@ -3982,6 +4141,7 @@ spec: uid?' type: string type: object + x-kubernetes-map-type: atomic type: array initContainers: description: 'List of initialization containers belonging @@ -4082,6 +4242,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic fieldRef: description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, @@ -4101,6 +4262,7 @@ spec: required: - fieldPath type: object + x-kubernetes-map-type: atomic resourceFieldRef: description: 'Selects a resource of the container: only resources limits and @@ -4129,6 +4291,7 @@ spec: required: - resource type: object + x-kubernetes-map-type: atomic secretKeyRef: description: Selects a key of a secret in the pod's namespace @@ -4151,6 +4314,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic type: object required: - name @@ -4184,6 +4348,7 @@ spec: must be defined type: boolean type: object + x-kubernetes-map-type: atomic prefix: description: An optional identifier to prepend to each key in the ConfigMap. Must be a @@ -4203,6 +4368,7 @@ spec: must be defined type: boolean type: object + x-kubernetes-map-type: atomic type: object type: array image: @@ -4611,13 +4777,13 @@ spec: type: string ports: description: List of ports to expose from the container. - Exposing a port here gives the system additional - information about the network connections a container - uses, but is primarily informational. Not specifying - a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default - "0.0.0.0" address inside a container will be accessible - from the network. Cannot be updated. + Not specifying a port here DOES NOT prevent that + port from being exposed. Any port which is listening + on the default "0.0.0.0" address inside a container + will be accessible from the network. Modifying + this array with strategic merge patch may corrupt + the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. + Cannot be updated. items: description: ContainerPort represents a network port in a single container. @@ -5368,19 +5534,18 @@ spec: this is set. \n If the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions \n If the OS field is set to windows, following fields - must be unset: - spec.hostPID - spec.hostIPC - spec.securityContext.seLinuxOptions - - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - - spec.shareProcessNamespace - spec.securityContext.runAsUser - - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - - spec.containers[*].securityContext.seLinuxOptions + must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers + - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile + - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy + - spec.securityContext.sysctls - spec.shareProcessNamespace + - spec.securityContext.runAsUser - spec.securityContext.runAsGroup + - spec.securityContext.supplementalGroups - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - - spec.containers[*].securityContext.runAsGroup This - is a beta field and requires the IdentifyPodOS feature" + - spec.containers[*].securityContext.runAsGroup" properties: name: description: 'Name is the name of the operating system. @@ -5816,6 +5981,22 @@ spec: The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: MatchLabelKeys is a set of pod label + keys to select the pods over which spreading will + be calculated. The keys are used to lookup values + from the incoming pod labels, those key-value + labels are ANDed with labelSelector to select + the group of existing pods over which spreading + will be calculated for the incoming pod. Keys + that don't exist in the incoming pod labels will + be ignored. A null or empty list means only match + against labelSelector. + items: + type: string + type: array + x-kubernetes-list-type: atomic maxSkew: description: 'MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, @@ -5864,11 +6045,35 @@ spec: new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three - zones, it will violate MaxSkew. \n This is an - alpha field and requires enabling MinDomainsInPodTopologySpread - feature gate." + zones, it will violate MaxSkew. \n This is a beta + field and requires the MinDomainsInPodTopologySpread + feature gate to be enabled (enabled by default)." format: int32 type: integer + nodeAffinityPolicy: + description: "NodeAffinityPolicy indicates how we + will treat Pod's nodeAffinity/nodeSelector when + calculating pod topology spread skew. Options + are: - Honor: only nodes matching nodeAffinity/nodeSelector + are included in the calculations. - Ignore: nodeAffinity/nodeSelector + are ignored. All nodes are included in the calculations. + \n If this value is nil, the behavior is equivalent + to the Honor policy. This is a alpha-level feature + enabled by the NodeInclusionPolicyInPodTopologySpread + feature flag." + type: string + nodeTaintsPolicy: + description: "NodeTaintsPolicy indicates how we + will treat node taints when calculating pod topology + spread skew. Options are: - Honor: nodes without + taints, along with tainted nodes for which the + incoming pod has a toleration, are included. - + Ignore: node taints are ignored. All nodes are + included. \n If this value is nil, the behavior + is equivalent to the Ignore policy. This is a + alpha-level feature enabled by the NodeInclusionPolicyInPodTopologySpread + feature flag." + type: string topologyKey: description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical @@ -5877,12 +6082,12 @@ spec: try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain - as a domain whose nodes match the node selector. - e.g. If TopologyKey is "kubernetes.io/hostname", - each Node is a domain of that topology. And, if - TopologyKey is "topology.kubernetes.io/zone", - each zone is a domain of that topology. It's a - required field. + as a domain whose nodes meet the requirements + of nodeAffinityPolicy and nodeTaintsPolicy. e.g. + If TopologyKey is "kubernetes.io/hostname", each + Node is a domain of that topology. And, if TopologyKey + is "topology.kubernetes.io/zone", each zone is + a domain of that topology. It's a required field. type: string whenUnsatisfiable: description: 'WhenUnsatisfiable indicates how to @@ -6061,6 +6266,7 @@ spec: kind, uid?' type: string type: object + x-kubernetes-map-type: atomic user: description: 'user is optional: User is the rados user name, default is admin More info: @@ -6098,6 +6304,7 @@ spec: kind, uid?' type: string type: object + x-kubernetes-map-type: atomic volumeID: description: 'volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' @@ -6180,6 +6387,7 @@ spec: or its keys must be defined type: boolean type: object + x-kubernetes-map-type: atomic csi: description: csi (Container Storage Interface) represents ephemeral storage that is handled by certain external @@ -6214,6 +6422,7 @@ spec: kind, uid?' type: string type: object + x-kubernetes-map-type: atomic readOnly: description: readOnly specifies a read-only configuration for the volume. Defaults to @@ -6274,6 +6483,7 @@ spec: required: - fieldPath type: object + x-kubernetes-map-type: atomic mode: description: 'Optional: mode bits used to set permissions on this file, must @@ -6324,6 +6534,7 @@ spec: required: - resource type: object + x-kubernetes-map-type: atomic required: - path type: object @@ -6461,6 +6672,7 @@ spec: - kind - name type: object + x-kubernetes-map-type: atomic dataSourceRef: description: 'dataSourceRef specifies the object from which to populate @@ -6515,6 +6727,7 @@ spec: - kind - name type: object + x-kubernetes-map-type: atomic resources: description: 'resources represents the minimum resources the volume should @@ -6614,6 +6827,7 @@ spec: are ANDed. type: object type: object + x-kubernetes-map-type: atomic storageClassName: description: 'storageClassName is the name of the StorageClass required @@ -6716,6 +6930,7 @@ spec: kind, uid?' type: string type: object + x-kubernetes-map-type: atomic required: - driver type: object @@ -6913,6 +7128,7 @@ spec: kind, uid?' type: string type: object + x-kubernetes-map-type: atomic targetPortal: description: targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port @@ -7103,6 +7319,7 @@ spec: defined type: boolean type: object + x-kubernetes-map-type: atomic downwardAPI: description: downwardAPI information about the downwardAPI data to project @@ -7135,6 +7352,7 @@ spec: required: - fieldPath type: object + x-kubernetes-map-type: atomic mode: description: 'Optional: mode bits used to set permissions @@ -7193,6 +7411,7 @@ spec: required: - resource type: object + x-kubernetes-map-type: atomic required: - path type: object @@ -7269,6 +7488,7 @@ spec: be defined type: boolean type: object + x-kubernetes-map-type: atomic serviceAccountToken: description: serviceAccountToken is information about the serviceAccountToken data to @@ -7399,6 +7619,7 @@ spec: kind, uid?' type: string type: object + x-kubernetes-map-type: atomic user: description: 'user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' @@ -7444,6 +7665,7 @@ spec: kind, uid?' type: string type: object + x-kubernetes-map-type: atomic sslEnabled: description: sslEnabled Flag enable/disable SSL communication with Gateway, default false @@ -7573,6 +7795,7 @@ spec: kind, uid?' type: string type: object + x-kubernetes-map-type: atomic volumeName: description: volumeName is the human-readable name of the StorageOS volume. Volume names @@ -7705,6 +7928,8 @@ spec: type: string type: type: string + useCachedMetrics: + type: boolean required: - metadata - type diff --git a/keda/templates/04-crd-scaledobjects.keda.sh.yaml b/keda/templates/04-crd-scaledobjects.keda.sh.yaml index 93698a8d..fe7ebb25 100644 --- a/keda/templates/04-crd-scaledobjects.keda.sh.yaml +++ b/keda/templates/04-crd-scaledobjects.keda.sh.yaml @@ -124,10 +124,11 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic selectPolicy: description: selectPolicy is used to specify which policy should be used. If not set, the default value - MaxPolicySelect is used. + Max is used. type: string stabilizationWindowSeconds: description: 'StabilizationWindowSeconds is the number @@ -180,10 +181,11 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic selectPolicy: description: selectPolicy is used to specify which policy should be used. If not set, the default value - MaxPolicySelect is used. + Max is used. type: string stabilizationWindowSeconds: description: 'StabilizationWindowSeconds is the number @@ -279,6 +281,8 @@ spec: type: string type: type: string + useCachedMetrics: + type: boolean required: - metadata - type diff --git a/keda/templates/05-crd-triggerauthentications.keda.sh.yaml b/keda/templates/05-crd-triggerauthentications.keda.sh.yaml index 407c3049..bd382dd4 100644 --- a/keda/templates/05-crd-triggerauthentications.keda.sh.yaml +++ b/keda/templates/05-crd-triggerauthentications.keda.sh.yaml @@ -102,6 +102,18 @@ spec: - clientSecret - tenantId type: object + podIdentity: + description: AuthPodIdentity allows users to select the platform + native identity mechanism + properties: + identityId: + type: string + provider: + description: PodIdentityProvider contains the list of providers + type: string + required: + - provider + type: object secrets: items: properties: