Skip to content

Quick Start Guide

This guide will help you get the GA4GH ServiceInfo service up and running in your Kubernetes cluster or local environment in under 5 minutes.


1. Local Quick Start

If you want to run the service locally (outside Kubernetes) using Docker:

Step A: Create a ServiceInfo YAML File

Create a file named service_info.yaml with the metadata details for your genomics service:

id: "org.example.drs"
name: "Example DRS Service"
type:
  group: "org.ga4gh"
  artifact: "drs"
  version: "1.4.0"
organization:
  name: "My Genome Center"
  url: "https://example.org"
version: "1.0.0"
environment: "dev"
description: "A quickstart DRS instance metadata helper"

Step B: Run the Pre-built Docker Container

Run the container and mount your service_info.yaml config file. We configure the SERVICE_CONFIG_PATH environment variable pointing to the mounted file path inside the container:

docker run -d \
  -p 8080:8080 \
  -v $(pwd)/service_info.yaml:/etc/service-info/service_info.yaml \
  -e SERVICE_CONFIG_PATH=/etc/service-info/service_info.yaml \
  ghcr.io/gkbishnoi07/ga4gh_service_info_sidecar_gsoc_2026:latest

Step C: Query the Metadata

Run curl to inspect the response:

curl http://localhost:8080/service-info

Expected JSON response:

{
  "id": "org.example.drs",
  "name": "Example DRS Service",
  "type": {
    "group": "org.ga4gh",
    "artifact": "drs",
    "version": "1.4.0"
  },
  "organization": {
    "name": "My Genome Center",
    "url": "https://example.org"
  },
  "version": "1.0.0",
  "description": "A quickstart DRS instance metadata helper",
  "environment": "dev"
}


2. Kubernetes Deployment (Helm)

The recommended way to deploy the service in production is using our Helm Chart.

Step A: Install the Helm Chart

Add the service to your cluster with customized metadata values:

helm install my-serviceinfo ./deploy/helm/ga4gh-service-info \
  --set serviceInfo.id="org.myinstitute.wes" \
  --set serviceInfo.name="Institute WES Service" \
  --set serviceInfo.type.artifact="wes" \
  --set serviceInfo.organization.name="My Institute" \
  --set serviceInfo.organization.url="https://myinstitute.org"

Step B: Wire Up Ingress (Routing)

To route /service-info requests to this microservice while leaving other genomics API paths untouched, add this rule to your genomics service Ingress resource:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-wes-ingress
spec:
  rules:
    - host: wes.myinstitute.org
      http:
        paths:
          # Route ServiceInfo metadata path to our standalone service
          - path: /service-info
            pathType: Exact
            backend:
              service:
                name: my-serviceinfo-ga4gh-service-info
                port:
                  number: 8080

          # All other genomics requests route to your main WES engine
          - path: /ga4gh/wes/v1/
            pathType: Prefix
            backend:
              service:
                name: my-wes-backend-service
                port:
                  number: 5000

That's it! /service-info requests will be handled cleanly by the lightweight sidecar, and the configuration can be modified later via ConfigMaps with zero restarts.