This chart bootstraps a stac-fastapi-eodag deployment on a Kubernetes cluster using the Helm package manager.
helm repo add stac-fastapi-eodag https://cs-si.github.io/stac-fastapi-eodag
helm repo update
helm install my-release stac-fastapi-eodag/stac-fastapi-eodag- Kubernetes 1.23+
- Helm 3.8.0+
First, add the stac-fastapi-eodag Helm repository:
helm repo add stac-fastapi-eodag https://cs-si.github.io/stac-fastapi-eodag
helm repo updateTo install the chart with the release name my-release:
helm install my-release stac-fastapi-eodag/stac-fastapi-eodagThese commands deploy stac-fastapi-eodag on the Kubernetes cluster in the default configuration.
Tip: List all releases using
helm list
To uninstall the my-release deployment:
helm uninstall my-releaseThe command removes all the Kubernetes components associated with the chart and deletes the release.
| Key | Type | Default | Description |
|---|---|---|---|
| affinity | object | {} |
Affinity for stac-fastapi-eodag pods assignment |
| api.description | string | "STAC API powered by EODAG and STAC FastAPI" |
API description |
| api.landingId | string | "eodag-stac-fastapi" |
ID of the landing page |
| api.title | string | "EODAG STAC FastAPI" |
API title |
| args | list | [] |
Override default container args (useful when using custom images). Overrides the defaultArgs. |
| clusterDomain | string | "cluster.local" |
Kubernetes cluster domain name |
| collections | string | "" |
Optional overwrite of product types default configuration |
| command | list | [] |
Override default container command (useful when using custom images) |
| commonAnnotations | object | {} |
Annotations to add to all deployed objects |
| commonLabels | object | {} |
Labels to add to all deployed objects |
| config | string | nil |
[object] EODAG configuration |
| configExistingSecret.key | string | "" |
Existing secret key for EODAG config. If this is set, value config will be ignored |
| configExistingSecret.name | string | "" |
Existing secret name for EODAG config. If this is set, value config will be ignored |
| containerPorts.http | int | 8080 |
stac-fastapi-eodag application HTTP port number |
| containerSecurityContext.allowPrivilegeEscalation | bool | false |
Set stac-fastapi-eodag containers' Security Context allowPrivilegeEscalation |
| containerSecurityContext.capabilities.drop | list | ["all"] |
Set stac-fastapi-eodag containers' Security Context capabilities to be dropped |
| containerSecurityContext.enabled | bool | false |
Enabled stac-fastapi-eodag containers' Security Context |
| containerSecurityContext.readOnlyRootFilesystem | bool | false |
Set stac-fastapi-eodag containers' Security Context readOnlyRootFilesystem |
| containerSecurityContext.runAsNonRoot | bool | true |
Set stac-fastapi-eodag container's Security Context runAsNonRoot |
| containerSecurityContext.runAsUser | int | 1001 |
Set stac-fastapi-eodag containers' Security Context runAsUser |
| customLivenessProbe | object | {} |
Custom livenessProbe that overrides the default one |
| customReadinessProbe | object | {} |
Custom readinessProbe that overrides the default one |
| debug | bool | false |
When set to true, set the EODAG logging level to 3 (DEBUG). Otherwise, set EODAG logging level to 2 (INFO). |
| deployment.annotations | object | {} |
Additional custom annotations for stac-fastapi-eodag deployment |
| extraDeploy | list | [] |
Array of extra objects to deploy with the release |
| extraEnvVars | list | [] |
Array with extra environment variables to add to stac-fastapi-eodag nodes |
| extraEnvVarsCM | string | "" |
Name of existing ConfigMap containing extra env vars for stac-fastapi-eodag nodes |
| extraEnvVarsSecret | string | "" |
Name of existing Secret containing extra env vars for stac-fastapi-eodag nodes |
| extraVolumeMounts | list | [] |
Optionally specify extra list of additional volumeMounts for the stac-fastapi-eodag container(s) |
| extraVolumes | list | [] |
Optionally specify extra list of additional volumes for the stac-fastapi-eodag pod(s) |
| fullnameOverride | string | "" |
String to fully override common.names.fullname |
| global.imagePullSecrets | list | [] |
Global Docker registry secret names as an array |
| global.imageRegistry | string | "" |
Global Docker image registry |
| global.storageClass | string | "" |
Global StorageClass for Persistent Volume(s) |
| horizontalPodAutoscaler.cpuUtilization | int | 50 |
The maximum CPU utilization target computed in % of the CPU resources request. |
| horizontalPodAutoscaler.enabled | bool | false |
Decide to enable or disable the horizontal pod autoscaler |
| horizontalPodAutoscaler.maxReplicas | int | 10 |
The maximum number of replicas that are allowed to run simultaneously |
| horizontalPodAutoscaler.memUtilization | int | 50 |
The maximum RAM utilization target computed in % of the RAM resources request. |
| hostAliases | list | [] |
stac-fastapi-eodag pods host aliases |
| image.digest | string | "" |
stac-fastapi-eodag image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag |
| image.pullPolicy | string | "IfNotPresent" |
stac-fastapi-eodag image pull policy |
| image.pullSecrets | list | [] |
Specify docker-registry secret names as an array |
| image.registry | string | "ghcr.io" |
stac-fastapi-eodag image registry |
| image.repository | string | "cs-si/stac-fastapi-eodag" |
stac-fastapi-eodag image repository |
| image.tag | string | "v0.4.0-eodag-4.5.0" |
Overrides the stac-fastapi-eodag image tag whose default is the chart appVersion (immutable tags are recommended) |
| ingress.annotations | object | {} |
Annotations for the stac-fastapi-eodag ingress. To enable certificate autogeneration, place here your cert-manager annotations. |
| ingress.apiVersion | string | "" |
Ingress API version for the stac-fastapi-eodag ingress |
| ingress.enabled | bool | false |
Enable the creation of an ingress for the stac-fastapi-eodag |
| ingress.extraHosts | list | [] |
Extra hosts array for the stac-fastapi-eodag ingress |
| ingress.extraPaths | list | [] |
Extra paths for the stac-fastapi-eodag ingress |
| ingress.extraRules | list | [] |
Additional rules to be covered with this ingress record |
| ingress.extraTls | list | [] |
Extra TLS configuration for the stac-fastapi-eodag ingress |
| ingress.hostname | string | "eodag.local" |
Ingress hostname for the stac-fastapi-eodag ingress |
| ingress.ingressClassName | string | "" |
IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+) |
| ingress.path | string | "/" |
Path array for the stac-fastapi-eodag ingress |
| ingress.pathType | string | "ImplementationSpecific" |
Path type for the stac-fastapi-eodag ingress |
| ingress.secrets | list | [] |
Secrets array to mount into the Ingress |
| ingress.selfSigned | bool | false |
Create a TLS secret for this ingress record using self-signed certificates generated by Helm |
| ingress.servicePort | string | "http" |
Backend service port to use |
| ingress.tls | bool | false |
Enable TLS for the stac-fastapi-eodag ingress |
| initContainers | list | [] |
Add additional init containers to the stac-fastapi-eodag pod(s) |
| keepOriginUrl | bool | false |
Keep the original URL in the response headers |
| kubeVersion | string | "" |
Force target Kubernetes version (using Helm capabilities if not set) |
| lifecycleHooks | object | {} |
for the stac-fastapi-eodag container(s) to automate configuration before or after startup |
| livenessProbe.enabled | bool | false |
Enable livenessProbe on stac-fastapi-eodag containers |
| livenessProbe.failureThreshold | int | 3 |
Failure threshold for livenessProbe |
| livenessProbe.initialDelaySeconds | int | 3 |
Initial delay seconds for livenessProbe |
| livenessProbe.periodSeconds | int | 10 |
Period seconds for livenessProbe |
| livenessProbe.successThreshold | int | 1 |
Success threshold for livenessProbe |
| livenessProbe.timeoutSeconds | int | 1 |
Timeout seconds for livenessProbe |
| nameOverride | string | "" |
String to partially override common.names.fullname |
| namespaceOverride | string | "" |
String to fully override common.names.namespaceapi |
| nodeAffinityPreset.key | string | "" |
Node label key to match. Ignored if affinity is set |
| nodeAffinityPreset.type | string | "" |
Node affinity preset type. Ignored if affinity is set. Allowed values: soft or hard |
| nodeAffinityPreset.values | list | [] |
Node label values to match. Ignored if affinity is set |
| nodeSelector | object | {} |
Node labels for stac-fastapi-eodag pods assignment |
| otel.collector.config | string | "extensions:\n health_check:\n pprof:\n endpoint: 0.0.0.0:1777\n zpages:\n endpoint: 0.0.0.0:55679\nreceivers:\n otlp:\n protocols:\n http:\n endpoint: 0.0.0.0:4318\n # Collect own metrics\n prometheus:\n config:\n scrape_configs:\n - job_name: 'otel-collector'\n scrape_interval: 10s\n static_configs:\n - targets: ['0.0.0.0:8888']\nprocessors:\n batch:\nexporters:\n debug:\n verbosity: detailed\n # Data sources: metrics\n prometheus:\n endpoint: 0.0.0.0:8000\n namespace: eodag-otelcol-exporter\nservice:\n pipelines:\n traces:\n receivers: [otlp]\n processors: [batch]\n exporters: [debug]\n metrics:\n receivers: [otlp]\n processors: [batch]\n exporters: [debug,prometheus]\n extensions: [health_check, pprof, zpages]" |
[object] Optional overwrite of OpenTelemetry Collector default configuration |
| otel.collector.enabled | bool | false |
Deploy an otel collector backend as sidecar |
| otel.collector.image.pullPolicy | string | "IfNotPresent" |
stac-fastapi-eodag image pull policy |
| otel.collector.image.registry | string | "docker.io" |
OpenTelemetry Collector image registry |
| otel.collector.image.repository | string | "otel/opentelemetry-collector-contrib" |
OpenTelemetry Collector image repository |
| otel.collector.image.tag | string | "0.95.0" |
Overrides the OpenTelemetry Collector image tag |
| otel.collector.ports.otlpReceiver | int | 4318 |
port to receive otel telemetry |
| otel.collector.ports.prometheusExporter | int | 8000 |
Port for Prometheus scrapping. Data available under /metrics |
| otel.enabled | bool | false |
Enable otel export |
| otel.endpoint | string | "http://localhost:4318" |
The hostname and port for an otel compatible backend |
| otel.interval | int | 60000 |
The |
| otel.serviceMonitor.enabled | bool | false |
if true, creates a Prometheus Operator PodMonitor |
| otel.serviceMonitor.interval | string | "" |
Interval at which metrics should be scraped. |
| otel.serviceMonitor.labels | object | {} |
Labels that can be used so PodMonitor will be discovered by Prometheus |
| otel.serviceMonitor.metricRelabelings | list | [] |
MetricRelabelConfigs to apply to samples before ingestion |
| otel.serviceMonitor.namespace | string | "" |
Namespace for the PodMonitor Resource (defaults to the Release Namespace) |
| otel.serviceMonitor.relabelings | list | [] |
RelabelConfigs to apply to samples before scraping |
| otel.serviceMonitor.scrapeTimeout | string | "" |
Timeout after which the scrape is ended |
| otel.timeout | int | 10 |
The timeout for data transfer |
| podAffinityPreset | string | "" |
Pod affinity preset. Ignored if affinity is set. Allowed values: soft or hard |
| podAnnotations | object | {} |
Annotations for stac-fastapi-eodag pods |
| podAntiAffinityPreset | string | "soft" |
Pod anti-affinity preset. Ignored if affinity is set. Allowed values: soft or hard |
| podLabels | object | {} |
Extra labels for stac-fastapi-eodag pods |
| podSecurityContext.enabled | bool | false |
Enabled stac-fastapi-eodag pods' Security Context |
| podSecurityContext.fsGroup | int | 1001 |
Set stac-fastapi-eodag pod's Security Context fsGroup |
| priorityClassName | string | "" |
stac-fastapi-eodag pods' priorityClassName |
| providers | string | "" |
Optional overwrite of providers default configuration |
| readinessProbe.enabled | bool | false |
Enable readinessProbe on stac-fastapi-eodag containers |
| readinessProbe.failureThreshold | int | 3 |
Failure threshold for readinessProbe |
| readinessProbe.initialDelaySeconds | int | 3 |
Initial delay seconds for readinessProbe |
| readinessProbe.periodSeconds | int | 10 |
Period seconds for readinessProbe |
| readinessProbe.successThreshold | int | 1 |
Success threshold for readinessProbe |
| readinessProbe.timeoutSeconds | int | 1 |
Timeout seconds for readinessProbe |
| replicaCount | int | 1 |
Number of stac-fastapi-eodag replicas |
| resources.limits | object | {} |
The resources limits for the stac-fastapi-eodag containers |
| resources.requests | object | {} |
The requested resources for the stac-fastapi-eodag containers |
| rootPath | string | "" |
Application root path |
| runtimeClassName | string | "" |
Name of the runtime class to be used by pod(s) |
| schedulerName | string | "" |
Name of the k8s scheduler (other than default) |
| service.annotations | object | {} |
Additional custom annotations for stac-fastapi-eodag service |
| service.clusterIP | string | "" |
stac-fastapi-eodag service clusterIP IP |
| service.externalTrafficPolicy | string | "Cluster" |
Enable client source IP preservation |
| service.extraPorts | list | [] |
Extra port to expose on stac-fastapi-eodag service |
| service.http.enabled | bool | true |
Enable http port on service |
| service.loadBalancerIP | string | "" |
loadBalancerIP for the SuiteCRM Service (optional, cloud specific) |
| service.loadBalancerSourceRanges | list | [] |
Address that are allowed when service is LoadBalancer |
| service.nodePorts | object | {"http":"","metrics":""} |
[object] Specify the nodePort values for the LoadBalancer and NodePort service types. |
| service.ports.http | int | 8080 |
stac-fastapi-eodag service HTTP port |
| service.sessionAffinity | string | "None" |
Control where client requests go, to the same pod or round-robin |
| service.sessionAffinityConfig | object | {} |
Additional settings for the sessionAffinity |
| service.type | string | "ClusterIP" |
Kubernetes service type |
| serviceAccount.annotations | object | {} |
Additional custom annotations for the ServiceAccount |
| serviceAccount.automountServiceAccountToken | bool | true |
Automount service account token for the server service account |
| serviceAccount.create | bool | true |
Specifies whether a ServiceAccount should be created |
| serviceAccount.name | string | "" |
The name of the ServiceAccount to use. |
| shareProcessNamespace | bool | false |
Enable shared process namespace in a pod. |
| sidecars | list | [] |
Add additional sidecar containers to the stac-fastapi-eodag pod(s) |
| startupProbe.enabled | bool | false |
Enable startupProbe on stac-fastapi-eodag containers |
| startupProbe.failureThreshold | int | 3 |
Failure threshold for startupProbe |
| startupProbe.initialDelaySeconds | int | 10 |
Initial delay seconds for startupProbe |
| startupProbe.periodSeconds | int | 10 |
Period seconds for startupProbe |
| startupProbe.successThreshold | int | 1 |
Success threshold for startupProbe |
| startupProbe.timeoutSeconds | int | 1 |
Timeout seconds for startupProbe |
| terminationGracePeriodSeconds | int | 30 |
Termination grace period in seconds for pods |
| tolerations | list | [] |
Tolerations for stac-fastapi-eodag pods assignment |
| topologySpreadConstraints | list | [] |
Topology Spread Constraints for pod assignment |
| updateStrategy.type | string | "RollingUpdate" |
stac-fastapi-eodag statefulset strategy type |
Specify each parameter using the --set key=value[,key=value] argument to helm install. For example,
helm install my-release \
--set image.pullPolicy=Always \
stac-fastapi-eodag/stac-fastapi-eodagAlternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart:
helm install my-release -f values.yaml stac-fastapi-eodag/stac-fastapi-eodagTip: You can use the default values.yaml
EODAG credentials and provider settings are passed via the config value, which maps directly to the EODAG user configuration.
config:
cop_dataspace:
priority: 1
auth:
credentials:
username: your-username
password: your-passwordFor production deployments, use an existing Kubernetes secret instead of embedding credentials in values:
configExistingSecret:
name: eodag-credentials
key: eodag-config.ymlTo run stac-fastapi-eodag under a path prefix such as /stac, set rootPath and configure the ingress rewrite accordingly:
rootPath: /stac
ingress:
enabled: true
hostname: my-cluster.example.com
path: /stac/?(.*)
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1Always pin the image to an immutable tag in production. The default tag follows the pattern <app-version>-eodag-<eodag-version> (e.g. v0.3.0-eodag-4.0.0). Avoid using latest or floating tags — they make rollbacks unreliable and deployments non-deterministic.
Enable HPA to automatically scale the API under load:
horizontalPodAutoscaler:
enabled: true
maxReplicas: 5
cpuUtilization: 70Ensure resources.requests are set, as HPA requires them to compute utilization ratios.
The chart ships with an optional OpenTelemetry Collector sidecar. Enable it to export traces and metrics to any OTLP-compatible backend (Jaeger, Tempo, etc.):
otel:
enabled: true
endpoint: "http://tempo.monitoring.svc:4318"
collector:
enabled: truePrometheus metrics are exposed by the collector on port 8000 under /metrics. A ServiceMonitor resource for the Prometheus Operator can be enabled via otel.serviceMonitor.enabled.
Copyright 5, CS GROUP - France, https://www.cs-soprasteria.com
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.