Skip to main content

Application Configuration

Application configuration defines a single application's deployment topology. It lives in .greyhound/config.yaml at the root of your repository and tells greyhound what to build, run, expose, and provision for your app.

Configuration File

A greyhound config declares the application name and its component sections:

name: my-app

builds:
- name: api-build
context: .

services:
- name: api
image_from_build: api-build
ports:
- containerPort: 3000

jobs:
- name: migrate
image_from_build: api-build
command: ['node', 'migrate.js']

rules:
- host: api.example.com
service: api
port: 3000

configmaps:
- name: app-config
data:
APP_NAME: my-app

secrets:
- name: api-secrets
type: Opaque

Components

Each section of the config maps to a Kubernetes resource or set of resources that greyhound manages on your behalf:

ComponentPurposeDocs
ServicesLong-running workloads (API servers, workers, frontends)Kubernetes Deployments
JobsRun-to-completion tasks (migrations, seed scripts)Kubernetes Jobs
BuildsContainer image builds from sourceDepot builds
RulesIngress routing (host/path to service)Kubernetes Ingresses
ConfigMapsNon-sensitive key/value configurationKubernetes ConfigMaps
SecretsSensitive values and secret providersKubernetes Secrets + CSI
InfrastructureCloud resources (Aurora databases, IAM roles)AWS/EKS resources
Shared VolumesReusable storage across services and jobsPersistentVolumeClaims

Component Relationships

Components reference each other by name. greyhound validates these references at parse time:

For example, a service's image_from_build field must match the name of a defined build, and a rule's service field must match the name of a defined service.

Schema Reference

See the App schema for the full configuration reference.