Skip to content

Software

The OSDU™ private instance design utilizes a stamp-based pattern for software deployment, complementing the infrastructure design. This approach enables adheres to the principles of independent deployment of stamps with varying software configurations.

Key Concepts

  • Stamp: A complete, independent softwaredeployment of the OSDU platform
  • Components: Middleware layers providing essential services to support OSDU Services
  • Applications: OSDU platform services organized into logical groups of capabilities

Software Layout

In our software architecture design, we define three primary software Kustomizations that describe the stamp. A Kustomization is a Flux resource representing a set of defined manifests that Flux should reconcile to the cluster, with dependencies between them.

flowchart TD
  FluxSystemComponents("flux-system-components")
  FluxSystemApplications("flux-system-applications")
  FluxSystemExperimental("flux-system-experimental")
  FluxSystemComponents-->FluxSystemApplications
  FluxSystemApplications-->FluxSystemExperimental
├── applications
   └── kustomize.yaml
├── components
   └── kustomize.yaml
└── experimental
    └── kustomize.yaml

Components Structure

The Components directory is organized to facilitate the management of various middleware layers essential for our infrastructure. Components have dependency structures in the sequence of configuration, and a naming pattern is used to help facilitate understanding.

flowchart TD
  FluxSystemComponents("flux-system-components")
  Certs("component-certs")
  CertsCA("component-certs-ca")
  CertsCAIssuer("component-certs-ca-issuer")
  OSDUSystem("component-osdu-system")
  Cache("component-cache")
  Database("component-database")
  Postgresql("component-postgresql")
  Airflow("component-airflow")
  Elastic("component-elastic")
  ElasticStorage("component-elastic-storage")
  ElasticSearch("component-elastic-search")
  Mesh("component-mesh")
  MeshIngress("component-mesh-ingress")
  Observability("component-observability")

  FluxSystemComponents-->Certs
  Certs-->CertsCA
  CertsCA-->CertsCAIssuer
  CertsCAIssuer-->OSDUSystem
  OSDUSystem-->Cache
  OSDUSystem-->Mesh
  Mesh-->MeshIngress
  MeshIngress-->Observability
  OSDUSystem-->Elastic
  Elastic-->ElasticStorage
  ElasticStorage-->ElasticSearch
  OSDUSystem-->Database
  Database-->Postgresql
  Postgresql-->Airflow
── components
    ├── airflow
       ├── namespace.yaml
       ├── pvc.yaml
       ├── release.yaml
       ├── source.yaml
       └── vault-secrets.yaml
    ├── certs
       ├── namespace.yaml
       ├── release.yaml
       └── source.yaml
    ├── certs-ca
       └── certificate.yaml
    ├── certs-ca-issuer
       └── issuer.yaml
    ├── database
       ├── namespace.yaml
       ├── postgresql.yaml
       └── vault-secrets.yaml
    ├── elastic-search
       ├── elastic-job.yaml
       ├── elastic-search.yaml
       ├── kibana.yaml
       ├── namespace.yaml
       └── vault-secrets.yaml
    ├── elastic-storage
       └── storage-class.yaml
    ├── mesh-ingress
       └── gateway.yaml
    ├── observability
       ├── grafana.yaml
       ├── jaeger.yaml
       ├── kiali.yaml
       ├── loki.yaml
       ├── prometheus.yaml
       └── subnet_monitoring.yaml
    └── osdu-system
        ├── airflow.yaml
        ├── cache.yaml
        ├── database.yaml
        ├── elastic.yaml
        ├── mesh.yaml
        ├── namespace.yaml
        └── reloader.yaml

Applications Structure

The Applications directory is organized to facilitate the management of applications that are installed in the platform.

flowchart TD
  FluxSystemApplications("flux-system-applications")
  Podinfo("application-podinfo")
  OSDUCore("application-osdu-core")
  OSDUReference("application-osdu-reference")
  OSDUAuth("application-osdu-auth")

  FluxSystemApplications-->Podinfo
  FluxSystemApplications-->OSDUCore
  FluxSystemApplications-->OSDUReference
  FluxSystemApplications-->OSDUAuth
── applications
   ├── osdu-auth
      ├── namespace.yaml
      └── release.yaml
   ├── osdu-core
      ├── README.md
      ├── base.yaml
      ├── entitlements.yaml
      ├── file.yaml
      ├── indexer.yaml
      ├── legal.yaml
      ├── namespace.yaml
      ├── partition.yaml
      ├── schema.yaml
      ├── search.yaml
      ├── storage.yaml
      └── user-init.yaml
   ├── osdu-reference
      ├── base.yaml
      ├── crs-catalog.yaml
      ├── crs-conversion.yaml
      ├── namespace.yaml
      └── unit.yaml
   └── podinfo
       ├── ingress.yaml
       ├── namespace.yaml
       ├── release.yaml
       └── source.yaml

OSDU Core Structure

The OSDU Core application is organized to facilitate the management of the OSDU core platform services. Below is the layout:

flowchart TD
  base("base")
  partition("partition")
  partition_init("partition-init")
  entitlements("entitlements")
  entitlements_init("entitlements-init")
  legal("legal")
  indexer("indexer")
  indexer_queue("indexer-queue")
  user_init("user-init")
  schema("schema")
  schema_init("schema-init")
  storage("storage")
  file("file")
  search("search")
  workflow("workflow")

  base-->partition
  partition-->entitlements
  partition-->partition_init
  entitlements-->entitlements_init
  entitlements_init-->user_init
  partition-->legal
  legal-->indexer
  legal-->indexer_queue
  legal-->schema
  legal-->workflow
  schema-->schema_init
  indexer_queue-->storage
  indexer_queue-->file
  indexer_queue-->search
── osdu-core
   ├── base.yaml
   ├── entitlements.yaml
   ├── file.yaml
   ├── indexer.yaml
   ├── legal.yaml
   ├── namespace.yaml
   ├── partition.yaml
   ├── schema.yaml
   ├── search.yaml
   ├── storage.yaml
   └── user-init.yaml
   └── workflow.yaml

OSDU Reference Structure

The OSDU Reference application is organized to facilitate the management of the OSDU reference platform services. Below is the layout:

flowchart TD
  base("base")
  unit("unit")
  crs-catalog("crs-catalog")
  crs-conversion("crs-conversion")

  base-->unit
  base-->crs-catalog
  base-->crs-conversion
── osdu-reference
   ├── base.yaml
   ├── crs-catalog.yaml
   ├── crs-conversion.yaml
   ├── namespace.yaml
   └── unit.yaml

Experimental Features

The Experimental directory is organized to facilitate the management of experimental features.

  flowchart TD
    FluxSystemExperimental("flux-system-experimental")
    ExperimentalBase("experimental-base")
    AdminUI("experimental-admin-ui")

    FluxSystemExperimental-->ExperimentalBase
    ExperimentalBase-->AdminUI
── experimental
   ├── admin-ui
      ├── README.md
      ├── ingress.yaml
      └── release.yaml
   └── experimental-base
       ├── namespace.yaml
       ├── osdu-base.yaml
       └── vault-secrets.yaml