mirror of https://github.com/kedacore/charts.git
Compare commits
326 Commits
Author | SHA1 | Date |
---|---|---|
|
fe19704416 | |
|
e98a7734cb | |
|
6aa9877935 | |
|
a25ca18364 | |
|
64bfebae54 | |
|
43cf8dbe0b | |
|
027843ecc1 | |
|
1b28b24f2d | |
|
a3087c4624 | |
|
a7908a1885 | |
|
cd8a958e92 | |
|
61b9fc22f6 | |
|
8d922478ce | |
|
5fa7af8ba5 | |
|
7c4a10b288 | |
|
9fdd709e08 | |
|
2292a9dd5b | |
|
61c460d581 | |
|
5eb596154b | |
|
5a84b2df4a | |
|
d41f0af75c | |
|
ce04163bc4 | |
|
40926158e5 | |
|
213d205ce6 | |
|
33070ca215 | |
|
3e58b2affe | |
|
f8fe1c28dc | |
|
c523cd1766 | |
|
8d75dd0674 | |
|
c445ec15dd | |
|
3ad2830549 | |
|
5e0a8d5c95 | |
|
8216f7e144 | |
|
d57aae4fd3 | |
|
73f6a7b598 | |
|
d62619761f | |
|
5dd510ed72 | |
|
c8b2b33660 | |
|
c0d3bd5d46 | |
|
86b12cb2ab | |
|
86cd9b1c60 | |
|
714d29f258 | |
|
53a1d02fed | |
|
a8d5aa3569 | |
|
3ab87fb3c8 | |
|
2d8e903fb5 | |
|
ee13a9cee3 | |
|
12433cf661 | |
|
1c39d0a7b1 | |
|
1373262f4a | |
|
1b568092be | |
|
c71fb32951 | |
|
cfc06340a0 | |
|
59bca22f77 | |
|
6e4d3620da | |
|
5d6d5d1490 | |
|
8b3a8ec6e4 | |
|
fcc7b2fb68 | |
|
1286024d80 | |
|
8a1ad4e6d2 | |
|
3b04c40187 | |
|
650d761875 | |
|
6aa60122e1 | |
|
43b0f516e0 | |
|
407afacc1b | |
|
f9f23e91d5 | |
|
9ab704957e | |
|
b14ace626d | |
|
207bab7e76 | |
|
3fb8a8d740 | |
|
ff8b240abd | |
|
31cc43fed3 | |
|
8231b9e817 | |
|
2e3b59d652 | |
|
7cd175a9b9 | |
|
c77f8af26c | |
|
826224a28c | |
|
62e6320978 | |
|
4cf42b3ff7 | |
|
6493bd1702 | |
|
395ea88fe2 | |
|
783cf36e0a | |
|
20e9ce7bf1 | |
|
f561a3bfb6 | |
|
0520e8f4e3 | |
|
ec0e32edfe | |
|
891ce788ab | |
|
a095df182e | |
|
afd0c284e4 | |
|
4d9518bdc5 | |
|
4fcfd8f322 | |
|
641f2b03f5 | |
|
7cf99c4ca4 | |
|
c59e00799c | |
|
7e97aa4ac7 | |
|
0a0a48cba9 | |
|
aecdab9fc0 | |
|
aadafc6d8f | |
|
41581b9ede | |
|
d0e8116d10 | |
|
f70706bd6d | |
|
39d4d11439 | |
|
bb6c9af8da | |
|
d3f4e98b3f | |
|
1931630189 | |
|
56f161ca0f | |
|
d28727df6d | |
|
e337366b0e | |
|
dd9c89051f | |
|
f384d4f3e0 | |
|
9898036f39 | |
|
a18b13c80f | |
|
d291fbf3b5 | |
|
a84fbefff1 | |
|
269576300c | |
|
4bf3070cbc | |
|
3030dcc110 | |
|
ced6295ca8 | |
|
84973f6a19 | |
|
9de026707f | |
|
274c330fa5 | |
|
991a61702a | |
|
7a4ba4a77c | |
|
6d21ddd902 | |
|
00a3e0cfce | |
|
a873dedc3b | |
|
e08ac77e11 | |
|
9aa7e3a203 | |
|
2b321e76db | |
|
9fbc23667f | |
|
7dcb143735 | |
|
931532974f | |
|
8b956d08c0 | |
|
e6d88a406a | |
|
b1ae25bf26 | |
|
0f61fe1752 | |
|
a11a7c190a | |
|
008b720420 | |
|
56b0749fd7 | |
|
ba332ac1ba | |
|
6e9ca8f4bd | |
|
be56f55462 | |
|
9f5953bcef | |
|
36db5aa35f | |
|
39b2a7f3a3 | |
|
6d8d7bf768 | |
|
2251672fa4 | |
|
d8ec28e4ff | |
|
eed599fc19 | |
|
57e2efc4d0 | |
|
9884088789 | |
|
33209553e6 | |
|
a0cab0b85e | |
|
fff5493d65 | |
|
84b6cfbb4a | |
|
502980f426 | |
|
c5fad71e8a | |
|
9eca8ff905 | |
|
1828e0c21a | |
|
933e4b0418 | |
|
77f2a2fec9 | |
|
f789dae0d5 | |
|
09509417cd | |
|
8f4ee68bf1 | |
|
0c6ab99a3b | |
|
f22ad671e8 | |
|
1a56c48c7a | |
|
6fb43a1326 | |
|
58bfc12d70 | |
|
eff0548fbf | |
|
b3354653d4 | |
|
200268a6a2 | |
|
18c193a0d3 | |
|
0f7c6f0fe3 | |
|
55c332b809 | |
|
da34dd6faa | |
|
3d4139ca85 | |
|
1ca4b046e3 | |
|
1882427f30 | |
|
ce16416bce | |
|
06ce12cf17 | |
|
6f4b8f5ac5 | |
|
8beedb62d7 | |
|
3d0b5ecd8a | |
|
dd56fdec09 | |
|
c14bae22b5 | |
|
682330de0a | |
|
6366883fac | |
|
092c7f4a9f | |
|
160e6dec86 | |
|
c18d9d50af | |
|
6672d92010 | |
|
e40f513f7a | |
|
cd005eea32 | |
|
b65806c729 | |
|
d4507b26ea | |
|
6589a14ead | |
|
c04e800fc2 | |
|
41d70eedcc | |
|
54a283d9e3 | |
|
9f0f4d5ecc | |
|
6dfb0cd6ec | |
|
b5e86761c4 | |
|
32caf60643 | |
|
4fd2c4ca1f | |
|
456cc6b60f | |
|
c3db80dadf | |
|
eaf7be2faf | |
|
839a0be84c | |
|
815894384d | |
|
f950fd25ee | |
|
4670ffa272 | |
|
ed2637ef80 | |
|
7ff777afeb | |
|
bdd5dfcd11 | |
|
429d8d56ae | |
|
20598aab28 | |
|
1edb5cd001 | |
|
90ab653445 | |
|
f70e45e9a2 | |
|
a276273fe6 | |
|
08b77d31ad | |
|
2f87342f5b | |
|
0467687a38 | |
|
c7e04cd92c | |
|
32b1770257 | |
|
8f25d9f671 | |
|
4224b3884a | |
|
1a575338df | |
|
e450a150f8 | |
|
d5a0fa73de | |
|
877858238b | |
|
ddeb782ce7 | |
|
156469b7c0 | |
|
ef349144b0 | |
|
b446c98b58 | |
|
b0eb796ae6 | |
|
e2553bfccb | |
|
2e5e2c9011 | |
|
9424538219 | |
|
b417846517 | |
|
2589d62ce3 | |
|
c26fcc1236 | |
|
44d7fbe35c | |
|
0646721063 | |
|
9be0a560a2 | |
|
19e3194861 | |
|
bcbe100351 | |
|
754c5ba13e | |
|
5727b38c6a | |
|
3a0501367c | |
|
f6a3852756 | |
|
2a0b95e10f | |
|
f5ff3fff5b | |
|
8b32494f45 | |
|
58409d79fc | |
|
8c0b6584d7 | |
|
9b56a3b8dd | |
|
cc3a9041de | |
|
9ceb455fda | |
|
76523f7100 | |
|
06600ec469 | |
|
146503418c | |
|
07ab9d2783 | |
|
5bbc4fe0b7 | |
|
02d4688afe | |
|
a0390587c4 | |
|
49ad5e321a | |
|
2884b014c0 | |
|
8b10dfe1ba | |
|
ec15ceef1b | |
|
0767106682 | |
|
1ae5b23a6e | |
|
f529059aa0 | |
|
55f7812f26 | |
|
51b1c3443a | |
|
b0adf2b199 | |
|
492bfefedf | |
|
09488c58dd | |
|
a3ea2d79c2 | |
|
d1ea02c79b | |
|
2a8b22697a | |
|
b6de71f432 | |
|
f76beb2b6a | |
|
ac98f95e19 | |
|
cda9aeb8f7 | |
|
6a0b2d1edd | |
|
1e61c5a591 | |
|
faf817f8f8 | |
|
16bec13756 | |
|
b99d3c7514 | |
|
e7f3829757 | |
|
3885a1c976 | |
|
9372712c8c | |
|
7d7ed7050f | |
|
3e2953b396 | |
|
b13d865c7e | |
|
f9e25e6549 | |
|
51bb585bb6 | |
|
efb9154bb9 | |
|
5240621785 | |
|
14277baec6 | |
|
26e8f5676d | |
|
93e2fdc563 | |
|
756706bea4 | |
|
fbc5b6686d | |
|
d3b72752ab | |
|
603c50e1e5 | |
|
4448a303ac | |
|
1ed7e700f6 | |
|
b2b469c22a | |
|
21e11f09fc | |
|
6176074c3a | |
|
3a2cc66e3b | |
|
9661d05e6c | |
|
57e68fccbe | |
|
19fbab85c6 | |
|
e04fd02489 | |
|
93e6366d74 | |
|
914c60da8d | |
|
49df18bb65 | |
|
9c7ee0b6f1 | |
|
78860400f4 | |
|
1b12a4856f | |
|
884ff589eb | |
|
4f250440c9 |
|
@ -1,2 +1,2 @@
|
|||
# General owners
|
||||
* @jeffhollan @ahmelsayed @tomkerkhove @zroubalik
|
||||
* @kedacore/keda-helm-maintainers
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
<!-- Thank you for contributing!
|
||||
|
||||
Read more about how you can contribute in our contribution guide:
|
||||
https://github.com/kedacore/charts/blob/master/CONTRIBUTING.md
|
||||
https://github.com/kedacore/charts/blob/main/CONTRIBUTING.md
|
||||
-->
|
||||
|
||||
_Provide a description of what has been changed_
|
||||
|
||||
### Checklist
|
||||
|
||||
- [ ] Commits are signed with Developer Certificate of Origin (DCO - [learn more](https://github.com/kedacore/charts/blob/master/CONTRIBUTING.md#developer-certificate-of-origin-signing-your-work))
|
||||
- [ ] I have verified that my change is according to the [deprecations & breaking changes policy](https://github.com/kedacore/governance/blob/main/DEPRECATIONS.md)
|
||||
- [ ] Commits are signed with Developer Certificate of Origin (DCO - [learn more](https://github.com/kedacore/charts/blob/main/CONTRIBUTING.md#developer-certificate-of-origin-signing-your-work))
|
||||
- [ ] README is updated with new configuration values *(if applicable)* [learn more](https://github.com/kedacore/charts/blob/main/CONTRIBUTING.md#documentation)
|
||||
- [ ] A PR is opened to update KEDA core ([repo](https://github.com/kedacore/keda)) *(if applicable, ie. when deployment manifests are modified)*
|
||||
- [ ] README is updated with new configuration values *(if applicable)*
|
||||
|
||||
Fixes #
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: github-actions
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: monthly
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- enhancement
|
||||
- dependency-management
|
||||
groups:
|
||||
all-updates:
|
||||
patterns:
|
||||
- "*"
|
|
@ -0,0 +1,243 @@
|
|||
name: Helm Chart CI (Core)
|
||||
on:
|
||||
# Trigger the workflow on push or pull request,
|
||||
# but only for the main branch
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- '.github/workflows/ci-core.yml'
|
||||
- 'keda/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- release/*
|
||||
paths:
|
||||
- '.github/workflows/ci-core.yml'
|
||||
- 'keda/**'
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
lint-helm-3-x:
|
||||
name: Lint Helm Chart
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
|
||||
- name: Helm install
|
||||
uses: Azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4.3.0
|
||||
|
||||
- name: Lint 'KEDA' Helm chart
|
||||
run: helm lint keda
|
||||
|
||||
deploy-helm-3-x:
|
||||
name: Deploy to Kubernetes ${{ matrix.kubernetesVersion }} in '${{matrix.namespace}}' namespace (${{ (matrix.enableAzureWorkloadIdentity == true && 'With Azure Workload Identity') || 'Without Azure Workload Identity' }} | ${{ (matrix.enableCertManager == true && 'With cert-manager') || 'Without cert-manager' }})
|
||||
needs: lint-helm-3-x
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
enableAzureWorkloadIdentity: [false, true]
|
||||
kubernetesVersion: [v1.32, v1.31, v1.30, v1.23]
|
||||
namespace: ["keda", "not-keda"]
|
||||
enableCertManager: [false, true]
|
||||
include:
|
||||
# Azure Workload Identity
|
||||
- enableAzureWorkloadIdentity: true
|
||||
tenantId: contoso
|
||||
clientId: ABC
|
||||
- enableAzureWorkloadIdentity: false
|
||||
tenantId: ""
|
||||
clientId: ""
|
||||
# Images are defined on every Kind release
|
||||
# See https://github.com/kubernetes-sigs/kind/releases
|
||||
- kubernetesVersion: v1.32
|
||||
kindImage: kindest/node:v1.32.0@sha256:c48c62eac5da28cdadcf560d1d8616cfa6783b58f0d94cf63ad1bf49600cb027
|
||||
- kubernetesVersion: v1.31
|
||||
kindImage: kindest/node:v1.31.4@sha256:2cb39f7295fe7eafee0842b1052a599a4fb0f8bcf3f83d96c7f4864c357c6c30
|
||||
- kubernetesVersion: v1.30
|
||||
kindImage: kindest/node:v1.30.8@sha256:17cd608b3971338d9180b00776cb766c50d0a0b6b904ab4ff52fd3fc5c6369bf
|
||||
- kubernetesVersion: v1.23
|
||||
kindImage: kindest/node:v1.23.17@sha256:59c989ff8a517a93127d4a536e7014d28e235fb3529d9fba91b3951d461edfdb
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
|
||||
- name: Helm install
|
||||
uses: Azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4.3.0
|
||||
|
||||
- name: Create k8s ${{ matrix.kubernetesVersion }} Kind Cluster
|
||||
uses: helm/kind-action@a1b0e391336a6ee6713a0583f8c6240d70863de3 # v1.12.0
|
||||
with:
|
||||
node_image: ${{ matrix.kindImage }}
|
||||
|
||||
- name: Show Kubernetes version
|
||||
run: |
|
||||
kubectl version
|
||||
|
||||
- name: Show Kubernetes nodes
|
||||
run: |
|
||||
kubectl get nodes -o wide
|
||||
|
||||
- name: Show Helm version
|
||||
run: |
|
||||
helm version
|
||||
|
||||
- name: Generate values
|
||||
run: |
|
||||
cat <<EOF > test-values.yaml
|
||||
image:
|
||||
keda:
|
||||
tag: main
|
||||
metricsApiServer:
|
||||
tag: main
|
||||
webhooks:
|
||||
tag: main
|
||||
podIdentity:
|
||||
azureWorkload:
|
||||
enabled: ${{ matrix.enableAzureWorkloadIdentity }}
|
||||
tenantId: ${{ matrix.tenantId }}
|
||||
clientId: ${{ matrix.clientId }}
|
||||
podDisruptionBudget:
|
||||
operator:
|
||||
maxUnavailable: 1
|
||||
metricServer:
|
||||
maxUnavailable: 1
|
||||
webhooks:
|
||||
maxUnavailable: 1
|
||||
prometheus:
|
||||
operator:
|
||||
enabled: true
|
||||
podMonitor:
|
||||
enabled: true
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
relabelings:
|
||||
- regex: (go_.*)
|
||||
action: drop
|
||||
webhooks:
|
||||
enabled: true
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
relabelings:
|
||||
- regex: (go_.*)
|
||||
action: drop
|
||||
metricServer:
|
||||
enabled: true
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
relabelings:
|
||||
- regex: (go_.*)
|
||||
action: drop
|
||||
webhooks:
|
||||
failurePolicy: Fail
|
||||
certificates:
|
||||
autoGenerated: true
|
||||
certManager:
|
||||
enabled: ${{ matrix.enableCertManager }}
|
||||
generateCA: true
|
||||
extraInitContainers:
|
||||
- name: hello-once
|
||||
args:
|
||||
- -c
|
||||
- "echo 'Hello World!'"
|
||||
command:
|
||||
- /bin/sh
|
||||
image: 'busybox:glibc'
|
||||
extraContainers:
|
||||
- name: hello-many
|
||||
args:
|
||||
- -c
|
||||
- "while true; do echo hi; sleep 300; done"
|
||||
command:
|
||||
- /bin/sh
|
||||
image: 'busybox:glibc'
|
||||
extraObjects:
|
||||
- apiVersion: keda.sh/v1alpha1
|
||||
kind: ClusterTriggerAuthentication
|
||||
metadata:
|
||||
name: aws-credentials
|
||||
namespace: keda
|
||||
annotations:
|
||||
helm.sh/hook: post-install
|
||||
spec:
|
||||
podIdentity:
|
||||
provider: aws-eks
|
||||
additionalAnnotations:
|
||||
sample: "annotation"
|
||||
service:
|
||||
additionalAnnotations:
|
||||
hello: "cloud-native world"
|
||||
EOF
|
||||
|
||||
- name: Install deps
|
||||
run: |
|
||||
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
|
||||
helm repo add jetstack https://charts.jetstack.io
|
||||
helm repo update
|
||||
helm install prometheus-stack prometheus-community/prometheus-operator-crds --namespace monitoring --create-namespace --wait
|
||||
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --set installCRDs=true
|
||||
|
||||
- name: Create KEDA's namespace (${{ matrix.namespace }})
|
||||
run: kubectl create ns ${{ matrix.namespace }}
|
||||
|
||||
- name: Template Helm chart
|
||||
run: helm template keda ./keda/ --namespace ${{ matrix.namespace }} --values test-values.yaml
|
||||
|
||||
- name: Install Helm chart
|
||||
run: helm install keda ./keda/ --namespace ${{ matrix.namespace }} --values test-values.yaml --wait
|
||||
|
||||
- name: Show Kubernetes resources (KEDA)
|
||||
run: kubectl get all --namespace ${{ matrix.namespace }}
|
||||
if: always()
|
||||
|
||||
- name: Show Kubernetes resources (Monitoring)
|
||||
run: kubectl get all --namespace monitoring
|
||||
if: always()
|
||||
|
||||
- name: Get all CRDs
|
||||
run: kubectl get crds -o wide
|
||||
|
||||
- name: Verify clustertriggerauthentications.keda.sh CRD is installed
|
||||
run: kubectl get crd/clustertriggerauthentications.keda.sh -o wide
|
||||
|
||||
- name: Verify triggerauthentications.keda.sh CRD is installed
|
||||
run: kubectl get crd/triggerauthentications.keda.sh -o wide
|
||||
|
||||
- name: Verify scaledjobs.keda.sh CRD is installed
|
||||
run: kubectl get crd/scaledjobs.keda.sh -o wide
|
||||
|
||||
- name: Verify scaledobjects.keda.sh CRD is installed
|
||||
run: kubectl get crd/scaledobjects.keda.sh -o wide
|
||||
|
||||
- name: Verify cloudeventsources.eventing.keda.sh CRD is installed
|
||||
run: kubectl get crd/cloudeventsources.eventing.keda.sh -o wide
|
||||
|
||||
- name: Verify clustercloudeventsources.eventing.keda.sh CRD is installed
|
||||
run: kubectl get crd/clustercloudeventsources.eventing.keda.sh -o wide
|
||||
|
||||
- name: Get all ScaledObjects
|
||||
run: kubectl get scaledobjects -o wide
|
||||
|
||||
- name: Get all ScaledJobs
|
||||
run: kubectl get scaledjobs -o wide
|
||||
|
||||
- name: Get all TriggerAuthentication
|
||||
run: kubectl get triggerauth -o wide
|
||||
|
||||
- name: Get all ClusterTriggerAuthentication
|
||||
run: kubectl get clustertriggerauth -o wide
|
||||
|
||||
- name: Get all CloudEventSource
|
||||
run: kubectl get cloudeventsource -o wide
|
||||
|
||||
- name: Deploy Nginx with autoscaling
|
||||
run: kubectl apply -f ./samples/nginx-scaledobject.yml
|
||||
|
||||
- name: Get our Nginx ScaledObject
|
||||
run: kubectl get scaledobjects/nginx-autoscaling -o wide
|
||||
if: always()
|
|
@ -0,0 +1,95 @@
|
|||
name: Helm Chart CI (External Scalers - Azure Cosmos DB)
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- .github/workflows/ci-external-scaler-azure-cosmos-db.yml
|
||||
- external-scaler-azure-cosmos-db/**
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- .github/workflows/ci-external-scaler-azure-cosmos-db.yml
|
||||
- external-scaler-azure-cosmos-db/**
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
lint-helm-3-x:
|
||||
name: Lint Helm Chart
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Helm install
|
||||
uses: Azure/setup-helm@v4
|
||||
|
||||
- name: Lint 'Azure Cosmos DB external scaler' Helm chart
|
||||
run: helm lint ./external-scaler-azure-cosmos-db/ --strict
|
||||
|
||||
deploy-helm-3-x:
|
||||
name: Deploy to Kubernetes ${{ matrix.kubernetesVersion }}
|
||||
needs: lint-helm-3-x
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
kubernetesVersion: [v1.24, v1.19]
|
||||
include:
|
||||
# Images are defined on every Kind release
|
||||
# See https://github.com/kubernetes-sigs/kind/releases
|
||||
- kubernetesVersion: v1.24
|
||||
kindImage: kindest/node:v1.24.0@sha256:406fd86d48eaf4c04c7280cd1d2ca1d61e7d0d61ddef0125cb097bc7b82ed6a1
|
||||
- kubernetesVersion: v1.19
|
||||
kindImage: kindest/node:v1.19.16@sha256:dec41184d10deca01a08ea548197b77dc99eeacb56ff3e371af3193c86ca99f4
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Helm install
|
||||
uses: Azure/setup-helm@v4
|
||||
|
||||
- name: Create k8s ${{ matrix.kubernetesVersion }} Kind Cluster
|
||||
uses: helm/kind-action@v1.12.0
|
||||
with:
|
||||
version: v0.13.0
|
||||
node_image: ${{ matrix.kindImage }}
|
||||
|
||||
- name: Show Kubernetes version
|
||||
run: |
|
||||
kubectl version
|
||||
|
||||
- name: Show Kubernetes nodes
|
||||
run: |
|
||||
kubectl get nodes -o wide
|
||||
|
||||
- name: Show Helm version
|
||||
run: |
|
||||
helm version
|
||||
|
||||
- name: Create KEDA namespace
|
||||
run: kubectl create ns keda
|
||||
|
||||
- name: Template Helm chart
|
||||
run: helm template test-release ./external-scaler-azure-cosmos-db/ --namespace test-namespace
|
||||
|
||||
- name: Install Helm chart
|
||||
run: helm install test-release ./external-scaler-azure-cosmos-db/ --namespace test-namespace --create-namespace --wait --timeout=2m
|
||||
|
||||
- name: Show Kubernetes resources
|
||||
run: kubectl get all --namespace keda
|
||||
if: always()
|
||||
|
||||
- name: Get 'Azure Cosmos DB external scaler' service
|
||||
run: kubectl get service external-scaler-azure-cosmos-db --namespace=test-namespace
|
||||
|
||||
- name: Get 'Azure Cosmos DB external scaler' deployment
|
||||
run: kubectl get deployment external-scaler-azure-cosmos-db --namespace=test-namespace
|
||||
|
||||
- name: Uninstall 'Azure Cosmos DB external scaler' Helm chart
|
||||
run: helm uninstall test-release --namespace test-namespace
|
|
@ -0,0 +1,141 @@
|
|||
name: Helm Chart CI (HTTP add-on)
|
||||
on:
|
||||
# Trigger the workflow on push or pull request,
|
||||
# but only for the main branch
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- ".github/workflows/ci-http-add-on.yml"
|
||||
- "http-add-on/**"
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- ".github/workflows/ci-http-add-on.yml"
|
||||
- "http-add-on/**"
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
lint-helm-3-x:
|
||||
name: Lint Helm Chart
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
|
||||
- name: Helm install
|
||||
uses: Azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4.3.0
|
||||
|
||||
- name: Lint 'http-add-on' Helm chart
|
||||
run: helm lint http-add-on
|
||||
|
||||
deploy-helm-3-x:
|
||||
name: Deploy to Kubernetes ${{ matrix.kubernetesVersion }}
|
||||
needs: lint-helm-3-x
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
kubernetesVersion: [v1.32, v1.31, v1.30, v1.29]
|
||||
include:
|
||||
- kubernetesVersion: v1.32
|
||||
kindImage: kindest/node:v1.32.0@sha256:c48c62eac5da28cdadcf560d1d8616cfa6783b58f0d94cf63ad1bf49600cb027
|
||||
- kubernetesVersion: v1.31
|
||||
kindImage: kindest/node:v1.31.4@sha256:2cb39f7295fe7eafee0842b1052a599a4fb0f8bcf3f83d96c7f4864c357c6c30
|
||||
- kubernetesVersion: v1.30
|
||||
kindImage: kindest/node:v1.30.8@sha256:17cd608b3971338d9180b00776cb766c50d0a0b6b904ab4ff52fd3fc5c6369bf
|
||||
- kubernetesVersion: v1.29
|
||||
kindImage: kindest/node:v1.29.0@sha256:eaa1450915475849a73a9227b8f201df25e55e268e5d619312131292e324d570
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
|
||||
- name: Helm install
|
||||
uses: Azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4.3.0
|
||||
|
||||
- name: Create k8s ${{ matrix.kubernetesVersion }} Kind Cluster
|
||||
uses: helm/kind-action@a1b0e391336a6ee6713a0583f8c6240d70863de3 # v1.12.0
|
||||
with:
|
||||
node_image: ${{ matrix.kindImage }}
|
||||
|
||||
- name: Show Kubernetes version
|
||||
run: |
|
||||
kubectl version
|
||||
|
||||
- name: Show Kubernetes nodes
|
||||
run: |
|
||||
kubectl get nodes -o wide
|
||||
|
||||
- name: Show Helm version
|
||||
run: |
|
||||
helm version
|
||||
|
||||
- name: Create KEDA namespace
|
||||
run: kubectl create ns keda
|
||||
|
||||
- name: Generate values
|
||||
run: |
|
||||
cat <<EOF > keda-values.yaml
|
||||
image:
|
||||
keda:
|
||||
tag: main
|
||||
metricsApiServer:
|
||||
tag: main
|
||||
webhooks:
|
||||
tag: main
|
||||
|
||||
- name: Install KEDA chart
|
||||
run: helm install keda ./keda/ --namespace keda --values keda-values.yaml
|
||||
|
||||
- name: Generate values
|
||||
run: |
|
||||
cat <<EOF > test-values.yaml
|
||||
additionalLabels:
|
||||
random: value
|
||||
images:
|
||||
tag: canary
|
||||
rbac:
|
||||
aggregateToDefaultRoles: true
|
||||
interceptor:
|
||||
replicas:
|
||||
min: 1
|
||||
EOF
|
||||
|
||||
- name: Template Helm chart
|
||||
run: helm template http-add-on ./http-add-on/ --namespace keda --values test-values.yaml
|
||||
|
||||
- name: Install Helm chart
|
||||
run: helm install http-add-on ./http-add-on/ --namespace keda --values test-values.yaml --wait
|
||||
|
||||
- name: Show Kubernetes resources
|
||||
run: kubectl get all --namespace keda
|
||||
if: always()
|
||||
|
||||
- name: Get all HTTPScaledObjects
|
||||
run: kubectl get httpscaledobjects
|
||||
|
||||
- name: Get all CRDs
|
||||
run: kubectl get crds
|
||||
|
||||
- name: Get HTTPScaledObject CRD
|
||||
run: kubectl get crds/httpscaledobjects.http.keda.sh
|
||||
|
||||
- name: Describe HTTPScaledObject CRD
|
||||
run: kubectl describe crds/httpscaledobjects.http.keda.sh
|
||||
|
||||
- name: Validate Interceptor ScaledObject
|
||||
run: |
|
||||
for N in {1..3}
|
||||
do
|
||||
READY=$(kubectl get so/keda-add-ons-http-interceptor -n keda -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}')
|
||||
echo "ScaledObjet is ready: $READY"
|
||||
if [[ "$READY" == "True" ]]; then
|
||||
exit 0
|
||||
fi
|
||||
sleep 15s
|
||||
done
|
||||
exit 1
|
|
@ -1,74 +0,0 @@
|
|||
name: Helm Chart CI
|
||||
on: [pull_request]
|
||||
|
||||
jobs:
|
||||
lint-helm-3-x:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Helm install
|
||||
uses: Azure/setup-helm@v1
|
||||
|
||||
- name: Lint 'KEDA' Helm chart
|
||||
run: helm lint keda
|
||||
|
||||
deploy-helm-3-x:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Helm install
|
||||
uses: Azure/setup-helm@v1
|
||||
|
||||
- name: Create k8s Kind Cluster
|
||||
uses: helm/kind-action@v1.0.0
|
||||
|
||||
- name: Show Kubernetes version
|
||||
run: |
|
||||
kubectl version
|
||||
|
||||
- name: Show Helm version
|
||||
run: |
|
||||
helm version
|
||||
|
||||
- name: Create keda namespace
|
||||
run: kubectl create ns keda
|
||||
|
||||
- name: Template Helm chart
|
||||
run: helm template keda ./keda/ --namespace keda
|
||||
|
||||
- name: Install Helm chart
|
||||
run: helm install keda ./keda/ --namespace keda
|
||||
|
||||
- name: Get all CRDs
|
||||
run: kubectl get crds -o wide
|
||||
|
||||
- name: Verify clustertriggerauthentications.keda.sh CRD is installed
|
||||
run: kubectl get crd/clustertriggerauthentications.keda.sh -o wide
|
||||
|
||||
- name: Verify triggerauthentications.keda.sh CRD is installed
|
||||
run: kubectl get crd/triggerauthentications.keda.sh -o wide
|
||||
|
||||
- name: Verify scaledjobs.keda.sh CRD is installed
|
||||
run: kubectl get crd/scaledjobs.keda.sh -o wide
|
||||
|
||||
- name: Verify scaledobjects.keda.sh CRD is installed
|
||||
run: kubectl get crd/scaledobjects.keda.sh -o wide
|
||||
|
||||
- name: Get all ScaledObjects
|
||||
run: kubectl get scaledobjects -o wide
|
||||
|
||||
- name: Get all ScaledJobs
|
||||
run: kubectl get scaledjobs -o wide
|
||||
|
||||
- name: Get all TriggerAuthentication
|
||||
run: kubectl get triggerauth -o wide
|
||||
|
||||
- name: Deploy Nginx with autoscaling
|
||||
run: kubectl apply -f ./samples/nginx-scaledobject.yml
|
||||
|
||||
- name: Get our Nginx ScaledObject
|
||||
run: kubectl get scaledobjects/nginx-autoscaling -o wide
|
|
@ -0,0 +1,8 @@
|
|||
# IDE specific files
|
||||
.vscode
|
||||
.idea
|
||||
*.swp
|
||||
*.swo
|
||||
|
||||
# Mac
|
||||
.DS_Store
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"markdownlint.config": {
|
||||
"MD028": false,
|
||||
"MD025": {
|
||||
"front_matter_title": ""
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"scanSettings": {
|
||||
"baseBranches": []
|
||||
},
|
||||
"checkRunSettings": {
|
||||
"vulnerableCheckRunConclusionLevel": "failure",
|
||||
"displayMode": "diff"
|
||||
},
|
||||
"issueSettings": {
|
||||
"minSeverityLevel": "LOW"
|
||||
}
|
||||
}
|
130
CONTRIBUTING.md
130
CONTRIBUTING.md
|
@ -1,73 +1,88 @@
|
|||
Contributing to KEDA Helm Charts
|
||||
===
|
||||
# Contributing to KEDA Helm Charts
|
||||
|
||||
Thanks for helping making KEDA better!
|
||||
|
||||
## Shipping a new version
|
||||
|
||||
> ⚠️ New Helm chart versions are only released in conjunction with KEDA Core or hotfixes, individual PRs do not have to perform these steps
|
||||
|
||||
You can easily release a new Helm chart version:
|
||||
|
||||
1. Update the version of the Helm chart in `Chart.yaml`
|
||||
2. Package the Helm chart
|
||||
```shell
|
||||
$ helm package keda
|
||||
Successfully packaged chart and saved it to: C:\Code\GitHub\charts\keda-0.1.0.tgz
|
||||
```
|
||||
|
||||
3. Move the new chart to the docs folder
|
||||
```shell
|
||||
$ mv keda-*.tgz docs
|
||||
```
|
||||
|
||||
4. Re-index the Helm repo to add our new version
|
||||
```shell
|
||||
$ helm repo index docs --url https://kedacore.github.io/charts
|
||||
```
|
||||
|
||||
5. Commit changes
|
||||
```shell
|
||||
git add .
|
||||
git commit -sm "Packaged new Helm chart version"
|
||||
git push origin chart-release
|
||||
```
|
||||
|
||||
6. Create a pull request with our new Helm index
|
||||
7. Create a GitHub release for your new Helm chart version by using the following template
|
||||
1. Update the version of the Helm chart in [Chart.yaml](keda/Chart.yaml).
|
||||
2. Update Warning message about Kubernetes compatibility in [NOTES.txt](keda/templates/NOTES.txt).
|
||||
3. Re-generate the Helm chart docs ([learn more](#documentation))
|
||||
4. Package the Helm chart
|
||||
- For KEDA:
|
||||
```shell
|
||||
$ helm package keda --destination docs
|
||||
Successfully packaged chart and saved it to: docs/keda-2.5.0.tgz
|
||||
```
|
||||
- For HTTP add-on:
|
||||
```shell
|
||||
$ helm package http-add-on --destination docs
|
||||
Successfully packaged chart and saved it to: docs/keda-add-ons-http-0.2.0.tgz
|
||||
```
|
||||
- For Azure Cosmos DB external scaler:
|
||||
```shell
|
||||
$ helm package external-scaler-azure-cosmos-db --destination docs
|
||||
Successfully packaged chart and saved it to: docs/external-scaler-azure-cosmos-db-0.1.0.tgz
|
||||
```
|
||||
5. Re-index the Helm repo to add our new version:
|
||||
```shell
|
||||
$ helm repo index docs --url https://kedacore.github.io/charts
|
||||
```
|
||||
6. Update the version in the "Browse all our Helm charts" section of our README.md
|
||||
7. Commit changes:
|
||||
```shell
|
||||
git add .
|
||||
git commit -sm "Packaged new Helm chart version"
|
||||
git push origin chart-release
|
||||
```
|
||||
8. Create a pull request with our new Helm index.
|
||||
9. Create a GitHub release for your new Helm chart version by using the following template.
|
||||
- Make sure to list the changes to our Helm chart which are tracked in the [KEDA Core vNext](https://github.com/kedacore/charts/milestone/10) milestone
|
||||
- Instead of listing all KEDA core changes, simply refer to our release notes on the other repo (see template)
|
||||
|
||||
> *Chart: {{Chart Version}} | App: {{App Name}}*
|
||||
> {{Description about the Helm chart}}
|
||||
>
|
||||
>
|
||||
> ## TL;DR
|
||||
>
|
||||
> ```shell
|
||||
> helm repo add keda https://kedacore.github.io/charts
|
||||
> helm install keda/keda
|
||||
> helm repo add kedacore https://kedacore.github.io/charts
|
||||
> helm repo update
|
||||
> helm install keda kedacore/keda --version {{Chart Version}} -n keda --create-namespace
|
||||
> ```
|
||||
>
|
||||
>
|
||||
> ## What is new?
|
||||
>
|
||||
> ### Features
|
||||
>
|
||||
>
|
||||
> - Support for KEDA v{version} ([release notes]({{URL to release}}))
|
||||
> - {{List new features}}
|
||||
>
|
||||
>
|
||||
> ### Fixes / Changes
|
||||
>
|
||||
>
|
||||
> - {{List fixes}}
|
||||
>
|
||||
>
|
||||
> ### Breaking Changes
|
||||
>
|
||||
>
|
||||
> - {{List breaking changes}}
|
||||
>
|
||||
>
|
||||
> ### Removal
|
||||
>
|
||||
>
|
||||
> - {{List removed features}}
|
||||
|
||||
|
||||
10. Create a new milestone called `KEDA Core v{version}`
|
||||
11. Move the closed items from `KEDA Core vNext` to the new milestone and close it
|
||||
|
||||
## Developer Certificate of Origin: Signing your work
|
||||
|
||||
### Every commit needs to be signed
|
||||
|
||||
The Developer Certificate of Origin (DCO) is a lightweight way for contributors to certify that they wrote or otherwise have the right to submit the code they are contributing to the project. Here is the full text of the DCO, reformatted for readability:
|
||||
```
|
||||
|
||||
```text
|
||||
By making a contribution to this project, I certify that:
|
||||
|
||||
(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or
|
||||
|
@ -81,13 +96,15 @@ By making a contribution to this project, I certify that:
|
|||
|
||||
Contributors sign-off that they adhere to these requirements by adding a `Signed-off-by` line to commit messages.
|
||||
|
||||
```
|
||||
```text
|
||||
This is my commit message
|
||||
|
||||
Signed-off-by: Random J Developer <random@developer.example.org>
|
||||
```
|
||||
|
||||
Git even has a `-s` command line option to append this automatically to your commit message:
|
||||
```
|
||||
|
||||
```shell
|
||||
$ git commit -s -m 'This is my commit message'
|
||||
```
|
||||
|
||||
|
@ -97,10 +114,31 @@ Each Pull Request is checked whether or not commits in a Pull Request do contai
|
|||
|
||||
No worries - You can easily replay your changes, sign them and force push them!
|
||||
|
||||
```
|
||||
```shell
|
||||
git checkout <branch-name>
|
||||
git reset $(git merge-base master <branch-name>)
|
||||
git reset $(git merge-base main <branch-name>)
|
||||
git add -A
|
||||
git commit -sm "one commit on <branch-name>"
|
||||
git push --force
|
||||
```
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
The documentation for each chart is generated with [helm-docs](https://github.com/norwoodj/helm-docs). This way we can ensure that values are consistent with the chart documentation.
|
||||
|
||||
To update a charts documentation, please run the following command:
|
||||
|
||||
```shell
|
||||
$ helm-docs
|
||||
INFO[2023-05-16T23:18:14+02:00] Found Chart directories [.]
|
||||
INFO[2023-05-16T23:18:14+02:00] Generating README Documentation for chart .
|
||||
|
||||
# or with a docker command:
|
||||
|
||||
$ docker run -v "$PWD:/helm-docs" -u $(id -u) jnorwood/helm-docs:latest
|
||||
time="2023-05-16T21:22:00Z" level=info msg="Found Chart directories [.]"
|
||||
time="2023-05-16T21:22:00Z" level=info msg="Generating README Documentation for chart ."
|
||||
```
|
||||
|
||||
> **Note**
|
||||
> When creating your own `README.md.gotmpl`, don't forget to add it to your `.helmignore` file.
|
||||
|
|
|
@ -1,19 +1,3 @@
|
|||
# Kubernetes Event-driven Autoscaling (KEDA) Maintainers
|
||||
|
||||
## Current
|
||||
|
||||
| Maintainer | GitHub ID | Affiliation |
|
||||
| -------------------- | --------------------------------------------- | ----------- |
|
||||
| Jeff Hollan | [jeffhollan](https://github.com/jeffhollan) | Microsoft |
|
||||
| Anirudh Garg | [anirudhgarg](https://github.com/anirudhgarg) | Microsoft |
|
||||
| Ahmed ElSayed | [ahmelsayed](https://github.com/ahmelsayed) | Microsoft |
|
||||
| Zbynek Roubalik | [zroubalik](https://github.com/zroubalik) | Red Hat |
|
||||
| Tom Kerkhove | [tomkerkhove](https://github.com/tomkerkhove) | Codit |
|
||||
|
||||
## Alumni
|
||||
|
||||
| Maintainer | GitHub ID | Affiliation |
|
||||
| -------------------- | --------------------------------------------- | ----------- |
|
||||
| Aarthi Saravanakumar | [Aarthisk](https://github.com/Aarthisk) | Microsoft |
|
||||
| Yaron Schneider | [yaron2](https://github.com/yaron2) | Microsoft |
|
||||
| Ben Browning | [bbrowning](https://github.com/bbrowning) | Red Hat |
|
||||
You can find an overview of our current and alumni maintainers [here](https://github.com/kedacore/governance/blob/main/MAINTAINERS.md).
|
||||
|
|
14
README.md
14
README.md
|
@ -3,10 +3,11 @@ KEDA allows for fine grained autoscaling (including to/from zero) for event driv
|
|||
|
||||
KEDA can run on both the cloud and the edge, integrates natively with Kubernetes components such as the Horizontal Pod Autoscaler, and has no external dependencies.
|
||||
|
||||
We are a Cloud Native Computing Foundation (CNCF) sandbox project.
|
||||
We are a Cloud Native Computing Foundation (CNCF) graduated project.
|
||||

|
||||
|
||||
## Getting Started
|
||||
|
||||
### Adding our Helm chart repo
|
||||
|
||||
```console
|
||||
|
@ -15,10 +16,13 @@ $ helm repo add kedacore https://kedacore.github.io/charts
|
|||
```
|
||||
|
||||
### Browse all our Helm charts
|
||||
```
|
||||
$ helm search repo kedacore/
|
||||
NAME CHART VERSION APP VERSION DESCRIPTION
|
||||
kedacore/keda 2.0.1 2.0.0 Event-based autoscaler for workloads on Kubernetes
|
||||
|
||||
```console
|
||||
$ helm search repo kedacore
|
||||
NAME CHART VERSION APP VERSION DESCRIPTION
|
||||
kedacore/external-scaler-azure-cosmos-db 0.1.0 0.1.0 Event-based autoscaler for Azure Cosmos DB chan...
|
||||
kedacore/keda 2.17.2 2.17.2 Event-based autoscaler for workloads on Kubernetes
|
||||
kedacore/keda-add-ons-http 0.11.0 0.11.0 Event-based autoscaler for HTTP workloads on Ku...
|
||||
```
|
||||
|
||||
## Releases
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
# Configuration for our Artifact Hub repository
|
||||
# See https://github.com/artifacthub/hub/blob/master/docs/metadata/artifacthub-repo.yml
|
||||
repositoryID: e7f9f3ad-5080-4095-8ff9-98a0b71371b4
|
||||
owners:
|
||||
- name: KEDA Maintainers
|
||||
email: cncf-keda-maintainers@lists.cncf.io
|
Binary file not shown.
1517
docs/index.yaml
1517
docs/index.yaml
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,24 @@
|
|||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*.orig
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode/
|
||||
*.gotmpl
|
|
@ -0,0 +1,27 @@
|
|||
apiVersion: v2
|
||||
type: application
|
||||
name: external-scaler-azure-cosmos-db
|
||||
description: Event-based autoscaler for Azure Cosmos DB change feed consumer applications
|
||||
|
||||
# Specify the Kubernetes version range that we support.
|
||||
# We allow pre-release versions for cloud-specific Kubernetes versions such as v1.21.5-gke.1302 or v1.18.9-eks-d1db3c
|
||||
kubeVersion: ">=v1.17.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: 0.1.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 and it is recommended to use it with quotes.
|
||||
appVersion: 0.1.0
|
||||
|
||||
home: https://github.com/kedacore/external-scaler-azure-cosmos-db
|
||||
sources:
|
||||
- https://github.com/kedacore/external-scaler-azure-cosmos-db
|
||||
maintainers:
|
||||
- name: Ahmed ElSayed
|
||||
email: ahmels@microsoft.com
|
||||
- name: Jatin Sanghvi
|
||||
email: jasanghv@microsoft.com
|
||||
- name: Tom Kerkhove
|
||||
email: tomkerkhove@microsoft.com
|
|
@ -0,0 +1,43 @@
|
|||
# KEDA External Scaler for Azure Cosmos DB
|
||||
|
||||
Chart for installing KEDA external scaler for Azure Cosmos DB.
|
||||
|
||||
- [Documentation](https://github.com/kedacore/external-scaler-azure-cosmos-db#readme)
|
||||
- [Release Notes](https://github.com/kedacore/external-scaler-azure-cosmos-db/releases/tag/v0.1.0)
|
||||
- [Example Usage](https://github.com/kedacore/external-scaler-azure-cosmos-db/tree/main/src/Scaler.Demo)
|
||||
|
||||
## Installation
|
||||
|
||||
1. Add and update Helm chart repo.
|
||||
|
||||
```shell
|
||||
helm repo add kedacore https://kedacore.github.io/charts
|
||||
helm repo update
|
||||
```
|
||||
|
||||
1. Install KEDA Helm chart (*or follow one of the other installation methods on [KEDA documentation](https://keda.sh/docs/deploy)*).
|
||||
|
||||
```shell
|
||||
helm install keda kedacore/keda --namespace keda --create-namespace
|
||||
```
|
||||
|
||||
1. Install Azure Cosmos DB external scaler Helm chart.
|
||||
|
||||
```shell
|
||||
helm install external-scaler-azure-cosmos-db kedacore/external-scaler-azure-cosmos-db --namespace keda --create-namespace
|
||||
```
|
||||
|
||||
## Values
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
|-----------|------|---------|-------------|
|
||||
| `additionalLabels` | object | `{}` | Additional labels that should be applied to all resources |
|
||||
| `image.pullPolicy` | string | `"Always"` | The image pull policy for Azure Cosmos DB external scaler |
|
||||
| `image.repository` | string | `"ghcr.io/kedacore/external-scaler-azure-cosmos-db"` | The Docker image repository to use for Azure Cosmos DB external scaler |
|
||||
| `image.tag` | string | `"0.1.0"` | The Docker image tag to use for Azure Cosmos DB external scaler |
|
||||
| `port` | int | `4050` | The incoming port for 'Azure Cosmos DB external scaler' service |
|
||||
| `resources.limits` | object | `{"cpu":"100m","memory":"512Mi"}` | The CPU/memory resource limit for the 'Azure Cosmos DB external scaler' pod |
|
||||
| `resources.requests` | object | `{"cpu":"10m","memory":"128Mi"}` | The CPU/memory resource request for the 'Azure Cosmos DB external scaler' pod |
|
||||
|
||||
----------------------------------------------
|
||||
Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs)
|
|
@ -0,0 +1,39 @@
|
|||
# KEDA External Scaler for Azure Cosmos DB
|
||||
|
||||
Chart for installing KEDA external scaler for Azure Cosmos DB.
|
||||
|
||||
- [Documentation](https://github.com/kedacore/external-scaler-azure-cosmos-db#readme)
|
||||
- [Release Notes](https://github.com/kedacore/external-scaler-azure-cosmos-db/releases/tag/v0.1.0)
|
||||
- [Example Usage](https://github.com/kedacore/external-scaler-azure-cosmos-db/tree/main/src/Scaler.Demo)
|
||||
|
||||
## Installation
|
||||
|
||||
1. Add and update Helm chart repo.
|
||||
|
||||
```shell
|
||||
helm repo add kedacore https://kedacore.github.io/charts
|
||||
helm repo update
|
||||
```
|
||||
|
||||
1. Install KEDA Helm chart (*or follow one of the other installation methods on [KEDA documentation](https://keda.sh/docs/deploy)*).
|
||||
|
||||
```shell
|
||||
helm install keda kedacore/keda --namespace keda --create-namespace
|
||||
```
|
||||
|
||||
1. Install Azure Cosmos DB external scaler Helm chart.
|
||||
|
||||
```shell
|
||||
helm install external-scaler-azure-cosmos-db kedacore/external-scaler-azure-cosmos-db --namespace keda --create-namespace
|
||||
```
|
||||
|
||||
## Values
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
|-----------|------|---------|-------------|
|
||||
{{- range .Values }}
|
||||
| `{{ .Key }}` | {{ .Type }} | {{ if .Default }}{{ .Default }}{{ else }}{{ .AutoDefault }}{{ end }} | {{ if .Description }}{{ .Description }}{{ else }}{{ .AutoDescription }}{{ end }} |
|
||||
{{- end }}
|
||||
|
||||
----------------------------------------------
|
||||
Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs)
|
|
@ -0,0 +1,28 @@
|
|||
{{/* vim: set filetype=mustache: */}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "external-scaler-azure-cosmos-db.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
These labels will be applied to all Cosmos DB scaler resources in the chart.
|
||||
*/}}
|
||||
{{- define "external-scaler-azure-cosmos-db.labels" }}
|
||||
helm.sh/chart: {{ include "external-scaler-azure-cosmos-db.chart" . }}
|
||||
app: {{ .Chart.Name }}
|
||||
control-plane: external-scaler
|
||||
keda.sh/addon: {{ .Chart.Name }}
|
||||
name: {{ .Chart.Name }}
|
||||
app.kubernetes.io/component: external-scaler
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
app.kubernetes.io/name: {{ .Chart.Name }}
|
||||
app.kubernetes.io/part-of: {{ .Chart.Name }}
|
||||
app.kubernetes.io/version: {{ .Values.image.tag | default .Chart.AppVersion }}
|
||||
{{- with .Values.additionalLabels }}
|
||||
{{ . | toYaml }}
|
||||
{{- end }}
|
||||
{{- end }}
|
|
@ -0,0 +1,27 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ .Chart.Name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "external-scaler-azure-cosmos-db.labels" . | indent 4 }}
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Chart.Name }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "external-scaler-azure-cosmos-db.labels" . | indent 8 }}
|
||||
spec:
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
image: {{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy | default "Always" }}
|
||||
ports:
|
||||
- name: scaler-grpc
|
||||
containerPort: 4050
|
||||
resources:
|
||||
{{- .Values.resources | toYaml | nindent 12 }}
|
||||
terminationGracePeriodSeconds: 10
|
|
@ -0,0 +1,14 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ .Chart.Name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "external-scaler-azure-cosmos-db.labels" . | indent 4 }}
|
||||
spec:
|
||||
ports:
|
||||
- name: grpc
|
||||
port: {{ .Values.port | default 4050 }}
|
||||
targetPort: scaler-grpc
|
||||
selector:
|
||||
app: {{ .Chart.Name }}
|
|
@ -0,0 +1,26 @@
|
|||
# -- Additional labels that should be applied to all resources
|
||||
additionalLabels: {}
|
||||
# name: <value>
|
||||
|
||||
# Docker image configuration.
|
||||
image:
|
||||
# -- The Docker image repository to use for Azure Cosmos DB external scaler
|
||||
repository: ghcr.io/kedacore/external-scaler-azure-cosmos-db
|
||||
# -- The Docker image tag to use for Azure Cosmos DB external scaler
|
||||
tag: 0.1.0
|
||||
# -- The image pull policy for Azure Cosmos DB external scaler
|
||||
pullPolicy: Always
|
||||
|
||||
# -- The incoming port for 'Azure Cosmos DB external scaler' service
|
||||
port: 4050
|
||||
|
||||
# Container resource requests and limits.
|
||||
resources:
|
||||
# -- The CPU/memory resource request for the 'Azure Cosmos DB external scaler' pod
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 128Mi
|
||||
# -- The CPU/memory resource limit for the 'Azure Cosmos DB external scaler' pod
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 512Mi
|
|
@ -0,0 +1,24 @@
|
|||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*.orig
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode/
|
||||
*.gotmpl
|
|
@ -0,0 +1,29 @@
|
|||
apiVersion: v2
|
||||
type: application
|
||||
name: keda-add-ons-http
|
||||
description: Event-based autoscaler for HTTP workloads on Kubernetes
|
||||
|
||||
# Specify the Kubernetes version range that we support.
|
||||
# We allow pre-release versions for cloud-specific Kubernetes versions such as v1.21.5-gke.1302 or v1.18.9-eks-d1db3c
|
||||
kubeVersion: ">=v1.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. This is incremented at chart release time and does not need
|
||||
# to be included in any PRs to main.
|
||||
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||
version: 0.11.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. Versions are not expected to
|
||||
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||
appVersion: 0.11.0
|
||||
home: https://github.com/kedacore/http-add-on
|
||||
sources:
|
||||
- https://github.com/kedacore/http-add-on
|
||||
maintainers:
|
||||
- name: Jorge Turrado
|
||||
email: jorge_turrado@hotmail.es
|
||||
- name: Zbynek Roubalik
|
||||
email: zbynek@kedify.io
|
||||
- name: Jan Wozniak
|
||||
email: jan@kedify.io
|
|
@ -0,0 +1,271 @@
|
|||
<p align="center"><img src="https://github.com/kedacore/keda/raw/main/images/logos/keda-word-colour.png" width="300"/></p>
|
||||
|
||||
<p style="font-size: 25px" align="center"><b>Kubernetes-based Event Driven Autoscaling - HTTP Add-On</b></p>
|
||||
<p style="font-size: 25px" align="center">
|
||||
|
||||
The KEDA HTTP Add On allows Kubernetes users to automatically scale their HTTP servers up and down (including to/from zero) based on incoming HTTP traffic. Please see our [use cases document](./docs/use_cases.md) to learn more about how and why you would use this project.
|
||||
|
||||
| 🚧 **Alpha - Not for production** 🚧|
|
||||
|---------------------------------------------|
|
||||
| ⚠ The HTTP add-on is in [experimental stage](https://github.com/kedacore/keda/issues/538) and not ready for production. <br /><br />It is provided as-is without support.
|
||||
|
||||
>This codebase moves very quickly. We can't currently guarantee that any part of it will work. Neither the complete feature set nor known issues may be fully documented. Similarly, issues filed against this project may not be responded to quickly or at all. **We will release and announce a beta release of this project**, and after we do that, we will document and respond to issues properly.
|
||||
|
||||
## Walkthrough
|
||||
|
||||
Although this is an **alpha release** project right now, we have prepared a walkthrough document that with instructions on getting started for basic usage.
|
||||
|
||||
See that document at [docs/walkthrough.md](https://github.com/kedacore/http-add-on/tree/main/docs/walkthrough.md)
|
||||
|
||||
## Design
|
||||
|
||||
The HTTP add-on is composed of multiple mostly independent components. This design was chosen to allow for highly
|
||||
customizable installations while allowing us to ship reasonable defaults.
|
||||
|
||||
- We have written a complete design document. Please see it at [docs/design.md](https://github.com/kedacore/http-add-on/tree/main/docs/design.md).
|
||||
- For more context on the design, please see our [scope document](https://github.com/kedacore/http-add-on/tree/main/docs/scope.md).
|
||||
- If you have further questions about the project, please see our [FAQ document](https://github.com/kedacore/http-add-on/tree/main/docs/faq.md).
|
||||
|
||||
## Installation
|
||||
|
||||
Please see the [complete installation instructions](https://github.com/kedacore/http-add-on/tree/main/docs/install.md).
|
||||
|
||||
## Contributing
|
||||
|
||||
Please see the [contributing documentation for all instructions](https://github.com/kedacore/http-add-on/tree/main/docs/contributing.md).
|
||||
|
||||
---
|
||||
We are a Cloud Native Computing Foundation (CNCF) graduated project.
|
||||
<p align="center"><img src="https://raw.githubusercontent.com/kedacore/keda/main/images/logo-cncf.svg" height="75px"></p>
|
||||
|
||||
---
|
||||
|
||||
## TL;DR
|
||||
|
||||
```console
|
||||
helm repo add kedacore https://kedacore.github.io/charts
|
||||
helm repo update
|
||||
|
||||
helm install http-add-on kedacore/keda-add-ons-http --create-namespace --namespace keda --version 0.11.0
|
||||
```
|
||||
|
||||
## Introduction
|
||||
|
||||
This chart bootstraps KEDA HTTP Add-on infrastructure on a Kubernetes cluster using the Helm package manager.
|
||||
|
||||
As part of that, it will install all the required Custom Resource Definitions (CRD).
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `http-add-on`, please read the [install instructions on the official repository to get started](https://github.com/kedacore/http-add-on/tree/main/docs/install.md):
|
||||
|
||||
```console
|
||||
$ helm install http-add-on kedacore/keda-add-ons-http --namespace keda
|
||||
```
|
||||
|
||||
> **Important:** This chart **needs** KEDA installed in your cluster to work properly.
|
||||
|
||||
## Uninstalling the Chart
|
||||
|
||||
To uninstall/delete the `http-add-on` Helm chart:
|
||||
|
||||
```console
|
||||
helm uninstall http-add-on
|
||||
```
|
||||
|
||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
|
||||
## Configuration
|
||||
|
||||
The following table lists the configurable parameters of the HTTP Add-On chart and
|
||||
their default values.
|
||||
|
||||
### General parameters
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
|-----------|------|---------|-------------|
|
||||
| `additionalLabels` | object | `{}` | Additional labels to be applied to installed resources. Note that not all resources will receive these labels. |
|
||||
| `crds.install` | bool | `true` | Whether to install the `HTTPScaledObject` [`CustomResourceDefinition`](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) |
|
||||
| `images.interceptor` | string | `"ghcr.io/kedacore/http-add-on-interceptor"` | Image name for the interceptor image component |
|
||||
| `images.kubeRbacProxy.name` | string | `"gcr.io/kubebuilder/kube-rbac-proxy"` | Image name for the Kube RBAC Proxy image component |
|
||||
| `images.kubeRbacProxy.tag` | string | `"v0.13.0"` | Image tag for the Kube RBAC Proxy image component |
|
||||
| `images.operator` | string | `"ghcr.io/kedacore/http-add-on-operator"` | Image name for the operator image component |
|
||||
| `images.scaler` | string | `"ghcr.io/kedacore/http-add-on-scaler"` | Image name for the scaler image component |
|
||||
| `images.tag` | string | `""` | Image tag for the http add on. This tag is applied to the images listed in `images.operator`, `images.interceptor`, and `images.scaler`. Optional, given app version of Helm chart is used by default |
|
||||
| `logging.interceptor.format` | string | `"console"` | Logging format for KEDA http-add-on Interceptor. allowed values: `json` or `console` |
|
||||
| `logging.interceptor.level` | string | `"info"` | Logging level for KEDA http-add-on Interceptor. allowed values: `debug`, `info`, `error`, or an integer value greater than 0, specified as string |
|
||||
| `logging.interceptor.stackTracesEnabled` | bool | `false` | Display stack traces in the logs |
|
||||
| `logging.interceptor.timeEncoding` | string | `"rfc3339"` | Logging time encoding for KEDA http-add-on Interceptor. allowed values are `epoch`, `millis`, `nano`, `iso8601`, `rfc3339` or `rfc3339nano` |
|
||||
| `logging.operator.format` | string | `"console"` | Logging format for KEDA http-add-on operator. allowed values: `json` or `console` |
|
||||
| `logging.operator.kubeRbacProxy.level` | int | `10` | Logging level for KEDA http-add-on operator rbac proxy allowed values: `0` for info, `4` for debug, or an integer value greater than 0 |
|
||||
| `logging.operator.level` | string | `"info"` | Logging level for KEDA http-add-on operator. allowed values: `debug`, `info`, `error`, or an integer value greater than 0, specified as string |
|
||||
| `logging.operator.stackTracesEnabled` | bool | `false` | Display stack traces in the logs |
|
||||
| `logging.operator.timeEncoding` | string | `"rfc3339"` | Logging time encoding for KEDA http-add-on operator. allowed values are `epoch`, `millis`, `nano`, `iso8601`, `rfc3339` or `rfc3339nano` |
|
||||
| `logging.scaler.format` | string | `"console"` | Logging format for KEDA http-add-on Scaler. allowed values: `json` or `console` |
|
||||
| `logging.scaler.level` | string | `"info"` | Logging level for KEDA http-add-on Scaler. allowed values: `debug`, `info`, `error`, or an integer value greater than 0, specified as string |
|
||||
| `logging.scaler.stackTracesEnabled` | bool | `false` | Display stack traces in the logs |
|
||||
| `logging.scaler.timeEncoding` | string | `"rfc3339"` | Logging time encoding for KEDA http-add-on Scaler. allowed values are `epoch`, `millis`, `nano`, `iso8601`, `rfc3339` or `rfc3339nano` |
|
||||
| `podSecurityContext` | object | [See below](#KEDA-is-secure-by-default) | [Pod security context] for all pods |
|
||||
| `rbac.aggregateToDefaultRoles` | bool | `false` | Install aggregate roles for edit and view |
|
||||
| `securityContext` | object | [See below](#KEDA-is-secure-by-default) | [Security context] for all containers |
|
||||
|
||||
### Operator
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
|-----------|------|---------|-------------|
|
||||
| `operator.affinity` | object | `{}` | Affinity for pod scheduling ([docs](https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/)) |
|
||||
| `operator.imagePullSecrets` | list | `[]` | The image pull secrets for the operator component |
|
||||
| `operator.kubeRbacProxy.resources.limits` | object | `{"cpu":"300m","memory":"200Mi"}` | The CPU/memory resource limit for the operator component's kube rbac proxy |
|
||||
| `operator.kubeRbacProxy.resources.requests` | object | `{"cpu":"10m","memory":"20Mi"}` | The CPU/memory resource request for the operator component's kube rbac proxy |
|
||||
| `operator.nodeSelector` | object | `{}` | Node selector for pod scheduling ([docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/)) |
|
||||
| `operator.podAnnotations` | object | `{}` | Annotations to be added to the operator pods |
|
||||
| `operator.port` | int | `8443` | The port for the operator main server to run on |
|
||||
| `operator.pullPolicy` | string | `"Always"` | The image pull policy for the operator component |
|
||||
| `operator.replicas` | int | `1` | Number of replicas, oerator k8s resources will not be installed if this is set to 0 |
|
||||
| `operator.resources.limits` | object | `{"cpu":0.5,"memory":"64Mi"}` | The CPU/memory resource limit for the operator component |
|
||||
| `operator.resources.requests` | object | `{"cpu":"250m","memory":"20Mi"}` | The CPU/memory resource request for the operator component |
|
||||
| `operator.tolerations` | list | `[]` | Tolerations for pod scheduling ([docs](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)) |
|
||||
| `operator.watchNamespace` | string | `""` | The namespace to watch for new `HTTPScaledObject`s. Leave this blank (i.e. `""`) to tell the operator to watch all namespaces. |
|
||||
|
||||
### Scaler
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
|-----------|------|---------|-------------|
|
||||
| `scaler.affinity` | object | `{}` | Affinity for pod scheduling ([docs](https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/)) |
|
||||
| `scaler.grpcPort` | int | `9090` | The port for the scaler's gRPC server. This is the server that KEDA will send scaling requests to. |
|
||||
| `scaler.imagePullSecrets` | list | `[]` | The image pull secrets for the scaler component |
|
||||
| `scaler.nodeSelector` | object | `{}` | Node selector for pod scheduling ([docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/)) |
|
||||
| `scaler.pendingRequestsInterceptor` | int | `200` | The number of "target requests" that the external scaler will report to KEDA for the interceptor's scaling metrics. See the [KEDA external scaler documentation](https://keda.sh/docs/2.4/concepts/external-scalers/) for details on target requests. |
|
||||
| `scaler.podAnnotations` | object | `{}` | Annotations to be added to the scaler pods |
|
||||
| `scaler.pullPolicy` | string | `"Always"` | The image pull policy for the scaler component |
|
||||
| `scaler.replicas` | int | `3` | Number of replicas |
|
||||
| `scaler.resources.limits.cpu` | float | `0.5` | |
|
||||
| `scaler.resources.limits.memory` | string | `"64Mi"` | |
|
||||
| `scaler.resources.requests.cpu` | string | `"250m"` | |
|
||||
| `scaler.resources.requests.memory` | string | `"20Mi"` | |
|
||||
| `scaler.service` | string | `"external-scaler"` | The name of the Kubernetes `Service` for the scaler component |
|
||||
| `scaler.streamInterval` | int | `200` | Interval in ms for communicating IsActive to KEDA |
|
||||
| `scaler.tolerations` | list | `[]` | Tolerations for pod scheduling ([docs](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)) |
|
||||
|
||||
### Interceptor
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
|-----------|------|---------|-------------|
|
||||
| `interceptor.admin.port` | int | `9090` | The port for the interceptor's admin server to run on |
|
||||
| `interceptor.admin.service` | string | `"interceptor-admin"` | The name of the Kubernetes `Service` for the interceptor's admin service |
|
||||
| `interceptor.affinity` | object | `{}` | Affinity for pod scheduling ([docs](https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/)) |
|
||||
| `interceptor.endpointsCachePollingIntervalMS` | int | `250` | How often (in milliseconds) the interceptor does a full refresh of its endpoints cache. The interceptor will also use Kubernetes events to stay up-to-date with the endpoints cache changes. This duration is the maximum time it will take to see changes to the endpoints. |
|
||||
| `interceptor.expectContinueTimeout` | string | `"1s"` | Special handling for responses with "Expect: 100-continue" response headers. see https://pkg.go.dev/net/http#Transport under the 'ExpectContinueTimeout' field for more details |
|
||||
| `interceptor.forceHTTP2` | bool | `false` | Whether or not the interceptor should force requests to use HTTP/2 |
|
||||
| `interceptor.idleConnTimeout` | string | `"90s"` | The timeout after which any idle connection is closed and removed from the interceptor's in-memory connection pool. |
|
||||
| `interceptor.imagePullSecrets` | list | `[]` | The image pull secrets for the interceptor component |
|
||||
| `interceptor.keepAlive` | string | `"1s"` | The interceptor's connection keep alive timeout |
|
||||
| `interceptor.maxIdleConns` | int | `100` | The maximum number of idle connections allowed in the interceptor's in-memory connection pool. Set to 0 to indicate no limit |
|
||||
| `interceptor.nodeSelector` | object | `{}` | Node selector for pod scheduling ([docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/)) |
|
||||
| `interceptor.pdb.enabled` | bool | `true` | Whether to install the `PodDisruptionBudget` for the interceptor |
|
||||
| `interceptor.pdb.maxUnavailable` | int | `1` | The maximum number of replicas that can be unavailable for the interceptor |
|
||||
| `interceptor.pdb.minAvailable` | int | `0` | The minimum number of replicas that should be available for the interceptor |
|
||||
| `interceptor.podAnnotations` | object | `{}` | Annotations to be added to the interceptor pods |
|
||||
| `interceptor.proxy.port` | int | `8080` | The port on which the interceptor's proxy service will listen for live HTTP traffic |
|
||||
| `interceptor.proxy.service` | string | `"interceptor-proxy"` | The name of the Kubernetes `Service` for the interceptor's proxy service. This is the service that accepts live HTTP traffic. |
|
||||
| `interceptor.pullPolicy` | string | `"Always"` | The image pull policy for the interceptor component |
|
||||
| `interceptor.replicas.max` | int | `50` | The maximum number of interceptor replicas that should ever be running |
|
||||
| `interceptor.replicas.min` | int | `3` | The minimum number of interceptor replicas that should ever be running |
|
||||
| `interceptor.replicas.waitTimeout` | string | `"20s"` | The maximum time the interceptor should wait for an HTTP request to reach a backend before it is considered a failure |
|
||||
| `interceptor.resources.limits` | object | `{"cpu":0.5,"memory":"64Mi"}` | The CPU/memory resource limit for the operator component |
|
||||
| `interceptor.resources.requests` | object | `{"cpu":"250m","memory":"20Mi"}` | The CPU/memory resource request for the operator component |
|
||||
| `interceptor.responseHeaderTimeout` | string | `"500ms"` | How long the interceptor will wait between forwarding a request to a backend and receiving response headers back before failing the request |
|
||||
| `interceptor.scaledObject.pollingInterval` | int | `1` | The interval (in milliseconds) that KEDA should poll the external scaler to fetch scaling metrics about the interceptor |
|
||||
| `interceptor.tcpConnectTimeout` | string | `"500ms"` | How long the interceptor waits to establish TCP connections with backends before failing a request. |
|
||||
| `interceptor.tls.cert_path` | string | `"/certs/tls.crt"` | Mount path of the certificate file to use with the interceptor proxy TLS server |
|
||||
| `interceptor.tls.cert_secret` | string | `"keda-tls-certs"` | Name of the Kubernetes secret that contains the certificates to be used with the interceptor proxy TLS server |
|
||||
| `interceptor.tls.enabled` | bool | `false` | Whether a TLS server should be started on the interceptor proxy |
|
||||
| `interceptor.tls.key_path` | string | `"/certs/tls.key"` | Mount path of the certificate key file to use with the interceptor proxy TLS server |
|
||||
| `interceptor.tls.port` | int | `8443` | Port that the interceptor proxy TLS server should be started on |
|
||||
| `interceptor.tlsHandshakeTimeout` | string | `"10s"` | The maximum amount of time the interceptor will wait for a TLS handshake. Set to zero to indicate no timeout. |
|
||||
| `interceptor.tolerations` | list | `[]` | Tolerations for pod scheduling ([docs](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)) |
|
||||
| `interceptor.topologySpreadConstraints` | list | `[]` | Topology spread constraints ([docs](https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/)) |
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to
|
||||
`helm install`. For example:
|
||||
|
||||
```console
|
||||
$ helm install http-add-on kedacore/keda-add-ons-http --namespace keda \
|
||||
--set version=<different tag from app version>
|
||||
```
|
||||
|
||||
Alternatively, a YAML file that specifies the values for the above parameters can
|
||||
be provided while installing the chart. For example,
|
||||
|
||||
```console
|
||||
helm install http-add-on kedacore/keda-add-ons-http --namespace keda -f values.yaml
|
||||
```
|
||||
|
||||
## KEDA is secure by default
|
||||
|
||||
Our default configuration strives to be as secure as possible. Because of that, KEDA will run as non-root and be secure-by-default. You can define global securityContext for all components or switch to granular mode and define securityContext for operator, kuberbacproxy, scaler, and interceptor:
|
||||
```yaml
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
privileged: false
|
||||
readOnlyRootFilesystem: true
|
||||
# runAsUser: 1000
|
||||
# runAsGroup: 1000
|
||||
# operator:
|
||||
# capabilities:
|
||||
# drop:
|
||||
# - ALL
|
||||
# allowPrivilegeEscalation: false
|
||||
# readOnlyRootFilesystem: true
|
||||
# seccompProfile:
|
||||
# type: RuntimeDefault
|
||||
# kuberbacproxy:
|
||||
# capabilities:
|
||||
# drop:
|
||||
# - ALL
|
||||
# allowPrivilegeEscalation: false
|
||||
# readOnlyRootFilesystem: true
|
||||
# seccompProfile:
|
||||
# type: RuntimeDefault
|
||||
# scaler:
|
||||
# capabilities:
|
||||
# drop:
|
||||
# - ALL
|
||||
# allowPrivilegeEscalation: false
|
||||
# readOnlyRootFilesystem: true
|
||||
# seccompProfile:
|
||||
# type: RuntimeDefault
|
||||
# interceptor:
|
||||
# capabilities:
|
||||
# drop:
|
||||
# - ALL
|
||||
# allowPrivilegeEscalation: false
|
||||
# readOnlyRootFilesystem: true
|
||||
# seccompProfile:
|
||||
# type: RuntimeDefault
|
||||
podSecurityContext:
|
||||
fsGroup: 1000
|
||||
supplementalGroups:
|
||||
- 1000
|
||||
# operator:
|
||||
# runAsNonRoot: true
|
||||
# runAsUser: 1000
|
||||
# runAsGroup: 1000
|
||||
# fsGroup: 1000
|
||||
# scaler:
|
||||
# runAsNonRoot: true
|
||||
# runAsUser: 1000
|
||||
# runAsGroup: 1000
|
||||
# fsGroup: 1000
|
||||
# interceptor:
|
||||
# runAsNonRoot: true
|
||||
# runAsUser: 1000
|
||||
# runAsGroup: 1000
|
||||
# fsGroup: 1000
|
||||
```
|
||||
|
||||
----------------------------------------------
|
||||
Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs)
|
|
@ -0,0 +1,205 @@
|
|||
<p align="center"><img src="https://github.com/kedacore/keda/raw/main/images/logos/keda-word-colour.png" width="300"/></p>
|
||||
|
||||
<p style="font-size: 25px" align="center"><b>Kubernetes-based Event Driven Autoscaling - HTTP Add-On</b></p>
|
||||
<p style="font-size: 25px" align="center">
|
||||
|
||||
The KEDA HTTP Add On allows Kubernetes users to automatically scale their HTTP servers up and down (including to/from zero) based on incoming HTTP traffic. Please see our [use cases document](./docs/use_cases.md) to learn more about how and why you would use this project.
|
||||
|
||||
| 🚧 **Alpha - Not for production** 🚧|
|
||||
|---------------------------------------------|
|
||||
| ⚠ The HTTP add-on is in [experimental stage](https://github.com/kedacore/keda/issues/538) and not ready for production. <br /><br />It is provided as-is without support.
|
||||
|
||||
>This codebase moves very quickly. We can't currently guarantee that any part of it will work. Neither the complete feature set nor known issues may be fully documented. Similarly, issues filed against this project may not be responded to quickly or at all. **We will release and announce a beta release of this project**, and after we do that, we will document and respond to issues properly.
|
||||
|
||||
## Walkthrough
|
||||
|
||||
Although this is an **alpha release** project right now, we have prepared a walkthrough document that with instructions on getting started for basic usage.
|
||||
|
||||
See that document at [docs/walkthrough.md](https://github.com/kedacore/http-add-on/tree/main/docs/walkthrough.md)
|
||||
|
||||
## Design
|
||||
|
||||
The HTTP add-on is composed of multiple mostly independent components. This design was chosen to allow for highly
|
||||
customizable installations while allowing us to ship reasonable defaults.
|
||||
|
||||
- We have written a complete design document. Please see it at [docs/design.md](https://github.com/kedacore/http-add-on/tree/main/docs/design.md).
|
||||
- For more context on the design, please see our [scope document](https://github.com/kedacore/http-add-on/tree/main/docs/scope.md).
|
||||
- If you have further questions about the project, please see our [FAQ document](https://github.com/kedacore/http-add-on/tree/main/docs/faq.md).
|
||||
|
||||
## Installation
|
||||
|
||||
Please see the [complete installation instructions](https://github.com/kedacore/http-add-on/tree/main/docs/install.md).
|
||||
|
||||
## Contributing
|
||||
|
||||
Please see the [contributing documentation for all instructions](https://github.com/kedacore/http-add-on/tree/main/docs/contributing.md).
|
||||
|
||||
---
|
||||
We are a Cloud Native Computing Foundation (CNCF) graduated project.
|
||||
<p align="center"><img src="https://raw.githubusercontent.com/kedacore/keda/main/images/logo-cncf.svg" height="75px"></p>
|
||||
|
||||
---
|
||||
|
||||
## TL;DR
|
||||
|
||||
```console
|
||||
helm repo add kedacore https://kedacore.github.io/charts
|
||||
helm repo update
|
||||
|
||||
helm install http-add-on kedacore/keda-add-ons-http --create-namespace --namespace keda --version {{ template "chart.appVersion" . }}
|
||||
```
|
||||
|
||||
## Introduction
|
||||
|
||||
This chart bootstraps KEDA HTTP Add-on infrastructure on a Kubernetes cluster using the Helm package manager.
|
||||
|
||||
As part of that, it will install all the required Custom Resource Definitions (CRD).
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `http-add-on`, please read the [install instructions on the official repository to get started](https://github.com/kedacore/http-add-on/tree/main/docs/install.md):
|
||||
|
||||
```console
|
||||
$ helm install http-add-on kedacore/keda-add-ons-http --namespace keda
|
||||
```
|
||||
|
||||
> **Important:** This chart **needs** KEDA installed in your cluster to work properly.
|
||||
|
||||
## Uninstalling the Chart
|
||||
|
||||
To uninstall/delete the `http-add-on` Helm chart:
|
||||
|
||||
```console
|
||||
helm uninstall http-add-on
|
||||
```
|
||||
|
||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
|
||||
## Configuration
|
||||
|
||||
The following table lists the configurable parameters of the HTTP Add-On chart and
|
||||
their default values.
|
||||
|
||||
### General parameters
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
|-----------|------|---------|-------------|
|
||||
{{- range .Values }}
|
||||
{{- if not (or (hasPrefix "operator" .Key) (hasPrefix "scaler" .Key) (hasPrefix "interceptor" .Key) ) }}
|
||||
| `{{ .Key }}` | {{ .Type }} | {{ if .Default }}{{ .Default }}{{ else }}{{ .AutoDefault }}{{ end }} | {{ if .Description }}{{ .Description }}{{ else }}{{ .AutoDescription }}{{ end }} |
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
### Operator
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
|-----------|------|---------|-------------|
|
||||
{{- range .Values }}
|
||||
{{- if hasPrefix "operator" .Key }}
|
||||
| `{{ .Key }}` | {{ .Type }} | {{ if .Default }}{{ .Default }}{{ else }}{{ .AutoDefault }}{{ end }} | {{ if .Description }}{{ .Description }}{{ else }}{{ .AutoDescription }}{{ end }} |
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
### Scaler
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
|-----------|------|---------|-------------|
|
||||
{{- range .Values }}
|
||||
{{- if hasPrefix "scaler" .Key }}
|
||||
| `{{ .Key }}` | {{ .Type }} | {{ if .Default }}{{ .Default }}{{ else }}{{ .AutoDefault }}{{ end }} | {{ if .Description }}{{ .Description }}{{ else }}{{ .AutoDescription }}{{ end }} |
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
### Interceptor
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
|-----------|------|---------|-------------|
|
||||
{{- range .Values }}
|
||||
{{- if hasPrefix "interceptor" .Key }}
|
||||
| `{{ .Key }}` | {{ .Type }} | {{ if .Default }}{{ .Default }}{{ else }}{{ .AutoDefault }}{{ end }} | {{ if .Description }}{{ .Description }}{{ else }}{{ .AutoDescription }}{{ end }} |
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to
|
||||
`helm install`. For example:
|
||||
|
||||
```console
|
||||
$ helm install http-add-on kedacore/keda-add-ons-http --namespace keda \
|
||||
--set version=<different tag from app version>
|
||||
```
|
||||
|
||||
Alternatively, a YAML file that specifies the values for the above parameters can
|
||||
be provided while installing the chart. For example,
|
||||
|
||||
```console
|
||||
helm install http-add-on kedacore/keda-add-ons-http --namespace keda -f values.yaml
|
||||
```
|
||||
|
||||
## KEDA is secure by default
|
||||
|
||||
Our default configuration strives to be as secure as possible. Because of that, KEDA will run as non-root and be secure-by-default. You can define global securityContext for all components or switch to granular mode and define securityContext for operator, kuberbacproxy, scaler, and interceptor:
|
||||
```yaml
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
privileged: false
|
||||
readOnlyRootFilesystem: true
|
||||
# runAsUser: 1000
|
||||
# runAsGroup: 1000
|
||||
# operator:
|
||||
# capabilities:
|
||||
# drop:
|
||||
# - ALL
|
||||
# allowPrivilegeEscalation: false
|
||||
# readOnlyRootFilesystem: true
|
||||
# seccompProfile:
|
||||
# type: RuntimeDefault
|
||||
# kuberbacproxy:
|
||||
# capabilities:
|
||||
# drop:
|
||||
# - ALL
|
||||
# allowPrivilegeEscalation: false
|
||||
# readOnlyRootFilesystem: true
|
||||
# seccompProfile:
|
||||
# type: RuntimeDefault
|
||||
# scaler:
|
||||
# capabilities:
|
||||
# drop:
|
||||
# - ALL
|
||||
# allowPrivilegeEscalation: false
|
||||
# readOnlyRootFilesystem: true
|
||||
# seccompProfile:
|
||||
# type: RuntimeDefault
|
||||
# interceptor:
|
||||
# capabilities:
|
||||
# drop:
|
||||
# - ALL
|
||||
# allowPrivilegeEscalation: false
|
||||
# readOnlyRootFilesystem: true
|
||||
# seccompProfile:
|
||||
# type: RuntimeDefault
|
||||
podSecurityContext:
|
||||
fsGroup: 1000
|
||||
supplementalGroups:
|
||||
- 1000
|
||||
# operator:
|
||||
# runAsNonRoot: true
|
||||
# runAsUser: 1000
|
||||
# runAsGroup: 1000
|
||||
# fsGroup: 1000
|
||||
# scaler:
|
||||
# runAsNonRoot: true
|
||||
# runAsUser: 1000
|
||||
# runAsGroup: 1000
|
||||
# fsGroup: 1000
|
||||
# interceptor:
|
||||
# runAsNonRoot: true
|
||||
# runAsUser: 1000
|
||||
# runAsGroup: 1000
|
||||
# fsGroup: 1000
|
||||
```
|
||||
|
||||
----------------------------------------------
|
||||
Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs)
|
|
@ -0,0 +1,31 @@
|
|||
{{/* vim: set filetype=mustache: */}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "keda-http-add-on.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Generate match labels
|
||||
IMPORTANT: Any change of these labels will block
|
||||
future upgrades
|
||||
*/}}
|
||||
{{- define "keda-http-add-on.matchLabels" }}
|
||||
app.kubernetes.io/part-of: {{ .Chart.Name }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Generate basic labels
|
||||
*/}}
|
||||
{{- define "keda-http-add-on.labels" }}
|
||||
{{- include "keda-http-add-on.matchLabels" . }}
|
||||
app.kubernetes.io/version: {{ .Values.images.tag | default .Chart.AppVersion }}
|
||||
helm.sh/chart: {{ include "keda-http-add-on.chart" . }}
|
||||
{{- if .Values.additionalLabels }}
|
||||
{{ toYaml .Values.additionalLabels }}
|
||||
{{- end }}
|
||||
{{- end }}
|
|
@ -0,0 +1,260 @@
|
|||
{{ if .Values.crds.install }}
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.15.0
|
||||
name: httpscaledobjects.http.keda.sh
|
||||
spec:
|
||||
group: http.keda.sh
|
||||
names:
|
||||
kind: HTTPScaledObject
|
||||
listKind: HTTPScaledObjectList
|
||||
plural: httpscaledobjects
|
||||
shortNames:
|
||||
- httpso
|
||||
singular: httpscaledobject
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .status.targetWorkload
|
||||
name: TargetWorkload
|
||||
type: string
|
||||
- jsonPath: .status.targetService
|
||||
name: TargetService
|
||||
type: string
|
||||
- jsonPath: .spec.replicas.min
|
||||
name: MinReplicas
|
||||
type: integer
|
||||
- jsonPath: .spec.replicas.max
|
||||
name: MaxReplicas
|
||||
type: integer
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: Age
|
||||
type: date
|
||||
- jsonPath: .status.conditions[?(@.reason=="HTTPScaledObjectIsReady")].status
|
||||
name: Active
|
||||
type: string
|
||||
name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: HTTPScaledObject is the Schema for the httpscaledobjects API
|
||||
properties:
|
||||
apiVersion:
|
||||
description: |-
|
||||
APIVersion defines the versioned schema of this representation of an object.
|
||||
Servers should convert recognized schemas to the latest internal value, and
|
||||
may reject unrecognized values.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||
type: string
|
||||
kind:
|
||||
description: |-
|
||||
Kind is a string value representing the REST resource this object represents.
|
||||
Servers may infer this from the endpoint the client submits requests to.
|
||||
Cannot be updated.
|
||||
In CamelCase.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
description: HTTPScaledObjectSpec defines the desired state of HTTPScaledObject
|
||||
properties:
|
||||
coldStartTimeoutFailoverRef:
|
||||
description: (optional) The name of the failover service to route
|
||||
HTTP requests to when the target is not available
|
||||
properties:
|
||||
port:
|
||||
description: The port to route to
|
||||
format: int32
|
||||
type: integer
|
||||
portName:
|
||||
description: The port to route to referenced by name
|
||||
type: string
|
||||
service:
|
||||
description: The name of the service to route to
|
||||
type: string
|
||||
timeoutSeconds:
|
||||
default: 30
|
||||
description: The timeout in seconds to wait before routing to
|
||||
the failover service (Default 30)
|
||||
format: int32
|
||||
type: integer
|
||||
required:
|
||||
- service
|
||||
type: object
|
||||
x-kubernetes-validations:
|
||||
- message: must define either the 'portName' or the 'port'
|
||||
rule: has(self.portName) != has(self.port)
|
||||
hosts:
|
||||
description: |-
|
||||
The hosts to route. All requests which the "Host" header
|
||||
matches any .spec.hosts (and the Request Target matches any
|
||||
.spec.pathPrefixes) will be routed to the Service and Port specified in
|
||||
the scaleTargetRef.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
initialCooldownPeriod:
|
||||
description: (optional) Initial period before scaling
|
||||
format: int32
|
||||
type: integer
|
||||
pathPrefixes:
|
||||
description: |-
|
||||
The paths to route. All requests which the Request Target matches any
|
||||
.spec.pathPrefixes (and the "Host" header matches any .spec.hosts)
|
||||
will be routed to the Service and Port specified in
|
||||
the scaleTargetRef.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
replicas:
|
||||
description: (optional) Replica information
|
||||
properties:
|
||||
max:
|
||||
description: Maximum amount of replicas to have in the deployment
|
||||
(Default 100)
|
||||
format: int32
|
||||
type: integer
|
||||
min:
|
||||
description: Minimum amount of replicas to have in the deployment
|
||||
(Default 0)
|
||||
format: int32
|
||||
type: integer
|
||||
type: object
|
||||
scaleTargetRef:
|
||||
description: |-
|
||||
The name of the deployment to route HTTP requests to (and to autoscale).
|
||||
Including validation as a requirement to define either the PortName or the Port
|
||||
properties:
|
||||
apiVersion:
|
||||
type: string
|
||||
kind:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
port:
|
||||
description: The port to route to
|
||||
format: int32
|
||||
type: integer
|
||||
portName:
|
||||
description: The port to route to referenced by name
|
||||
type: string
|
||||
service:
|
||||
description: The name of the service to route to
|
||||
type: string
|
||||
required:
|
||||
- service
|
||||
type: object
|
||||
x-kubernetes-validations:
|
||||
- message: must define either the 'portName' or the 'port'
|
||||
rule: has(self.portName) != has(self.port)
|
||||
scaledownPeriod:
|
||||
description: (optional) Cooldown period value
|
||||
format: int32
|
||||
type: integer
|
||||
scalingMetric:
|
||||
description: (optional) Configuration for the metric used for scaling
|
||||
properties:
|
||||
concurrency:
|
||||
description: Scaling based on concurrent requests for a given
|
||||
target
|
||||
properties:
|
||||
targetValue:
|
||||
default: 100
|
||||
description: Target value for rate scaling
|
||||
type: integer
|
||||
type: object
|
||||
requestRate:
|
||||
description: Scaling based the average rate during an specific
|
||||
time window for a given target
|
||||
properties:
|
||||
granularity:
|
||||
default: 1s
|
||||
description: Time granularity for rate calculation
|
||||
type: string
|
||||
targetValue:
|
||||
default: 100
|
||||
description: Target value for rate scaling
|
||||
type: integer
|
||||
window:
|
||||
default: 1m
|
||||
description: Time window for rate calculation
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
targetPendingRequests:
|
||||
description: (optional) DEPRECATED (use ScalingMetric instead) Target
|
||||
metric value
|
||||
format: int32
|
||||
type: integer
|
||||
timeouts:
|
||||
description: (optional) Timeouts that override the global ones
|
||||
properties:
|
||||
conditionWait:
|
||||
description: How long to wait for the backing workload to have
|
||||
1 or more replicas before connecting and sending the HTTP request
|
||||
(Default is set by the KEDA_CONDITION_WAIT_TIMEOUT environment
|
||||
variable)
|
||||
type: string
|
||||
responseHeader:
|
||||
description: How long to wait between when the HTTP request is
|
||||
sent to the backing app and when response headers need to arrive
|
||||
(Default is set by the KEDA_RESPONSE_HEADER_TIMEOUT environment
|
||||
variable)
|
||||
type: string
|
||||
type: object
|
||||
required:
|
||||
- scaleTargetRef
|
||||
type: object
|
||||
status:
|
||||
description: HTTPScaledObjectStatus defines the observed state of HTTPScaledObject
|
||||
properties:
|
||||
conditions:
|
||||
description: Conditions of the operator
|
||||
items:
|
||||
description: HTTPScaledObjectCondition stores the condition state
|
||||
properties:
|
||||
message:
|
||||
description: Message indicating details about the transition.
|
||||
type: string
|
||||
reason:
|
||||
description: Reason for the condition's last transition.
|
||||
enum:
|
||||
- ErrorCreatingAppScaledObject
|
||||
- AppScaledObjectCreated
|
||||
- TerminatingResources
|
||||
- AppScaledObjectTerminated
|
||||
- AppScaledObjectTerminationError
|
||||
- PendingCreation
|
||||
- HTTPScaledObjectIsReady
|
||||
type: string
|
||||
status:
|
||||
description: Status of the condition, one of True, False, Unknown.
|
||||
type: string
|
||||
timestamp:
|
||||
description: Timestamp of the condition
|
||||
type: string
|
||||
type:
|
||||
description: Type of condition
|
||||
enum:
|
||||
- Ready
|
||||
type: string
|
||||
required:
|
||||
- status
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
targetService:
|
||||
description: TargetService reflects details about the scaled service.
|
||||
type: string
|
||||
targetWorkload:
|
||||
description: TargetWorkload reflects details about the scaled workload.
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
||||
{{ end }}
|
|
@ -0,0 +1,147 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/component: interceptor
|
||||
app.kubernetes.io/name: http-add-on
|
||||
{{- include "keda-http-add-on.labels" . | indent 4 }}
|
||||
name: {{ .Chart.Name }}-interceptor
|
||||
namespace: {{ .Release.Namespace }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/component: interceptor
|
||||
app.kubernetes.io/name: http-add-on
|
||||
{{- include "keda-http-add-on.matchLabels" . | indent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/component: interceptor
|
||||
app.kubernetes.io/name: http-add-on
|
||||
{{- include "keda-http-add-on.labels" . | indent 8 }}
|
||||
annotations:
|
||||
{{- with .Values.interceptor.podAnnotations }}
|
||||
{{- range $key, $value := . }}
|
||||
{{ $key }}: {{ $value | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
spec:
|
||||
imagePullSecrets:
|
||||
{{- toYaml .Values.interceptor.imagePullSecrets | nindent 8 }}
|
||||
serviceAccountName: {{ .Chart.Name }}-interceptor
|
||||
{{- if .Values.podSecurityContext.interceptor }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.podSecurityContext.interceptor | nindent 8 }}
|
||||
{{- else }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- args:
|
||||
- "--zap-log-level={{ .Values.logging.interceptor.level }}"
|
||||
- "--zap-encoder={{ .Values.logging.interceptor.format }}"
|
||||
- "--zap-time-encoding={{ .Values.logging.interceptor.timeEncoding }}"
|
||||
{{- if .Values.logging.interceptor.stackTracesEnabled }}
|
||||
- "--zap-stacktrace-level=error"
|
||||
{{- end }}
|
||||
image: "{{ .Values.images.interceptor }}:{{ .Values.images.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: '{{ .Values.interceptor.pullPolicy | default "Always" }}'
|
||||
name: "{{ .Chart.Name }}-interceptor"
|
||||
env:
|
||||
- name: KEDA_HTTP_CURRENT_NAMESPACE
|
||||
value: "{{ .Release.Namespace }}"
|
||||
- name: KEDA_HTTP_PROXY_PORT
|
||||
value: "{{ .Values.interceptor.proxy.port }}"
|
||||
- name: KEDA_HTTP_ADMIN_PORT
|
||||
value: "{{ .Values.interceptor.admin.port }}"
|
||||
- name: KEDA_HTTP_CONNECT_TIMEOUT
|
||||
value: "{{ .Values.interceptor.tcpConnectTimeout }}"
|
||||
- name: KEDA_HTTP_KEEP_ALIVE
|
||||
value: "{{ .Values.interceptor.keepAlive }}"
|
||||
- name: KEDA_RESPONSE_HEADER_TIMEOUT
|
||||
value: "{{ .Values.interceptor.responseHeaderTimeout }}"
|
||||
- name: KEDA_CONDITION_WAIT_TIMEOUT
|
||||
value: "{{ .Values.interceptor.replicas.waitTimeout }}"
|
||||
- name: KEDA_HTTP_ENDPOINTS_CACHE_POLLING_INTERVAL_MS
|
||||
value: "{{ .Values.interceptor.endpointsCachePollingIntervalMS }}"
|
||||
- name: KEDA_HTTP_FORCE_HTTP2
|
||||
value: "{{ .Values.interceptor.forceHTTP2 }}"
|
||||
- name: KEDA_HTTP_MAX_IDLE_CONNS
|
||||
value: "{{ .Values.interceptor.maxIdleConns }}"
|
||||
- name: KEDA_HTTP_IDLE_CONN_TIMEOUT
|
||||
value: "{{ .Values.interceptor.idleConnTimeout }}"
|
||||
- name: KEDA_HTTP_TLS_HANDSHAKE_TIMEOUT
|
||||
value: "{{ .Values.interceptor.tlsHandshakeTimeout }}"
|
||||
- name: KEDA_HTTP_EXPECT_CONTINUE_TIMEOUT
|
||||
value: "{{ .Values.interceptor.expectContinueTimeout }}"
|
||||
{{- if .Values.interceptor.tls.enabled }}
|
||||
- name: KEDA_HTTP_PROXY_TLS_ENABLED
|
||||
value: "true"
|
||||
- name: KEDA_HTTP_PROXY_TLS_CERT_PATH
|
||||
value: "{{ .Values.interceptor.tls.cert_path }}"
|
||||
- name: KEDA_HTTP_PROXY_TLS_KEY_PATH
|
||||
value: "{{ .Values.interceptor.tls.key_path }}"
|
||||
- name: KEDA_HTTP_PROXY_TLS_PORT
|
||||
value: "{{ .Values.interceptor.tls.port }}"
|
||||
{{- end }}
|
||||
{{- if .Values.profiling.interceptor.enabled }}
|
||||
- name: PROFILING_BIND_ADDRESS
|
||||
value: "127.0.0.1:{{ .Values.profiling.interceptor.port }}"
|
||||
{{- end}}
|
||||
ports:
|
||||
- containerPort: {{ .Values.interceptor.admin.port }}
|
||||
name: admin
|
||||
- containerPort: {{ .Values.interceptor.proxy.port }}
|
||||
name: proxy
|
||||
{{- if .Values.interceptor.tls.enabled }}
|
||||
- containerPort: {{ .Values.interceptor.tls.port }}
|
||||
name: proxy-tls
|
||||
volumeMounts:
|
||||
- readOnly: true
|
||||
mountPath: "/certs"
|
||||
name: certs
|
||||
{{- end }}
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /livez
|
||||
port: proxy
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /readyz
|
||||
port: proxy
|
||||
resources:
|
||||
{{- toYaml .Values.interceptor.resources | nindent 10 }}
|
||||
{{- if .Values.securityContext.interceptor }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext.interceptor | nindent 10 }}
|
||||
{{- else }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 10 }}
|
||||
{{- end }}
|
||||
terminationGracePeriodSeconds: 10
|
||||
{{- if .Values.interceptor.tls.enabled }}
|
||||
volumes:
|
||||
- name: certs
|
||||
secret:
|
||||
secretName: {{ .Values.interceptor.tls.cert_secret }}
|
||||
{{- end }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
{{- with .Values.interceptor.nodeSelector }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.interceptor.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.interceptor.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.interceptor.topologySpreadConstraints }}
|
||||
topologySpreadConstraints:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.interceptor.priorityClassName }}
|
||||
priorityClassName: {{ .Values.interceptor.priorityClassName }}
|
||||
{{- end }}
|
|
@ -0,0 +1,23 @@
|
|||
{{- if .Values.interceptor.pdb.enabled -}}
|
||||
apiVersion: policy/v1
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/component: interceptor
|
||||
app.kubernetes.io/name: http-add-on
|
||||
{{- include "keda-http-add-on.labels" . | indent 4 }}
|
||||
name: {{ .Chart.Name }}-interceptor
|
||||
namespace: {{ .Release.Namespace }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/component: interceptor
|
||||
app.kubernetes.io/name: http-add-on
|
||||
{{- include "keda-http-add-on.matchLabels" . | indent 6 }}
|
||||
{{- if .Values.interceptor.pdb.minAvailable }}
|
||||
minAvailable: {{ .Values.interceptor.pdb.minAvailable }}
|
||||
{{- end }}
|
||||
{{- if .Values.interceptor.pdb.maxUnavailable }}
|
||||
maxUnavailable: {{ .Values.interceptor.pdb.maxUnavailable }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
|
@ -0,0 +1,54 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/component: interceptor
|
||||
app.kubernetes.io/name: http-add-on
|
||||
{{- include "keda-http-add-on.labels" . | indent 4 }}
|
||||
name: {{ .Chart.Name }}-interceptor
|
||||
rules:
|
||||
- apiGroups:
|
||||
- discovery.k8s.io
|
||||
resources:
|
||||
- endpointslices
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- services
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- http.keda.sh
|
||||
resources:
|
||||
- httpscaledobjects
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
labels:
|
||||
httpscaledobjects.http.keda.sh/version: {{ .Values.images.tag | default .Chart.AppVersion }}
|
||||
keda.sh/addon: {{ .Chart.Name }}
|
||||
app: {{ .Chart.Name }}
|
||||
name: {{ .Chart.Name }}-interceptor
|
||||
app.kubernetes.io/component: interceptor
|
||||
app.kubernetes.io/name: http-add-on
|
||||
{{- include "keda-http-add-on.labels" . | indent 4 }}
|
||||
name: {{ .Chart.Name }}-interceptor
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: {{ .Chart.Name }}-interceptor
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Chart.Name }}-interceptor
|
||||
namespace: {{ .Release.Namespace }}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue