Kubernetes Deployment

Scale Veriafy with Kubernetes for enterprise workloads

Helm Chart

# Add Veriafy Helm repository
helm repo add veriafy https://charts.veriafy.com
helm repo update

# Install Veriafy
helm install veriafy veriafy/veriafy \
  --namespace veriafy \
  --create-namespace \
  --set apiKey=${VERIAFY_API_KEY}

Custom Values

# values.yaml
replicaCount: 3

image:
  repository: veriafy/veriafy
  tag: latest-gpu
  pullPolicy: IfNotPresent

resources:
  limits:
    memory: 8Gi
    nvidia.com/gpu: 1
  requests:
    memory: 4Gi
    cpu: 2

autoscaling:
  enabled: true
  minReplicas: 2
  maxReplicas: 10
  targetCPUUtilizationPercentage: 70

env:
  - name: VERIAFY_WORKERS
    value: "8"
  - name: VERIAFY_GPU
    value: "1"

persistence:
  enabled: true
  size: 50Gi
  storageClass: fast-ssd

ingress:
  enabled: true
  className: nginx
  hosts:
    - host: veriafy.example.com
      paths:
        - path: /
          pathType: Prefix
  tls:
    - secretName: veriafy-tls
      hosts:
        - veriafy.example.com
helm install veriafy veriafy/veriafy -f values.yaml

Manual Deployment

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: veriafy
  namespace: veriafy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: veriafy
  template:
    metadata:
      labels:
        app: veriafy
    spec:
      containers:
        - name: veriafy
          image: veriafy/veriafy:latest-gpu
          ports:
            - containerPort: 8080
          env:
            - name: VERIAFY_API_KEY
              valueFrom:
                secretKeyRef:
                  name: veriafy-secrets
                  key: api-key
            - name: VERIAFY_GPU
              value: "1"
          resources:
            limits:
              memory: 8Gi
              nvidia.com/gpu: 1
            requests:
              memory: 4Gi
              cpu: 2
          volumeMounts:
            - name: models
              mountPath: /app/models
          livenessProbe:
            httpGet:
              path: /health
              port: 8080
            initialDelaySeconds: 30
            periodSeconds: 10
          readinessProbe:
            httpGet:
              path: /health
              port: 8080
            initialDelaySeconds: 5
            periodSeconds: 5
      volumes:
        - name: models
          persistentVolumeClaim:
            claimName: veriafy-models-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: veriafy
  namespace: veriafy
spec:
  selector:
    app: veriafy
  ports:
    - port: 80
      targetPort: 8080
  type: ClusterIP

GPU Node Pool

For GPU workloads, create a dedicated node pool:

# GKE
gcloud container node-pools create gpu-pool \
  --cluster=my-cluster \
  --accelerator=type=nvidia-tesla-t4,count=1 \
  --machine-type=n1-standard-8 \
  --num-nodes=3

# EKS
eksctl create nodegroup \
  --cluster=my-cluster \
  --name=gpu-workers \
  --node-type=p3.2xlarge \
  --nodes=3 \
  --nodes-min=1 \
  --nodes-max=10

# AKS
az aks nodepool add \
  --resource-group myResourceGroup \
  --cluster-name myCluster \
  --name gpupool \
  --node-count 3 \
  --node-vm-size Standard_NC6

Horizontal Pod Autoscaler

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: veriafy-hpa
  namespace: veriafy
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: veriafy
  minReplicas: 2
  maxReplicas: 20
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 70
    - type: Resource
      resource:
        name: memory
        target:
          type: Utilization
          averageUtilization: 80

Next Steps

Veriafy - Universal File Classification Platform