Kubernetes em Produção

Kubernetes é essencial para orquestração de containers em produção. Vamos discutir as melhores práticas.

Deployment Básico

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
    name: myapp
spec:
    replicas: 3
    selector:
        matchLabels:
            app: myapp
    template:
        metadata:
            labels:
                app: myapp
        spec:
            containers:
            - name: app
                image: myapp:latest
                ports:
                - containerPort: 3000
                resources:
                    requests:
                        memory: "256Mi"
                        cpu: "250m"
                    limits:
                        memory: "512Mi"
                        cpu: "500m"

Service

# service.yaml
apiVersion: v1
kind: Service
metadata:
    name: myapp-service
spec:
    selector:
        app: myapp
    ports:
    - protocol: TCP
        port: 80
        targetPort: 3000
    type: LoadBalancer

HPA (Horizontal Pod Autoscaler)

# hpa.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
    name: myapp-hpa
spec:
    scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: myapp
    minReplicas: 2
    maxReplicas: 10
    metrics:
    - type: Resource
        resource:
            name: cpu
            target:
                type: Utilization
                averageUtilization: 70