Overview
Applications are high-level constructs that bundle together Deployments, Services, Ingresses, and Certificates for complete service deployments. Kittyhawk provides base and specialized application classes for different frameworks.Application Classes
Base Application
The foundationalApplication class that creates a complete service deployment.
ApplicationProps
Deployment configuration including image, replicas, and container settings
Port to expose the application on
Ingress configuration for external access. If provided, also creates TLS certificates.
Creates a service account and attaches it to deployment pods. Service account name is set to the release name.
DjangoApplication
Specialized application class for Django backends with automatic environment variable configuration.DjangoApplicationProps
Deployment configuration
Value for the
DJANGO_SETTINGS_MODULE environment variablePort to expose the application on
Array of domain configurations. Optional if the application is not publicly accessible (e.g., Celery workers).Each HostRules object contains:
host: Domain namepaths: Array of URL paths to exposeisSubdomain: Whether to treat as subdomain for certificate purposes
Optional overrides for ingress configuration
Creates a service account with name set to release name
Automatic Environment Variables
DjangoApplication automatically injects:DJANGO_SETTINGS_MODULE: From propsDOMAINS: Comma-separated list of all domain hosts (if domains provided)
ReactApplication
Specialized application class for React frontends.ReactApplicationProps
Deployment configuration
Single domain configuration with host, paths, and subdomain settings
Port to expose the application on
Optional ingress overrides
Creates a service account
Automatic Environment Variables
ReactApplication automatically injects:DOMAIN: The host from domain configurationPORT: The port number (or “80”)
Usage Examples
Base Application
Django Application
React Application
Celery Worker (No Ingress)
What Gets Created
When you create an Application, Kittyhawk automatically creates:- Service: Kubernetes service for internal networking
- Deployment: Pod deployment with specified replicas
- ServiceAccount (optional): If
createServiceAccountis true - Ingress (optional): If ingress configuration provided
- Certificate (optional): TLS certificates for each unique domain
Naming Convention
All created resources are prefixed with${RELEASE_NAME}-${appname} where:
RELEASE_NAME: Environment variable (defaults to “undefined_release”)appname: The name passed to the constructor
Source References
- Base Application:
src/application/base.ts:32 - DjangoApplication:
src/application/django.ts:47 - ReactApplication:
src/application/react.ts:38