pipegen deploy
The deploy command deploys your pipeline to a target environment using containerization.
Usage
bash
pipegen deploy [flags]Examples
bash
# Deploy to local Docker
pipegen deploy --target local
# Deploy to Kubernetes
pipegen deploy --target k8s --namespace my-namespace
# Deploy with custom image tag
pipegen deploy --target k8s --image-tag v1.0.0
# Deploy with resource limits
pipegen deploy --cpu 2 --memory 4GiFlags
--target- Deployment target (local, k8s, docker-compose)--namespace- Kubernetes namespace (default: default)--image-tag- Docker image tag (default: latest)--cpu- CPU resource limit--memory- Memory resource limit--replicas- Number of replicas (default: 1)--config- Configuration file path--dry-run- Generate deployment files without deploying--help- Show help for deploy command
Deployment Targets
Local Docker
Deploys using Docker Compose for local development:
bash
pipegen deploy --target localCreates and runs:
- Kafka container
- Flink JobManager and TaskManager
- Your pipeline application
Kubernetes
Deploys to a Kubernetes cluster:
bash
pipegen deploy --target k8s --namespace productionCreates:
- Deployment manifests
- Service definitions
- ConfigMaps for configuration
- Persistent volumes if needed
Docker Compose
Generates docker-compose.yml for custom deployments:
bash
pipegen deploy --target docker-compose --dry-runPrerequisites
For Local Deployment
- Docker installed and running
- Docker Compose available
For Kubernetes Deployment
- kubectl configured and authenticated
- Sufficient cluster resources
- Required namespaces created
Generated Resources
Kubernetes Resources
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: pipegen-pipeline
spec:
replicas: 3
selector:
matchLabels:
app: pipegen-pipeline
template:
metadata:
labels:
app: pipegen-pipeline
spec:
containers:
- name: pipeline
image: pipegen:latest
resources:
limits:
cpu: 2
memory: 4GiDocker Compose
yaml
version: '3.8'
services:
pipeline:
image: pipegen:latest
environment:
- KAFKA_BROKERS=kafka:9092
depends_on:
- kafka
- flink-jobmanagerConfiguration
Deployment configuration can be customized in deploy.yaml:
yaml
deployment:
target: k8s
namespace: production
resources:
cpu: "2"
memory: "4Gi"
replicas: 3
image:
registry: myregistry.com
repository: pipegen
tag: v1.0.0Monitoring and Health Checks
Deployed pipelines include:
- Health Checks: HTTP endpoints for readiness/liveness
- Metrics: Prometheus metrics exposure
- Logging: Structured JSON logging
- Tracing: Distributed tracing support
Scaling
Manual Scaling
bash
# Scale Kubernetes deployment
kubectl scale deployment pipegen-pipeline --replicas=5
# Scale Docker Compose
docker-compose up --scale pipeline=3Auto-scaling (Kubernetes)
yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: pipegen-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: pipegen-pipeline
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70Troubleshooting
Common Issues
Insufficient Resources
Error: pods "pipegen-pipeline-xxx" is forbidden: exceeded quota
Solution: Request more resources or reduce resource limitsImage Pull Errors
Error: ErrImagePull
Solution: Check image name, tag, and registry authenticationConfiguration Errors
Error: configmap not found
Solution: Ensure configuration is properly deployedRolling Updates
Update deployed pipelines without downtime:
bash
# Update image
pipegen deploy --target k8s --image-tag v1.1.0
# Update configuration
kubectl apply -f updated-config.yaml
kubectl rollout restart deployment pipegen-pipeline