Services
Define containerized services deployed with interceptor sidecars for traffic capture.
Required fields
| Field | Type | Description |
|---|---|---|
type | "SERVICE" | Item type |
name | string | Unique name (1-63 chars, lowercase alphanumeric + hyphens, must start/end with alphanumeric). Used as DNS hostname. |
port | integer | Port the service listens on (1-65535) |
healthCheck | string | HTTP path for health checks (e.g., /health) |
Optional fields
| Field | Type | Default | Description |
|---|---|---|---|
description | string | — | Human-readable description (max 500 chars) |
image | string | — | Docker image URI (e.g., my-service:latest) |
uiPath | string | — | URL path to service's UI (e.g., /) — enables "Open UI" button |
debugPort | integer | — | Remote debugging port (e.g., 9229 for Node.js --inspect) |
env | array | — | Environment variables (see below) |
minCpu | number | — | Minimum CPU cores (e.g., 0.25) |
minMemory | number | — | Minimum memory in MB |
maxCpu | number | — | Maximum CPU cores |
maxMemory | number | — | Maximum memory in MB |
Environment variables
Environment variables use an array of objects with name and value fields — not a flat key-value object:
"env": [
{ "name": "DATABASE_URL", "value": "postgresql://dokkimi:dokkimi@postgres-db:5432/dokkimi" },
{ "name": "REDIS_URL", "value": "redis://:dokkimi@redis-cache:6379" },
{ "name": "NODE_ENV", "value": "test" }
] Full example
{
"type": "SERVICE",
"name": "api-gateway",
"image": "api-gateway:latest",
"port": 3000,
"healthCheck": "/health",
"uiPath": "/",
"debugPort": 9229,
"env": [
{ "name": "DATABASE_URL", "value": "postgresql://dokkimi:dokkimi@postgres-db:5432/dokkimi" },
{ "name": "REDIS_URL", "value": "redis://:dokkimi@redis-cache:6379" },
{ "name": "USER_SERVICE_URL", "value": "http://user-service:3000" },
{ "name": "NODE_ENV", "value": "test" }
],
"minCpu": 0.25,
"minMemory": 256,
"maxCpu": 1,
"maxMemory": 1024
} DNS and inter-service communication
Service names are DNS hostnames within the namespace. Use the name of another item as the hostname when one service connects to another. For example, if you have a database item named postgres-db, your service connects to it at postgres-db:5432.
Naming rules
Item names must be lowercase, alphanumeric with hyphens, start and end with an alphanumeric character, and be 1-63 characters long. They're used as Kubernetes DNS names.
Pattern: ^[a-z0-9][a-z0-9-]*[a-z0-9]$
- Good:
my-service,api-gateway,user-svc - Bad:
MyService,my_service,-start-with-dash