Skip to content

Resource Catalogue Deployment Guide⚓︎

The Resource Catalogue is a standards-based Earth Observation (EO) metadata catalogue that supports OGC CSW, OGC API - Records, STAC, and OpenSearch. It leverages pycsw, an open-source OGC-compliant metadata catalog server, to manage and serve EO data. This guide provides step-by-step instructions to deploy the Resource Catalogue within your Kubernetes cluster.

Table of Contents⚓︎

  1. Introduction
  2. Prerequisites
  3. Deployment Steps
  4. Validation and Operation
  5. Uninstallation

Introduction⚓︎

The Resource Catalogue is a key component of the EOEPCA+ecosystem, enabling 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.
  • Standards Compliance: Supports OGC CSW, OGC API - Records, STAC, and OpenSearch.
  • Discoverability: Advanced search capabilities to locate EO data.
  • Scalability: Built on pycsw for flexible and scalable deployments.
  • Security: Integrates with Keycloak for authentication and authorization, and Gatekeeper for resource protection.

Interfaces⚓︎

The Resource Catalogue provides the following interfaces:

  • OGC CSW 2.0.2 (OGC Reference Implementation)
  • OGC CSW 3.0.0 (OGC Reference Implementation)
  • OGC API - Records - Part 1: Core (Early Implementation)
  • STAC API 1.0.0 (Listed in STAC API Servers)
  • OpenSearch with OGC EO, Geo, and Time extensions

Prerequisites⚓︎

Before deploying the Resource Catalogue, ensure you have the following:

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:

git clone -b 2.0-beta https://github.com/EOEPCA/deployment-guide
cd deployment-guide/scripts/resource-catalogue

Validate your environment:

Run the validation script to ensure all prerequisites are met:

bash check-prerequisites.sh

Deployment Steps⚓︎

  1. Run the Configuration Script
bash configure-resource-catalogue.sh

Configuration Parameters

During the script execution, you will be prompted to provide:

  • INGRESS_HOST: Base domain for ingress hosts.
    • Example: example.com
  • CLUSTER_ISSUER: Cert-manager Cluster Issuer for TLS certificates.
    • Example: letsencrypt-prod
  • STORAGE_CLASS: Storage class for persistent volumes.
    • Example: managed-nfs-storage-retain

Important Notes:

  • If you choose not to use cert-manager, you will need to create the TLS secrets manually before deploying.
  • The required TLS secret names are:
    • resource-catalogue-tls
  • For instructions on creating TLS secrets manually, please refer to the Manual TLS Certificate Management section in the TLS Certificate Management Guide.
  1. Deploy the Resource Catalogue Using Helm
helm install resource-catalogue rm-resource-catalogue \
  --values generated-values.yaml \
  --version 1.4.0 \
  --repo https://eoepca.github.io/helm-charts \
  --namespace resource-catalogue \
  --create-namespace

Validation and Operation⚓︎

Automated Validation:

bash validation.sh

Further Validation:

  1. Check Kubernetes Resources:
kubectl get all -n resource-catalogue
  1. Access the Resource Catalogue:

Open a web browser and navigate to: https://resource-catalogue.<your-domain>/

  1. Test API Endpoints:

You can test the API using curl:

curl -X GET 'https://resource-catalogue.<your-domain>/collections' \
-H 'Accept: application/json'

Uninstallation⚓︎

To uninstall the Resource Catalogue and clean up associated resources:

helm uninstall resource-catalogue

Additional Cleanup:

  • Delete any Persistent Volume Claims (PVCs) if used:
kubectl delete pvc -n resource-catalogue db-data-resource-catalogue-db-0

Further Reading⚓︎