|
1 | | -# EOAPI Helm Chart |
| 1 | +# eoAPI Helm Chart |
2 | 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. |
| 3 | +   |
4 | 4 |
|
5 | | -## Overview |
| 5 | +A Helm chart for deploying Earth Observation APIs with integrated STAC, raster, vector, and multidimensional services. |
6 | 6 |
|
7 | | -The chart sets up: |
| 7 | +## Features |
8 | 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 |
| 9 | +- STAC API for metadata discovery and search |
| 10 | +- Raster tile services (TiTiler) |
| 11 | +- Vector tile services (TIPG) |
| 12 | +- Multidimensional data support |
| 13 | +- Built-in STAC Browser interface |
| 14 | +- Flexible database configuration |
| 15 | +- Unified ingress system |
14 | 16 |
|
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 |
| 17 | +## TL;DR |
23 | 18 |
|
24 | 19 | ```bash |
25 | | -# Install Postgres Operator first |
26 | | -helm install --set disable_check_for_upgrades=true pgo oci://registry.developers.crunchydata.com/crunchydata/pgo |
| 20 | +# Add the eoAPI repository |
| 21 | +helm repo add eoapi https://devseed.com/eoapi-k8s/ |
| 22 | + |
| 23 | +# Install the PostgreSQL operator (required) |
| 24 | +helm install --set disable_check_for_upgrades=true pgo \ |
| 25 | + oci://registry.developers.crunchydata.com/crunchydata/pgo \ |
| 26 | + --version 5.7.4 |
27 | 27 |
|
28 | | -# Then install eoapi |
29 | | -helm install eoapi ./eoapi |
| 28 | +# Install eoAPI |
| 29 | +helm install eoapi eoapi/eoapi |
30 | 30 | ``` |
31 | 31 |
|
32 | | -## Configuration |
| 32 | +## Prerequisites |
33 | 33 |
|
34 | | -The chart can be configured via `values.yaml`. See the chart's `values.yaml` file for all available options and detailed descriptions. |
| 34 | +- Kubernetes 1.23+ |
| 35 | +- Helm 3.0+ |
| 36 | +- PV provisioner support |
| 37 | +- PostgreSQL operator |
35 | 38 |
|
36 | | -Key configuration sections: |
| 39 | +## Quick Start Configuration |
37 | 40 |
|
38 | 41 | ```yaml |
39 | | -# Services to enable |
| 42 | +# Enable desired services |
40 | 43 | apiServices: |
41 | 44 | - raster |
42 | 45 | - stac |
43 | 46 | - vector |
44 | | - # - multidim (disabled by default) |
| 47 | + - stac-browser |
| 48 | + # - multidim # Optional |
45 | 49 |
|
46 | | -# Ingress configuration |
| 50 | +# Configure ingress |
47 | 51 | ingress: |
48 | 52 | 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 |
| 53 | + className: "nginx" # or "traefik" |
| 54 | + host: "your-domain.com" # Optional |
76 | 55 |
|
77 | | -### PgSTAC Directory Structure |
| 56 | +# Database options |
| 57 | +postgresql: |
| 58 | + type: "postgrescluster" # or "external-plaintext" or "external-secret" |
78 | 59 |
|
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 |
| 60 | +# Load sample data |
94 | 61 | pgstacBootstrap: |
95 | 62 | enabled: true |
96 | 63 | 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" |
| 64 | + loadSamples: true |
107 | 65 | ``` |
108 | 66 |
|
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) |
| 67 | +## Configuration Options |
116 | 68 |
|
117 | | -Provides dynamic tiling for raster data through the TiTiler implementation. |
| 69 | +### Key Parameters |
118 | 70 |
|
119 | | -### Vector Services (TIPG) |
| 71 | +| Parameter | Description | Default | |
| 72 | +|-----------|-------------|---------| |
| 73 | +| `postgresql.type` | Database deployment type | `postgrescluster` | |
| 74 | +| `ingress.enabled` | Enable ingress | `true` | |
| 75 | +| `ingress.className` | Ingress controller class | `nginx` | |
| 76 | +| `browser.enabled` | Enable STAC Browser interface | `true` | |
| 77 | +| `pgstacBootstrap.enabled` | Enable database initialization | `true` | |
120 | 78 |
|
121 | | -Provides vector tile services for PostGIS data through the TIPG implementation. |
| 79 | +Refer to the [values.schema.json](./values.schema.json) for the complete list of configurable parameters. |
122 | 80 |
|
123 | | -### Multidimensional Services (Optional) |
| 81 | +### Database Options |
124 | 82 |
|
125 | | -Provides services for multidimensional data (time series, etc.). |
| 83 | +1. Integrated PostgreSQL Operator: |
| 84 | +```yaml |
| 85 | +postgresql: |
| 86 | + type: "postgrescluster" |
| 87 | +``` |
126 | 88 |
|
127 | | -## Persistence |
| 89 | +2. External Database: |
| 90 | +```yaml |
| 91 | +postgresql: |
| 92 | + type: "external-plaintext" |
| 93 | + external: |
| 94 | + host: "your-db-host" |
| 95 | + port: "5432" |
| 96 | + database: "eoapi" |
| 97 | + credentials: |
| 98 | + username: "your-user" |
| 99 | + password: "your-password" |
| 100 | +``` |
128 | 101 |
|
129 | | -The chart uses PostgreSQL for data persistence. Make sure to configure appropriate storage for production use. |
| 102 | +3. External Database with Secrets: |
| 103 | +```yaml |
| 104 | +postgresql: |
| 105 | + type: "external-secret" |
| 106 | + external: |
| 107 | + existingSecret: |
| 108 | + name: "your-secret" |
| 109 | +``` |
130 | 110 |
|
131 | | -## Upgrading |
| 111 | +## Documentation |
132 | 112 |
|
133 | | -When upgrading the chart, consider any changes to values.yaml and migrations that might need to be applied. |
| 113 | +For detailed configuration and usage: |
134 | 114 |
|
135 | | -## Uninstallation |
| 115 | +- [Configuration Guide](https://github.com/developmentseed/eoapi-k8s/blob/main/docs/configuration.md) |
| 116 | +- [Data Management](https://github.com/developmentseed/eoapi-k8s/blob/main/docs/manage-data.md) |
| 117 | +- [Autoscaling Guide](https://github.com/developmentseed/eoapi-k8s/blob/main/docs/autoscaling.md) |
136 | 118 |
|
137 | | -```bash |
138 | | -helm delete eoapi |
139 | | -``` |
| 119 | +## License |
140 | 120 |
|
141 | | -Note that PVs may need to be manually deleted if you want to remove all data. |
| 121 | +[MIT License](https://github.com/developmentseed/eoapi-k8s/blob/main/LICENSE) |
0 commit comments