|
| 1 | +# EOAPI Helm Chart |
| 2 | + |
| 3 | +This Helm chart deploys the EOAPI (Earth Observation API) stack, which includes STAC API, raster tile services, vector tile services, and a multidimensional data service. |
| 4 | + |
| 5 | +## Overview |
| 6 | + |
| 7 | +The chart sets up: |
| 8 | + |
| 9 | +- A PostgreSQL database with PostGIS and PgSTAC extensions |
| 10 | +- STAC API service for metadata discovery and search |
| 11 | +- Titiler for raster tile services |
| 12 | +- TIPG for vector tile services |
| 13 | +- Optional multidimensional data service |
| 14 | + |
| 15 | +## Prerequisites |
| 16 | + |
| 17 | +- Kubernetes 1.16+ |
| 18 | +- Helm 3.0+ |
| 19 | +- PV provisioner support in the underlying infrastructure |
| 20 | +- CrunchyData Postgres Operator (for the PostgreSQL database) |
| 21 | + |
| 22 | +## Installation |
| 23 | + |
| 24 | +```bash |
| 25 | +# Install Postgres Operator first |
| 26 | +helm install --set disable_check_for_upgrades=true pgo oci://registry.developers.crunchydata.com/crunchydata/pgo |
| 27 | + |
| 28 | +# Then install eoapi |
| 29 | +helm install eoapi ./eoapi |
| 30 | +``` |
| 31 | + |
| 32 | +## Configuration |
| 33 | + |
| 34 | +The chart can be configured via `values.yaml`. See the chart's `values.yaml` file for all available options and detailed descriptions. |
| 35 | + |
| 36 | +Key configuration sections: |
| 37 | + |
| 38 | +```yaml |
| 39 | +# Services to enable |
| 40 | +apiServices: |
| 41 | + - raster |
| 42 | + - stac |
| 43 | + - vector |
| 44 | + # - multidim (disabled by default) |
| 45 | + |
| 46 | +# Ingress configuration |
| 47 | +ingress: |
| 48 | + enabled: true |
| 49 | + className: "nginx" |
| 50 | + # ... |
| 51 | + |
| 52 | +# Database configuration |
| 53 | +postgrescluster: |
| 54 | + enabled: true |
| 55 | + # ... |
| 56 | +``` |
| 57 | + |
| 58 | +## PgSTAC Bootstrap Process |
| 59 | + |
| 60 | +The chart includes a streamlined process for initializing and setting up the PgSTAC database. |
| 61 | + |
| 62 | +### PgSTAC Bootstrap Overview |
| 63 | + |
| 64 | +The setup process consists of two main jobs: |
| 65 | + |
| 66 | +1. **pgstac-migrate job**: Runs the pypgstac migrate command to initialize the database schema, applies settings, and sets necessary permissions. |
| 67 | +2. **pgstac-load-samples job**: (Optional) Loads sample STAC data only when sample loading is enabled. |
| 68 | + |
| 69 | +### Improvements in PgSTAC Bootstrap |
| 70 | + |
| 71 | +- Replaced custom Python script with pypgstac migrate command |
| 72 | +- Moved SQL settings to a dedicated SQL file for better maintainability |
| 73 | +- Separated sample data loading into an optional job |
| 74 | +- Uses standard PostgreSQL environment variables |
| 75 | +- Ensures the process remains idempotent for safe re-runs |
| 76 | + |
| 77 | +### PgSTAC Directory Structure |
| 78 | + |
| 79 | +The codebase has been reorganized to separate different types of files: |
| 80 | + |
| 81 | +- `initdb-data/settings/`: Contains configuration settings like the PgSTAC settings SQL file |
| 82 | +- `initdb-data/samples/`: Contains sample data files that are loaded only when sample loading is enabled |
| 83 | + |
| 84 | +### PgSTAC Configuration |
| 85 | + |
| 86 | +- Enable/disable the setup process through `pgstacBootstrap.enabled` |
| 87 | +- Control sample data loading: |
| 88 | + - New approach: `pgstacBootstrap.settings.loadSamples` (recommended) |
| 89 | + - Legacy approach: `pgstacBootstrap.settings.envVars.LOAD_FIXTURES` (deprecated) |
| 90 | + |
| 91 | +Example configuration: |
| 92 | + |
| 93 | +```yaml |
| 94 | +pgstacBootstrap: |
| 95 | + enabled: true |
| 96 | + settings: |
| 97 | + # General configuration options |
| 98 | + loadSamples: true # Set to false to disable sample data loading |
| 99 | + |
| 100 | + resources: |
| 101 | + requests: |
| 102 | + cpu: "512m" |
| 103 | + memory: "1024Mi" |
| 104 | + limits: |
| 105 | + cpu: "512m" |
| 106 | + memory: "1024Mi" |
| 107 | +``` |
| 108 | +
|
| 109 | +## Services |
| 110 | +
|
| 111 | +### STAC API |
| 112 | +
|
| 113 | +The STAC API service provides a standardized way to search and discover geospatial data. |
| 114 | +
|
| 115 | +### Raster Services (Titiler) |
| 116 | +
|
| 117 | +Provides dynamic tiling for raster data through the TiTiler implementation. |
| 118 | +
|
| 119 | +### Vector Services (TIPG) |
| 120 | +
|
| 121 | +Provides vector tile services for PostGIS data through the TIPG implementation. |
| 122 | +
|
| 123 | +### Multidimensional Services (Optional) |
| 124 | +
|
| 125 | +Provides services for multidimensional data (time series, etc.). |
| 126 | +
|
| 127 | +## Persistence |
| 128 | +
|
| 129 | +The chart uses PostgreSQL for data persistence. Make sure to configure appropriate storage for production use. |
| 130 | +
|
| 131 | +## Upgrading |
| 132 | +
|
| 133 | +When upgrading the chart, consider any changes to values.yaml and migrations that might need to be applied. |
| 134 | +
|
| 135 | +## Uninstallation |
| 136 | +
|
| 137 | +```bash |
| 138 | +helm delete eoapi |
| 139 | +``` |
| 140 | + |
| 141 | +Note that PVs may need to be manually deleted if you want to remove all data. |
0 commit comments