Skip to content

Commit d436fd6

Browse files
authored
Added multidim api service. (#182)
1 parent f1804a8 commit d436fd6

File tree

4 files changed

+139
-0
lines changed

4 files changed

+139
-0
lines changed

helm-chart/eoapi/tests/config_tests.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ tests:
77
raster.enabled: false
88
stac.enabled: false
99
vector.enabled: true
10+
multidim.enabled: false
1011
asserts:
1112
- isKind:
1213
of: ConfigMap
@@ -21,6 +22,7 @@ tests:
2122
raster.enabled: true
2223
stac.enabled: false
2324
vector.enabled: false
25+
multidim.enabled: false
2426
asserts:
2527
- isKind:
2628
of: ConfigMap
@@ -35,6 +37,7 @@ tests:
3537
raster.enabled: false
3638
stac.enabled: true
3739
vector.enabled: false
40+
multidim.enabled: false
3841
asserts:
3942
- isKind:
4043
of: ConfigMap
@@ -44,3 +47,18 @@ tests:
4447
- equal:
4548
path: data.WEB_CONCURRENCY
4649
value: "5"
50+
- it: "multidim configmap defaults"
51+
set:
52+
raster.enabled: false
53+
stac.enabled: false
54+
vector.enabled: false
55+
multidim.enabled: true
56+
asserts:
57+
- isKind:
58+
of: ConfigMap
59+
- matchRegex:
60+
path: metadata.name
61+
pattern: ^multidim-envvar-configmap-RELEASE-NAME$
62+
- equal:
63+
path: data.GDAL_HTTP_MULTIPLEX
64+
value: "YES"

helm-chart/eoapi/tests/deploy_tests.yaml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ tests:
77
raster.enabled: false
88
stac.enabled: false
99
vector.enabled: true
10+
multidim.enabled: false
1011
asserts:
1112
- isKind:
1213
of: Deployment
@@ -36,6 +37,7 @@ tests:
3637
raster.enabled: true
3738
stac.enabled: false
3839
vector.enabled: false
40+
multidim.enabled: false
3941
asserts:
4042
- isKind:
4143
of: Deployment
@@ -65,6 +67,7 @@ tests:
6567
raster.enabled: false
6668
stac.enabled: true
6769
vector.enabled: false
70+
multidim.enabled: false
6871
asserts:
6972
- isKind:
7073
of: Deployment
@@ -89,3 +92,33 @@ tests:
8992
- equal:
9093
path: metadata.labels.gitsha
9194
value: "ABC123"
95+
- it: "multidim deploy defaults"
96+
set:
97+
raster.enabled: false
98+
stac.enabled: false
99+
vector.enabled: false
100+
multidim.enabled: true
101+
asserts:
102+
- isKind:
103+
of: Deployment
104+
- matchRegex:
105+
path: metadata.name
106+
pattern: ^multidim-RELEASE-NAME$
107+
- equal:
108+
path: spec.strategy.type
109+
value: "RollingUpdate"
110+
- equal:
111+
path: spec.template.spec.containers[0].resources.limits.cpu
112+
value: "768m"
113+
- equal:
114+
path: spec.template.spec.containers[0].resources.requests.cpu
115+
value: "256m"
116+
- equal:
117+
path: spec.template.spec.containers[0].resources.limits.memory
118+
value: "4096Mi"
119+
- equal:
120+
path: spec.template.spec.containers[0].resources.requests.memory
121+
value: "3072Mi"
122+
- equal:
123+
path: metadata.labels.gitsha
124+
value: "ABC123"

helm-chart/eoapi/tests/ingress_tests_nginx.yaml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ tests:
88
raster.enabled: false
99
stac.enabled: false
1010
vector.enabled: true
11+
multidim.enabled: false
1112
asserts:
1213
- isKind:
1314
of: Ingress
@@ -30,6 +31,7 @@ tests:
3031
raster.enabled: true
3132
stac.enabled: false
3233
vector.enabled: false
34+
multidim.enabled: false
3335
asserts:
3436
- isKind:
3537
of: Ingress
@@ -52,6 +54,7 @@ tests:
5254
raster.enabled: false
5355
stac.enabled: true
5456
vector.enabled: false
57+
multidim.enabled: false
5558
asserts:
5659
- isKind:
5760
of: Ingress
@@ -68,3 +71,26 @@ tests:
6871
- equal:
6972
path: spec.ingressClassName
7073
value: "nginx"
74+
- it: "multidim ingress defaults"
75+
set:
76+
ingress.className: "nginx"
77+
raster.enabled: false
78+
stac.enabled: false
79+
vector.enabled: false
80+
multidim.enabled: true
81+
asserts:
82+
- isKind:
83+
of: Ingress
84+
- matchRegex:
85+
path: spec.rules[0].http.paths[0].path
86+
pattern: ^/multidim\(\/\|\$\)\(\.\*\)$
87+
- equal:
88+
path: metadata.annotations
89+
value:
90+
nginx.ingress.kubernetes.io/enable-access-log: "true"
91+
nginx.ingress.kubernetes.io/use-regex: "true"
92+
nginx.ingress.kubernetes.io/rewrite-target: /$2
93+
nginx.ingress.kubernetes.io/enable-cors: "true"
94+
- equal:
95+
path: spec.ingressClassName
96+
value: "nginx"

helm-chart/eoapi/values.yaml

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ pgstacBootstrap:
172172
######################
173173
apiServices:
174174
- raster
175+
- multidim
175176
- stac
176177
- vector
177178

@@ -236,6 +237,67 @@ raster:
236237
# https://www.uvicorn.org/settings/#production
237238
WEB_CONCURRENCY: "5"
238239

240+
multidim:
241+
enabled: false # disabled by default
242+
autoscaling:
243+
# NOTE: to have autoscaling working you'll need to install the `eoapi-support` chart
244+
# see ../../../docs/autoscaling.md for more information
245+
enabled: false
246+
minReplicas: 1
247+
maxReplicas: 10
248+
# `type`: "cpu" || "requestRate" || "both"
249+
type: "requestRate"
250+
behaviour:
251+
scaleDown:
252+
stabilizationWindowSeconds: 60
253+
scaleUp:
254+
stabilizationWindowSeconds: 0
255+
targets:
256+
# matches `type` value above unless `type: "both"` is selected
257+
cpu: 75
258+
# 'm' units here represents generic milli (one-thousandth) unit instead of 'decimal'
259+
# https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#quantities
260+
# so when the average unit among these pods is <requestRate>/1000 then scale
261+
# you can watch the actual/target in real time using `kubectl get hpa/<name>`
262+
requestRate: 100000m
263+
image:
264+
name: ghcr.io/developmentseed/titiler-md-demo
265+
tag: 0ea56bfa44457b92e804fd4c0c2192019c002965
266+
command:
267+
- "uvicorn"
268+
- "titiler.pgstac.main:app"
269+
- "--host=$(HOST)"
270+
- "--port=$(PORT)"
271+
settings:
272+
# https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
273+
resources:
274+
limits:
275+
cpu: "768m"
276+
memory: "4096Mi"
277+
requests:
278+
cpu: "256m"
279+
memory: "3072Mi"
280+
envVars:
281+
##############
282+
# titiler
283+
##############
284+
GDAL_CACHEMAX: "200" # 200 mb
285+
GDAL_DISABLE_READDIR_ON_OPEN: "EMPTY_DIR"
286+
GDAL_INGESTED_BYTES_AT_OPEN: "32768"
287+
GDAL_HTTP_MERGE_CONSECUTIVE_RANGES: "YES"
288+
GDAL_HTTP_MULTIPLEX: "YES"
289+
GDAL_HTTP_VERSION: "2"
290+
PYTHONWARNINGS: "ignore"
291+
VSI_CACHE: "TRUE"
292+
VSI_CACHE_SIZE: "5000000" # 5 MB (per file-handle)
293+
##############
294+
# uvicorn
295+
##############
296+
HOST: "0.0.0.0"
297+
PORT: "8080"
298+
# https://www.uvicorn.org/settings/#production
299+
WEB_CONCURRENCY: "5"
300+
239301
stac:
240302
enabled: true
241303
autoscaling:

0 commit comments

Comments
 (0)