Skip to content

Kubernetes Deployment

Deploy USL applications to Kubernetes.

Generated Manifests

USL generates Kubernetes manifests:

k8s/
├── deployment.yaml
├── service.yaml
├── ingress.yaml
└── configmap.yaml

Deployment

deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-app:latest
        ports:
        - containerPort: 3000
        env:
        - name: DATABASE_URL
          valueFrom:
            secretKeyRef:
              name: my-app-secrets
              key: database-url

Service

service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: my-app
spec:
  selector:
    app: my-app
  ports:
  - port: 80
    targetPort: 3000
  type: LoadBalancer

Deploy

kubectl apply -f k8s/

Verify

kubectl get pods
kubectl get services
kubectl logs -f deployment/my-app

Scaling

kubectl scale deployment my-app --replicas=5

Rolling Updates

kubectl set image deployment/my-app my-app=my-app:v2
kubectl rollout status deployment/my-app

Health Checks

livenessProbe:
  httpGet:
    path: /health
    port: 3000
  initialDelaySeconds: 30
  periodSeconds: 10

readinessProbe:
  httpGet:
    path: /ready
    port: 3000
  initialDelaySeconds: 5
  periodSeconds: 5

Back to Deployment Overview