PCTL¶
Declarative pod orchestrator for multi-cloud container deployments.
One YAML. Multiple providers. Zero vendor lock-in.
What is PCTL?¶
PCTL takes a single configuration file and deploys your containerized services to AWS EKS, Google Cloud GKE, or Docker (local and remote via SSH). It handles building images, pushing to registries, creating Kubernetes manifests, managing state, and cleaning up resources.
name: my-app
services:
api:
image: ./Dockerfile
registry: ghcr.io/myorg/api
scale:
replica: [2, 10]
cpu: 256m
memory: 512Mi
ports:
- 3000
health:
interval: 30
command: "curl -f http://localhost:3000/health"
provider:
name: aws
options:
cluster: my-cluster
namespace: production
Features¶
-
Declarative Configuration
Define services, scaling, storage, health checks, and providers in a single YAML file. No imperative scripts.
-
Multi-Provider
Deploy the same config to AWS EKS, Google Cloud GKE, or Docker (local + SSH). Mix providers in one stack.
-
Dynamic Resolvers
${env:KEY}${ssm:/path}${cfn:export}${self:custom.value}- Resolve values from environment, AWS SSM, CloudFormation, or the config itself. -
Plugin Pipeline
Extensible plugin system. Resolve, validate, transform, deploy - each step is a plugin you can replace or extend.
-
Diff-Based Deploys
Fingerprints each service. Only rebuilds and redeploys what actually changed. Unchanged services are skipped.
-
Clean Destroy
State file tracks every resource created. Destroy removes deployments, services, volumes, images, namespaces, and secrets. Waits for confirmation.
-
Registry Agnostic
Push to ECR, Artifact Registry, GHCR, Docker Hub, or any OCI registry. Private registries with imagePullSecrets.
-
Auto-Scaling
replica: [0, 100]creates a HorizontalPodAutoscaler. Fixed replicas for workers. Scale-to-zero for idle services.
Quick Start¶
pctl deploy -c pctl.yaml # Deploy all services
pctl deploy -c pctl.yaml --name staging # Override stack name
pctl destroy -c pctl.yaml # Destroy all resources
Architecture¶
graph LR
A[pctl.yaml] --> B[Resolvers]
B --> C[Validate]
C --> D[Plugins]
D --> E{Provider}
E --> F[AWS EKS]
E --> G[GCP GKE]
E --> H[Docker]
F --> I[pctl.stack.json]
G --> I
H --> I Providers at a Glance¶
| Feature | AWS (EKS) | GCP (GKE) | Docker |
|---|---|---|---|
| Kubernetes | |||
| Auto-scaling (HPA) | |||
| RBAC | |||
| Persistent Storage | EBS / EFS | PD / Filestore | Volumes |
| Registry Auth | ECR auto | AR auto | Manual |
| Remote Deploy | - | - | SSH |
| Health Checks | Liveness Probe | Liveness Probe | Docker Health |