Two Approaches
Skyhook supports two deployment repository strategies:In Code Repository
All-in-one approachDeployment files live alongside your application code in each service’s repository.
Centralized Deployment Repository
Separation of concernsAll deployment files for all services live in a single, shared deployment repository.
Option A: Deployment Files in Code Repository
Your service/job repository contains both application code and deployment configuration. Each service has its own repository with everything included.Directory Structure
When to Use
✅ Best for:- Small teams or individual developers
- Single-service repositories
- Simpler mental model (everything in one place)
- Faster iteration (single PR for code + config changes)
- Services where deployment changes are closely tied to code changes
- Simplicity - One repository to manage
- Atomic changes - Code and deployment updated together
- Single PR review - Reviewers see code + config in same PR
- Easier rollback - Git revert affects both code and config
- Repository access control is all-or-nothing
- Deployment config changes require code repo access
- Multiple services need multiple repos (or monorepo)
Configuration in .koala.toml
Example: Deploy files in code repositoryHow It Works
- During creation, Skyhook adds
deploy/directory to your code repository - CI/CD workflows run from the same repository
- GitOps tool (like ArgoCD) can watch the
deploy/directory in your code repo (optional) - Changes to either code or config trigger appropriate workflows
Option B: Centralized Deployment Repository
All services store their deployment configuration in a single, shared repository separate from application code.Directory Structure
Code repositories (one per service):deployments - shared by all services):
When to Use
✅ Best for:- Organizations with separate dev and platform teams
- Platform engineering teams managing multiple services
- Stricter access control requirements (separate code and deployment permissions)
- Strong standardization and consistency requirements
- GitOps-focused workflows with deployment approval processes
- Single source of truth - All deployment configs in one place
- Access control - Different teams manage code vs deployment
- Consistent patterns - Enforce standards across all services
- Independent evolution - Update deployment configs without touching code repos
- Centralized governance - Security policies and compliance in one place
- Clear audit trail - All deployment changes tracked in one repo
- More complex mental model (N+1 repos: one per service + one deployment repo)
- Coordinating changes across repos
- Requires CI/CD automation to update deployment repo from code repos
- Platform team needs to maintain deployment repo structure
Configuration in .koala.toml
Example: Centralized deployment repository.koala.toml file lives in the deployment repository at deployment/my-service/.koala.toml.
How It Works
- During creation, Skyhook uses (or creates) the centralized deployment repository
- Workflows in code repos build container images and update the deployment repo
- GitOps tool (like ArgoCD) can watch the centralized deployment repository for manifest changes (optional)
- Image updates trigger automated commits to the deployment repo from CI/CD
Choosing During Creation
When creating a service or job, you’ll see these options under Source Configuration:- Keep deployment files in service/job repo - Option A (default, simpler)
- Use existing deployment repository - Option B (select centralized repo + specify path)
- Repository - The centralized deployment repository (e.g.,
org/deployments) - Path - Where this service/job lives in that repo (e.g.,
/api-gateway,/jobs/data-sync)
Switching Between Approaches
You can migrate between approaches after creation:From Option A to Option B
- Create or identify your centralized deployment repository
- Create subdirectory for your service (e.g.,
deployments/api-gateway/) - Move
deploy/directory and.koala.tomlfrom code repo to deployment repo path - Update workflows in code repo to push manifest updates to centralized deployment repo
- Update service/job configuration in Skyhook UI (point to deployment repo + path)
- If using GitOps: Update ArgoCD Application to watch deployment repo path
From Option B to Option A
- Move
deploy/directory and.koala.tomlfrom deployment repo to code repo - Update workflows in code repo to work with local manifests
- Update service/job configuration in Skyhook UI (point to code repo)
- If using GitOps: Update ArgoCD Application to watch code repo
- Optionally remove service directory from centralized deployment repo
Migration currently requires manual steps. Automated switching between
approaches is planned for a future release. Contact Skyhook support for
guidance if needed.
GitOps Integration (Optional)
Both approaches work seamlessly with GitOps tools like ArgoCD: Option A (Code Repo):Comparison Table
| Aspect | Code Repo (Option A) | Centralized Deployment Repo (Option B) |
|---|---|---|
| Setup Complexity | Simple | Moderate |
| Mental Model | Easier (one repo per service) | More complex (N+1 repos) |
| Access Control | Per-service permissions | Centralized deployment control |
| Code + Config Changes | Single PR | Separate PRs (code vs deployment) |
| Rollback | Single revert | Coordinate reverts across repos |
| Team Structure | Unified dev team | Dev team + Platform team |
| Repos to Maintain | 1 per service | N code repos + 1 deployment repo |
| Consistency Across Services | Each service different | Enforced by platform team |
| Best For | Small teams, fast iteration | Large orgs, platform engineering |
