Resource Discovery Deployment Guide⚓︎
The Resource Discovery building block provides a standards-based Earth Observation (EO) metadata catalogue, supporting OGC CSW, OGC API Records, STAC, and OpenSearch. It combines and extends the functionality previously known as the “Resource Catalogue,” but has now evolved to handle additional resource types and deeper integration with data-catalogue components like eoAPI. Under the hood it still leverages pycsw for OGC compliance and can also integrate with pgSTAC (via eoAPI) for large-scale STAC metadata handling. This guide provides step-by-step instructions to deploy Resource Discovery in your Kubernetes cluster.
Introduction⚓︎
The Resource Discovery building block is a key component of the EOEPCA+ ecosystem. It enables users to aggregate, manage, and retrieve EO metadata from multiple sources. By adhering to open standards, it ensures discoverability and interoperability, facilitating integration with existing systems and enhancing scalability.
Key Features⚓︎
- Metadata Management: Aggregate and retrieve EO metadata efficiently across multiple resource types.
- Standards Compliance: Supports OGC CSW, OGC API Records, STAC, and OpenSearch.
- Discoverability: Advanced search capabilities—supporting bounding boxes, time intervals, free-text, and more.
- Scalability: Built on pycsw and optionally on pgSTAC, enabling flexible, scalable deployments.
- Federation: Supports platform federation by maintaining references to remote platforms.
- Transactional Support: Endpoints for creating, updating, and deleting resources where permitted.
Interfaces⚓︎
The Resource Discovery building block includes:
- OGC CSW (2.0.2 and 3.0)
- OGC API - Records (Part 1: Core)
- STAC API 1.0.0
- OpenSearch with OGC EO, Geo, and Time extensions
- Optional Dataset Catalogue via eoAPI for STAC-based ingestion of granule-level data
Prerequisites⚓︎
Component | Requirement | Documentation Link |
---|---|---|
Kubernetes | Cluster (tested on v1.28) | Installation Guide |
Helm | Version 3.5 or newer | Installation Guide |
kubectl | Configured for cluster access | Installation Guide |
Ingress | Properly installed | Installation Guide |
Cert Manager | Properly installed | Installation Guide |
Clone the Deployment Guide Repository:
Validate your environment:
Deployment Steps⚓︎
- Run the Configuration Script
Configuration Parameters
During the script execution, you will be prompted to provide:
INGRESS_HOST
: Base domain for ingress hosts.- Example:
example.com
- Example:
CLUSTER_ISSUER
: Cert-manager Cluster Issuer for TLS certificates.- Example:
letsencrypt-http01-apisix
- Example:
STORAGE_CLASS
: Storage class for persistent volumes.- Example:
standard
- Example:
- Deploy Resource Discovery Using Helm
helm repo add eoepca-dev https://eoepca.github.io/helm-charts-dev
helm repo update eoepca-dev
helm upgrade -i resource-discovery eoepca-dev/rm-resource-catalogue \
--values generated-values.yaml \
--version 2.0.0-beta2 \
--namespace resource-discovery \
--create-namespace
Deploy the ingress for the Resource Discovery service:
Validation and Operation⚓︎
1. Automated Validation (Optional Script)⚓︎
2. Manual Validation via Web Browser⚓︎
Most Resource Discovery endpoints can be accessed directly in a browser:
- Landing/Home Page
- Swagger UI (OpenAPI)
- OGC API - Records / STAC Collections
- Conformance
If these return meaningful responses (especially HTTP 200 with JSON or HTML data), it indicates that your Resource Discovery instance is operational.
3. Manual Validation via cURL / Command Line⚓︎
Using the command line can be a quick way to check endpoints and see raw responses. Below are some example commands.
3.1. Basic Liveness Check⚓︎
3.2. Testing OGC CSW⚓︎
curl "https://resource-catalogue.${INGRESS_HOST}/csw?service=CSW&version=2.0.2&request=GetCapabilities"
- A successful response should be an XML Capabilities document containing service metadata.
3.3. Testing STAC API⚓︎
- You should see a JSON object containing STAC-related metadata, including a list of links to collections and search endpoints.
3.4. Searching STAC Items⚓︎
source ~/.eoepca/state
curl -X POST "https://resource-catalogue.${INGRESS_HOST}/stac/search" \
--silent --show-error \
-H "Content-Type: application/json" \
-d '{
"bbox": [-180, -90, 180, 90],
"datetime": "2010-01-01T00:00:00Z/2025-12-31T23:59:59Z",
"limit": 5
}'
You should receive a JSON response listing zero or more STAC items that match the query. If you have not yet ingested any items, you may get an empty result array ("features": []
).
4. Ingesting Sample Records⚓︎
Find the Resource Catalogue Pod:
Look for a pod name similar to resource-catalogue-service-abcd1234-efgh5678
.
Copy the Sample File (sample_record.xml
) to the pod.
The sample record is provided in the
scripts/resource-discovery
directory of the deployment guide repository.
kubectl cp sample_record.xml \
resource-discovery/<YOUR-RESOURCE-CATALOGUE-POD>:/tmp/sample_record.xml
- Access the Pod:
- Load the Sample Record using pycsw
From within the container, run:
- Verify the Ingested Record
-
Via Web Browser / UI
Navigate to:Confirm that the newly ingested record (titled
EOEPCA Sample Record
) appears in the search results. -
Via Command Line
You can also usecurl
or other OGC-compliant requests to verify that the sample record is now discoverable.
Validating Kubernetes Resources⚓︎
Ensure all Kubernetes resources are running correctly:
- All pods should be in
Running
state. - No pods should be stuck in
CrashLoopBackOff
orError
.
Further Reading & Official Docs⚓︎
- EOEPCA Resource Discovery Documentation
- pycsw Official Documentation
- pycsw GitHub Repository
- eoAPI-k8s Documentation (if using eoAPI for dataset-level STAC ingestion)