Namespace Configuration
Defines application deployment units within the platform. YAML files specify modules and lifecycle hooks managing application stacks, services, and deployment orchestration.
Schema
apiVersion: strata.huybrechts.xyz/v1
kind: namespace
meta:
name: <namespace_name> # Required: ^[a-z][a-z0-9_]*$
annotations:
description: <description>
labels:
version: <version>
spec:
lifecycle: # Optional (requires lifecycle OR modules)
bootstrap: {} # Initial setup before provisioning
provision: {} # During infrastructure creation
configure: {} # After infrastructure provisioned
health: {} # After configuration complete
protect: {} # After successful deployment
destroy: {} # During infrastructure destruction
modules: [] # Optional: deployable units
- name: <module_name>
file: <module_path>
description: <description>
Note: Namespace must have lifecycle OR modules (or both). Empty namespaces not allowed.
Lifecycle Phases
Phase |
Description |
When Executed |
|---|---|---|
|
Initial setup |
Before provisioning |
|
Infrastructure hooks |
During creation |
|
Configuration/setup |
After provisioning |
|
Health checks |
After configuration |
|
Security/backup |
After deployment |
|
Cleanup/teardown |
During destruction |
Lifecycle structure:
lifecycle:
<phase_name>:
scripts:
- file: <script_path>
description: <description>
Execution order: bootstrap → provision → configure → health → protect (during deployment); destroy (during teardown)
Examples
Infrastructure:
meta:
name: infra
labels:
version: 1.0.0
spec:
modules:
- name: traefik
file: config/modules/traefik.yaml
description: Reverse proxy and load balancer
- name: portainer
file: config/modules/portainer.yaml
Application with Lifecycle:
meta:
name: webapp
labels:
version: 2.0.0
spec:
lifecycle:
bootstrap:
scripts:
- file: scripts/prepare-storage.sh
configure:
scripts:
- file: scripts/setup-database.sh
- file: scripts/configure-app.sh
health:
scripts:
- file: scripts/health-check.sh
modules:
- name: database
file: config/modules/postgres.yaml
- name: api
file: config/modules/api-service.yaml
- name: frontend
file: config/modules/frontend.yaml
Monitoring:
meta:
name: monitoring
spec:
lifecycle:
configure:
scripts:
- file: scripts/setup-grafana-dashboards.sh
- file: scripts/configure-alerts.sh
modules:
- name: prometheus
file: config/modules/prometheus.yaml
- name: grafana
file: config/modules/grafana.yaml
Lifecycle-Only:
meta:
name: security
spec:
lifecycle:
bootstrap:
scripts:
- file: scripts/security/scan-images.sh
protect:
scripts:
- file: scripts/security/harden-hosts.sh
Script Execution
Scripts execute in order defined. Best practices:
Number scripts to indicate order (
01-database.sh,02-migrations.sh)Make idempotent (safe to run multiple times)
Include error handling and validation
Log execution progress
Workspace Integration
# workspace.yaml
spec:
namespaces:
- name: infrastructure # Deploy first
file: config/namespaces/platform-infra.yaml
- name: applications # Deploy second
file: config/namespaces/platform-apps.yaml
- name: monitoring # Deploy last
file: config/namespaces/platform-monitoring.yaml
Platform processes namespaces in order defined. All paths relative to project root.
Module Organization
Service Modules: Individual services (api_gateway, auth_service)
Component Modules: Related components (backend, frontend, cache)
Stack Modules: Complete stacks (wordpress)
Common Patterns
Three-Tier: database → backend → frontend
Microservices: user_service, order_service, payment_service, notification_service
Infrastructure: ingress, registry, secrets
Namespace Types
Type |
Purpose |
Examples |
|---|---|---|
Infrastructure |
Core platform services |
Ingress, DNS, certificates, registry |
Application |
Business applications |
APIs, web apps, services |
Data |
Storage and processing |
Databases, caches, queues |
Monitoring |
Observability |
Metrics, logs, traces, alerts |
Security |
Security services |
Secrets, scanning, compliance |
Best Practices
Naming: Descriptive (
infra,webapp,monitoring,security)Logical grouping: Related modules in same namespace
Lifecycle scripts: Single responsibility, focused
Module independence: Minimize cross-module dependencies
Version control: Track namespace versions
Script idempotency: Safe to run multiple times
Execution order: Numbered prefixes for scripts
Module uniqueness: Unique names within namespace
Validation
Platform validates:
Valid names (lowercase, alphanumeric, underscores)
Required fields (name, lifecycle OR modules)
Unique module names within namespace
Script files exist and executable
Module config files exist
No circular dependencies
Troubleshooting
Validation failed: Ensure lifecycle or modules defined, check duplicate module names, verify file paths valid
Module not found: Verify file path, check file exists, ensure relative to project root
Script execution failed: Check executable permissions (chmod +x), verify path, review logs, ensure dependencies installed
Module conflicts: Check duplicate names across namespaces, verify no conflicting resources
Lifecycle phase skipped: Verify phase defined, check scripts configured, review platform logs