Skip to content

Commit 8d3f24f

Browse files
Update README and Chart.yaml for improved installation instructions and add logo
1 parent 22b97c5 commit 8d3f24f

File tree

4 files changed

+156
-124
lines changed

4 files changed

+156
-124
lines changed

README.md

Lines changed: 74 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,47 +17,98 @@
1717

1818
## What is eoAPI?
1919

20-
[https://eoapi.dev/](https://eoapi.dev/)
20+
[eoAPI](https://eoapi.dev/) is a collection of REST APIs for Earth Observation data access and analysis. This repository provides a production-ready Kubernetes deployment solution with flexible database options, unified ingress configuration, and built-in monitoring.
2121

22-
## Getting Started
22+
## Quick Start
2323

24-
Make sure you have [helm](https://helm.sh/docs/intro/install/) installed on your machine.
25-
Additionally, you will need a cluster to deploy the eoAPI helm chart. This can be on a cloud provider, like AWS, GCP, or any other that supports Kubernetes. You can also run a local cluster using minikube.
24+
### Prerequisites
2625

27-
### Local
26+
- [helm](https://helm.sh/docs/intro/install/)
27+
- A Kubernetes cluster (local or cloud-based)
28+
- `kubectl` configured for your cluster
2829

29-
For a local installation you can use a preinstalled [Minikube](https://minikube.sigs.k8s.io/), and simply execute the following command:
30+
### Option 1: One-Command Installation
3031

32+
The fastest way to get started is using our Makefile commands:
33+
34+
For local development with Minikube:
3135
```bash
32-
$ make minikube
36+
make minikube
3337
```
3438

35-
Once the deployment is done, the url to access eoAPI will be printed to your terminal.
39+
For cloud deployment:
40+
```bash
41+
make deploy
42+
```
3643

37-
### Cloud
44+
This will automatically:
45+
1. Install the PostgreSQL operator
46+
2. Add the eoAPI helm repository
47+
3. Install the eoAPI helm chart
48+
4. Set up necessary namespaces and configurations
3849

39-
If you don't have a k8s cluster set up on AWS or GCP then follow an IaC guide below that is relevant to you
50+
### Option 2: Step-by-Step Installation
4051

41-
> ⓘ The helm chart in this repo assumes your cluster has a few third-party add-ons and controllers installed. So
42-
> it's in your best interest to read through the IaC guides to understand what those defaults are
52+
If you prefer more control over the installation process:
4353

44-
* [AWS EKS Cluster Setup](./docs/aws-eks.md)
45-
* [GCP GKE Cluster Setup](./docs/gcp-gke.md)
54+
1. Install the PostgreSQL operator:
55+
```bash
56+
helm upgrade --install \
57+
--set disable_check_for_upgrades=true pgo \
58+
oci://registry.developers.crunchydata.com/crunchydata/pgo \
59+
--version 5.7.4
60+
```
61+
62+
2. Add the eoAPI helm repository:
63+
```bash
64+
helm repo add eoapi https://devseed.com/eoapi-k8s/
65+
```
66+
67+
3. Get your current git SHA:
68+
```bash
69+
export GITSHA=$(git rev-parse HEAD | cut -c1-10)
70+
```
71+
72+
4. Install eoAPI:
73+
```bash
74+
helm upgrade --install \
75+
--namespace eoapi \
76+
--create-namespace \
77+
--set gitSha=$GITSHA \
78+
eoapi devseed/eoapi
79+
```
80+
81+
### Post-Installation
4682

47-
Make sure you have your `kubectl` configured to point to the cluster you want to deploy eoAPI to. Then simply execute the following command:
83+
1. Enable ingress (for Minikube):
84+
```bash
85+
minikube addons enable ingress
86+
```
4887

88+
2. Optional: Load sample data:
4989
```bash
50-
$ make deploy
90+
make ingest
5191
```
5292

53-
### Manual step-by-step installation
93+
## Cloud Provider Setup
94+
95+
For cloud-based deployments, refer to our detailed setup guides:
96+
* [AWS EKS Cluster Setup](./docs/aws-eks.md)
97+
* [GCP GKE Cluster Setup](./docs/gcp-gke.md)
98+
* [Azure Setup](./docs/azure.md)
99+
100+
## Documentation
101+
102+
* [Configuration Guide](./docs/configuration.md)
103+
* [Data Management](./docs/manage-data.md)
104+
* [Autoscaling and Monitoring](./docs/autoscaling.md)
105+
* [Health Checks](./docs/health.md)
106+
* [Unified Ingress Configuration](./docs/unified-ingress.md)
54107

55-
Instead of using the `make` commands above you can also [manually `helm install` eoAPI](./docs/helm-install.md).
108+
## Contributing
56109

110+
We welcome contributions! See our [contributing guide](./CONTRIBUTING.md) for details.
57111

58-
## More information
112+
## License
59113

60-
* Read about [Default Configuration](./docs/configuration.md#default-configuration) and
61-
other [Configuration Options](./docs/configuration.md#additional-options)
62-
* [Manage your data](./docs/manage-data.md) in eoAPI
63-
* Learn about [Autoscaling / Monitoring / Observability](./docs/autoscaling.md)
114+
This project is licensed under the [MIT License](./LICENSE).

helm-chart/eoapi/Chart.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ type: application
1313
kubeVersion: ">=1.23.0-0"
1414

1515
# Artifacthub metadata
16+
icon: logo.png
1617
annotations:
1718
artifacthub.io/changes: |
1819
- Adds integration with Artifacthub.io

helm-chart/eoapi/README.md

Lines changed: 81 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -1,141 +1,121 @@
1-
# EOAPI Helm Chart
1+
# eoAPI Helm Chart
22

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+
![Version: 0.7.0](https://img.shields.io/badge/Version-0.7.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 5.0.2](https://img.shields.io/badge/AppVersion-5.0.2-informational?style=flat-square)
44

5-
## Overview
5+
A Helm chart for deploying Earth Observation APIs with integrated STAC, raster, vector, and multidimensional services.
66

7-
The chart sets up:
7+
## Features
88

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
1416

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
2318

2419
```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
2727

28-
# Then install eoapi
29-
helm install eoapi ./eoapi
28+
# Install eoAPI
29+
helm install eoapi eoapi/eoapi
3030
```
3131

32-
## Configuration
32+
## Prerequisites
3333

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
3538

36-
Key configuration sections:
39+
## Quick Start Configuration
3740

3841
```yaml
39-
# Services to enable
42+
# Enable desired services
4043
apiServices:
4144
- raster
4245
- stac
4346
- vector
44-
# - multidim (disabled by default)
47+
- stac-browser
48+
# - multidim # Optional
4549

46-
# Ingress configuration
50+
# Configure ingress
4751
ingress:
4852
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
7655

77-
### PgSTAC Directory Structure
56+
# Database options
57+
postgresql:
58+
type: "postgrescluster" # or "external-plaintext" or "external-secret"
7859

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
9461
pgstacBootstrap:
9562
enabled: true
9663
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
10765
```
10866
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
11668
117-
Provides dynamic tiling for raster data through the TiTiler implementation.
69+
### Key Parameters
11870
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` |
12078

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.
12280

123-
### Multidimensional Services (Optional)
81+
### Database Options
12482

125-
Provides services for multidimensional data (time series, etc.).
83+
1. Integrated PostgreSQL Operator:
84+
```yaml
85+
postgresql:
86+
type: "postgrescluster"
87+
```
12688

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+
```
128101

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+
```
130110

131-
## Upgrading
111+
## Documentation
132112

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:
134114

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)
136118

137-
```bash
138-
helm delete eoapi
139-
```
119+
## License
140120

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)

helm-chart/eoapi/logo.png

8.87 KB
Loading

0 commit comments

Comments
 (0)