Skip to content

Commit 47eb46f

Browse files
dgyorgy-nokiaBhargav-Singhjkosimovmozesl-nokia
authored
Multiple parallel KRM function evaluator pods for the same KRM functions (kptdev#336)
* NCDEV-2832 : support sequential KRM function evaluation in podEvaluator * refactor podevaluator modules into separate files * NCDEV-2833: Multiple parallel KRM function evaluator pods * NCOMGITFM-1569 Schedule waitlisted items for failed pod to another * NCDEV-3650: Unify KRM fn parameter names * Add pod retrieve logic, fixes, resource request/limits for krm pods * fix lint error * lint fixes * additional changes * fix goscan * add some buffer to e2e test * set max-waitlist-length * minor fixes * additional unit test by thc1006 * add missing test file * more unit tests by thc1006 * Increase the expected time buffer a little for e2e test * comment fix --------- Co-authored-by: Bhargav Anil Kumar Singh <singh.bhargav_anil_kumar@nokia.com> Co-authored-by: Kosimov Javlonbek <javlonbek.kosimov@nokia.com> Co-authored-by: Mózes László Máté <laszlo.mozes@nokia.com>
1 parent 8d883cb commit 47eb46f

16 files changed

Lines changed: 4552 additions & 1522 deletions

File tree

deployments/porch/2-function-runner.yaml

Lines changed: 78 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ spec:
4848
- --functions=/home/nonroot/functions
4949
- --pod-namespace=porch-fn-system
5050
- --max-request-body-size=6291456 # Keep this in sync with porch-server's corresponding argument
51+
- --max-parallel-pods-per-function=2
52+
- --max-waitlist-length=1
5153
- --warm-up-pod-cache=true
5254
env:
5355
- name: WRAPPER_SERVER_IMAGE
@@ -107,22 +109,79 @@ metadata:
107109
namespace: porch-system
108110
data:
109111
pod-cache-config.yaml: |
110-
ghcr.io/kptdev/krm-functions-catalog/apply-replacements:v0.1.1: 30m
111-
ghcr.io/kptdev/krm-functions-catalog/apply-setters:v0.2.0: 30m
112-
ghcr.io/kptdev/krm-functions-catalog/create-setters:v0.1.0: 30m
113-
ghcr.io/kptdev/krm-functions-catalog/ensure-name-substring:v0.2.0: 30m
114-
ghcr.io/kptdev/krm-functions-catalog/gatekeeper:v0.2.1: 30m
115-
ghcr.io/kptdev/krm-functions-catalog/kubeconform:v0.1.1: 30m
116-
ghcr.io/kptdev/krm-functions-catalog/search-replace:v0.2.0: 30m
117-
ghcr.io/kptdev/krm-functions-catalog/set-annotations:v0.1.4: 30m
118-
ghcr.io/kptdev/krm-functions-catalog/set-enforcement-action:v0.1.0: 30m
119-
ghcr.io/kptdev/krm-functions-catalog/set-image:v0.1.1: 30m
120-
ghcr.io/kptdev/krm-functions-catalog/set-labels:v0.1.5: 30m
121-
ghcr.io/kptdev/krm-functions-catalog/set-namespace:v0.4.1: 30m
122-
ghcr.io/kptdev/krm-functions-catalog/starlark:v0.4.3: 30m
123-
ghcr.io/kptdev/krm-functions-catalog/upsert-resource:v0.2.0: 30m
124-
ghcr.io/kptdev/krm-functions-catalog/enable-gcp-services:v0.1.0: 30m
125-
ghcr.io/kptdev/krm-functions-catalog/export-terraform:v0.1.0: 30m
126-
ghcr.io/kptdev/krm-functions-catalog/generate-folders:v0.1.1: 30m
127-
ghcr.io/kptdev/krm-functions-catalog/remove-local-config-resources:v0.1.0: 30m
128-
ghcr.io/kptdev/krm-functions-catalog/set-project-id:v0.2.0: 30m
112+
- name: ghcr.io/kptdev/krm-functions-catalog/apply-replacements:v0.1.1
113+
timeToLive: 30m
114+
maxWaitlistLength: 2
115+
maxParallelPodsPerFunction: 2
116+
- name: ghcr.io/kptdev/krm-functions-catalog/apply-setters:v0.2.0
117+
timeToLive: 30m
118+
maxWaitlistLength: 2
119+
maxParallelPodsPerFunction: 2
120+
- name: ghcr.io/kptdev/krm-functions-catalog/create-setters:v0.1.0
121+
timeToLive: 30m
122+
maxWaitlistLength: 2
123+
maxParallelPodsPerFunction: 2
124+
- name: ghcr.io/kptdev/krm-functions-catalog/ensure-name-substring:v0.2.0
125+
timeToLive: 30m
126+
maxWaitlistLength: 2
127+
maxParallelPodsPerFunction: 2
128+
- name: ghcr.io/kptdev/krm-functions-catalog/gatekeeper:v0.2.1
129+
timeToLive: 30m
130+
maxWaitlistLength: 2
131+
maxParallelPodsPerFunction: 2
132+
- name: ghcr.io/kptdev/krm-functions-catalog/kubeconform:v0.1.1
133+
timeToLive: 30m
134+
maxWaitlistLength: 2
135+
maxParallelPodsPerFunction: 2
136+
- name: ghcr.io/kptdev/krm-functions-catalog/search-replace:v0.2.0
137+
timeToLive: 30m
138+
maxWaitlistLength: 2
139+
maxParallelPodsPerFunction: 2
140+
- name: ghcr.io/kptdev/krm-functions-catalog/set-annotations:v0.1.4
141+
timeToLive: 30m
142+
maxWaitlistLength: 2
143+
maxParallelPodsPerFunction: 2
144+
- name: ghcr.io/kptdev/krm-functions-catalog/set-enforcement-action:v0.1.0
145+
timeToLive: 30m
146+
maxWaitlistLength: 2
147+
maxParallelPodsPerFunction: 2
148+
- name: ghcr.io/kptdev/krm-functions-catalog/set-image:v0.1.1
149+
timeToLive: 30m
150+
maxWaitlistLength: 2
151+
maxParallelPodsPerFunction: 2
152+
- name: ghcr.io/kptdev/krm-functions-catalog/set-labels:v0.1.5
153+
timeToLive: 30m
154+
maxWaitlistLength: 2
155+
maxParallelPodsPerFunction: 2
156+
- name: ghcr.io/kptdev/krm-functions-catalog/set-namespace:v0.4.1
157+
timeToLive: 30m
158+
maxWaitlistLength: 2
159+
maxParallelPodsPerFunction: 2
160+
- name: ghcr.io/kptdev/krm-functions-catalog/starlark:v0.4.3
161+
timeToLive: 30m
162+
maxWaitlistLength: 2
163+
maxParallelPodsPerFunction: 2
164+
- name: ghcr.io/kptdev/krm-functions-catalog/upsert-resource:v0.2.0
165+
timeToLive: 30m
166+
maxWaitlistLength: 2
167+
maxParallelPodsPerFunction: 2
168+
- name: ghcr.io/kptdev/krm-functions-catalog/enable-gcp-services:v0.1.0
169+
timeToLive: 30m
170+
maxWaitlistLength: 2
171+
maxParallelPodsPerFunction: 2
172+
- name: ghcr.io/kptdev/krm-functions-catalog/export-terraform:v0.1.0
173+
timeToLive: 30m
174+
maxWaitlistLength: 2
175+
maxParallelPodsPerFunction: 2
176+
- name: ghcr.io/kptdev/krm-functions-catalog/generate-folders:v0.1.1
177+
timeToLive: 30m
178+
maxWaitlistLength: 2
179+
maxParallelPodsPerFunction: 2
180+
- name: ghcr.io/kptdev/krm-functions-catalog/remove-local-config-resources:v0.1.0
181+
timeToLive: 30m
182+
maxWaitlistLength: 2
183+
maxParallelPodsPerFunction: 2
184+
- name: ghcr.io/kptdev/krm-functions-catalog/set-project-id:v0.2.0
185+
timeToLive: 30m
186+
maxWaitlistLength: 2
187+
maxParallelPodsPerFunction: 2

docs/content/en/docs/6_configuration_and_deployments/configurations/components/function-runner-config/_index.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,14 @@ args:
3434
```bash
3535
args:
3636
- --pod-cache-config=/pod-cache-config/pod-cache-config.yaml # Pod cache config file path
37-
- --warm-up-pod-cache=true # Warm up pod cache on startup (default: true)
38-
- --pod-namespace=porch-fn-system # Namespace for KRM function pods (default: porch-fn-system)
39-
- --pod-ttl=30m # Pod TTL before GC (default: 30m)
40-
- --scan-interval=1m # GC scan interval (default: 1m)
41-
- --function-pod-template= # ConfigMap with pod specification
42-
- --max-request-body-size=6291456 # Max gRPC message size in bytes (default: 6MB)
37+
- --warm-up-pod-cache=true # Warm up pod cache on startup (default: true)
38+
- --pod-namespace=porch-fn-system # Namespace for KRM function pods (default: porch-fn-system)
39+
- --pod-ttl=30m # Pod TTL before GC (default: 30m)
40+
- --scan-interval=1m # GC scan interval (default: 1m)
41+
- --function-pod-template= # ConfigMap with pod specification
42+
- --max-request-body-size=6291456 # Max gRPC message size in bytes (default: 6MB)
43+
- --max-waitlist-length # Maximum waitlist length per pod
44+
- --max-parallel-pods-per-function # Maximum parallel pods per function
4345
```
4446

4547
#### Private Registry Arguments

0 commit comments

Comments
 (0)